libnx/wait_8h.html
2025-05-08 06:59:12 +00:00

455 lines
27 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libnx: include/switch/kernel/wait.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">libnx<span id="projectnumber">&#160;v4.9.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_42bea3d40f1f1694e41a8f3166c98108.html">switch</a></li><li class="navelem"><a class="el" href="dir_36b4ff30955378a33ed199d75bfba1a9.html">kernel</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">wait.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>User mode synchronization primitive waiting operations.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="mutex_8h_source.html">mutex.h</a>&quot;</code><br />
</div>
<p><a href="wait_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structWaitableNode.html">WaitableNode</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structWaitable.html">Waitable</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structWaiter.html">Waiter</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structWaiter.html" title="Waiter structure, representing any generic waitable synchronization object; both kernel-mode and user...">Waiter</a> structure, representing any generic waitable synchronization object; both kernel-mode and user-mode. <a href="structWaiter.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a184cb0e9eb868ba17f14a6a1c348bef4" id="r_a184cb0e9eb868ba17f14a6a1c348bef4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="wait_8h.html#a184cb0e9eb868ba17f14a6a1c348bef4">waitMulti</a>(idx_out, timeout, ...)</td></tr>
<tr class="memdesc:a184cb0e9eb868ba17f14a6a1c348bef4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper macro for <a class="el" href="wait_8h.html#a6da5414d448ff377baea7bfc1bad075d">waitObjects</a> that accepts <a class="el" href="structWaiter.html">Waiter</a> structures as variadic arguments instead of as an array. <br /></td></tr>
<tr class="separator:a184cb0e9eb868ba17f14a6a1c348bef4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22d9844366cf5085747b3d98d8818eb7" id="r_a22d9844366cf5085747b3d98d8818eb7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="wait_8h.html#a22d9844366cf5085747b3d98d8818eb7">waitMultiHandle</a>(idx_out, timeout, ...)</td></tr>
<tr class="memdesc:a22d9844366cf5085747b3d98d8818eb7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper macro for <a class="el" href="wait_8h.html#a6c186f6fff1bb0f1183b19cdd4fc68b0">waitHandles</a> that accepts handles as variadic arguments instead of as an array. <br /></td></tr>
<tr class="separator:a22d9844366cf5085747b3d98d8818eb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a67a96c3076527257ae8e42cc42b184fd" id="r_a67a96c3076527257ae8e42cc42b184fd"><td class="memItemLeft" align="right" valign="top"><a id="a67a96c3076527257ae8e42cc42b184fd" name="a67a96c3076527257ae8e42cc42b184fd"></a>
typedef struct WaitableMethods&#160;</td><td class="memItemRight" valign="bottom"><b>WaitableMethods</b></td></tr>
<tr class="separator:a67a96c3076527257ae8e42cc42b184fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:a61f9aad41b2a8803f4a27777e66c9df0" id="r_a61f9aad41b2a8803f4a27777e66c9df0"><td class="memItemLeft" align="right" valign="top"><a id="a61f9aad41b2a8803f4a27777e66c9df0" name="a61f9aad41b2a8803f4a27777e66c9df0"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>WaiterType</b> { <br />
&#160;&#160;<b>WaiterType_Handle</b>
, <br />
&#160;&#160;<b>WaiterType_HandleWithClear</b>
, <br />
&#160;&#160;<b>WaiterType_Waitable</b>
<br />
}</td></tr>
<tr class="separator:a61f9aad41b2a8803f4a27777e66c9df0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:aab566c1bfeaeea7a02d4fc20d34a0025" id="r_aab566c1bfeaeea7a02d4fc20d34a0025"><td class="memItemLeft" align="right" valign="top"><a id="aab566c1bfeaeea7a02d4fc20d34a0025" name="aab566c1bfeaeea7a02d4fc20d34a0025"></a>
static <a class="el" href="structWaiter.html">Waiter</a>&#160;</td><td class="memItemRight" valign="bottom"><b>waiterForHandle</b> (<a class="el" href="types_8h.html#ab6d744c6b5de129f12937e482dc674fb">Handle</a> h)</td></tr>
<tr class="memdesc:aab566c1bfeaeea7a02d4fc20d34a0025"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a <a class="el" href="structWaiter.html">Waiter</a> for a kernel-mode <a class="el" href="types_8h.html#ab6d744c6b5de129f12937e482dc674fb">Handle</a>. <br /></td></tr>
<tr class="separator:aab566c1bfeaeea7a02d4fc20d34a0025"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6da5414d448ff377baea7bfc1bad075d" id="r_a6da5414d448ff377baea7bfc1bad075d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="types_8h.html#ad1be2721625a17f1be47fac918032afe">Result</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="wait_8h.html#a6da5414d448ff377baea7bfc1bad075d">waitObjects</a> (<a class="el" href="types_8h.html#ae9b1af5c037e57a98884758875d3a7c4">s32</a> *idx_out, const <a class="el" href="structWaiter.html">Waiter</a> *objects, <a class="el" href="types_8h.html#ae9b1af5c037e57a98884758875d3a7c4">s32</a> num_objects, <a class="el" href="types_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a> timeout)</td></tr>
<tr class="memdesc:a6da5414d448ff377baea7bfc1bad075d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Waits for an arbitrary number of generic waitable synchronization objects, optionally with a timeout. <br /></td></tr>
<tr class="separator:a6da5414d448ff377baea7bfc1bad075d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c186f6fff1bb0f1183b19cdd4fc68b0" id="r_a6c186f6fff1bb0f1183b19cdd4fc68b0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="types_8h.html#ad1be2721625a17f1be47fac918032afe">Result</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="wait_8h.html#a6c186f6fff1bb0f1183b19cdd4fc68b0">waitHandles</a> (<a class="el" href="types_8h.html#ae9b1af5c037e57a98884758875d3a7c4">s32</a> *idx_out, const <a class="el" href="types_8h.html#ab6d744c6b5de129f12937e482dc674fb">Handle</a> *handles, <a class="el" href="types_8h.html#ae9b1af5c037e57a98884758875d3a7c4">s32</a> num_handles, <a class="el" href="types_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a> timeout)</td></tr>
<tr class="memdesc:a6c186f6fff1bb0f1183b19cdd4fc68b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Waits for an arbitrary number of kernel synchronization objects, optionally with a timeout. <br /></td></tr>
<tr class="separator:a6c186f6fff1bb0f1183b19cdd4fc68b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b0e92da5e3dfcb52c40371c90727d1d" id="r_a8b0e92da5e3dfcb52c40371c90727d1d"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="types_8h.html#ad1be2721625a17f1be47fac918032afe">Result</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="wait_8h.html#a8b0e92da5e3dfcb52c40371c90727d1d">waitSingle</a> (<a class="el" href="structWaiter.html">Waiter</a> w, <a class="el" href="types_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a> timeout)</td></tr>
<tr class="memdesc:a8b0e92da5e3dfcb52c40371c90727d1d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Waits on a single generic waitable synchronization object, optionally with a timeout. <br /></td></tr>
<tr class="separator:a8b0e92da5e3dfcb52c40371c90727d1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae76c9fd3eca90f86986663d72204bb9" id="r_aae76c9fd3eca90f86986663d72204bb9"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="types_8h.html#ad1be2721625a17f1be47fac918032afe">Result</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="wait_8h.html#aae76c9fd3eca90f86986663d72204bb9">waitSingleHandle</a> (<a class="el" href="types_8h.html#ab6d744c6b5de129f12937e482dc674fb">Handle</a> h, <a class="el" href="types_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a> timeout)</td></tr>
<tr class="memdesc:aae76c9fd3eca90f86986663d72204bb9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Waits for a single kernel synchronization object, optionally with a timeout. <br /></td></tr>
<tr class="separator:aae76c9fd3eca90f86986663d72204bb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>User mode synchronization primitive waiting operations. </p>
<dl class="section author"><dt>Author</dt><dd>plutoo </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>libnx Authors </dd></dl>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a184cb0e9eb868ba17f14a6a1c348bef4" name="a184cb0e9eb868ba17f14a6a1c348bef4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a184cb0e9eb868ba17f14a6a1c348bef4">&#9670;&#160;</a></span>waitMulti</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define waitMulti</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">idx_out, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">timeout, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>...</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"> ({ \</div>
<div class="line"> <a class="code hl_struct" href="structWaiter.html">Waiter</a> __objects[] = { __VA_ARGS__ }; \</div>
<div class="line"> waitObjects((idx_out), __objects, <span class="keyword">sizeof</span>(__objects) / <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structWaiter.html">Waiter</a>), (timeout)); \</div>
<div class="line">})</div>
<div class="ttc" id="astructWaiter_html"><div class="ttname"><a href="structWaiter.html">Waiter</a></div><div class="ttdoc">Waiter structure, representing any generic waitable synchronization object; both kernel-mode and user...</div><div class="ttdef"><b>Definition</b> wait.h:36</div></div>
</div><!-- fragment -->
<p>Helper macro for <a class="el" href="wait_8h.html#a6da5414d448ff377baea7bfc1bad075d">waitObjects</a> that accepts <a class="el" href="structWaiter.html">Waiter</a> structures as variadic arguments instead of as an array. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">idx_out</td><td>The index of the signalled waiter. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>Timeout (in nanoseconds). </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The number of objects must not be greater than <a class="el" href="svc_8h.html#adb3582f9aaf78eddd43389c3b50e015f">MAX_WAIT_OBJECTS</a>. This is a Horizon kernel limitation. </dd></dl>
</div>
</div>
<a id="a22d9844366cf5085747b3d98d8818eb7" name="a22d9844366cf5085747b3d98d8818eb7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a22d9844366cf5085747b3d98d8818eb7">&#9670;&#160;</a></span>waitMultiHandle</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define waitMultiHandle</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">idx_out, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">timeout, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>...</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"> ({ \</div>
<div class="line"> <a class="code hl_typedef" href="types_8h.html#ab6d744c6b5de129f12937e482dc674fb">Handle</a> __handles[] = { __VA_ARGS__ }; \</div>
<div class="line"> waitHandles((idx_out), __handles, <span class="keyword">sizeof</span>(__handles) / <span class="keyword">sizeof</span>(<a class="code hl_typedef" href="types_8h.html#ab6d744c6b5de129f12937e482dc674fb">Handle</a>), (timeout)); \</div>
<div class="line">})</div>
<div class="ttc" id="atypes_8h_html_ab6d744c6b5de129f12937e482dc674fb"><div class="ttname"><a href="types_8h.html#ab6d744c6b5de129f12937e482dc674fb">Handle</a></div><div class="ttdeci">u32 Handle</div><div class="ttdoc">Kernel object handle.</div><div class="ttdef"><b>Definition</b> types.h:43</div></div>
</div><!-- fragment -->
<p>Helper macro for <a class="el" href="wait_8h.html#a6c186f6fff1bb0f1183b19cdd4fc68b0">waitHandles</a> that accepts handles as variadic arguments instead of as an array. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">idx_out</td><td>The index of the signalled handle. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>Timeout (in nanoseconds). </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The number of objects must not be greater than <a class="el" href="svc_8h.html#adb3582f9aaf78eddd43389c3b50e015f">MAX_WAIT_OBJECTS</a>. This is a Horizon kernel limitation. </dd></dl>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="a6c186f6fff1bb0f1183b19cdd4fc68b0" name="a6c186f6fff1bb0f1183b19cdd4fc68b0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6c186f6fff1bb0f1183b19cdd4fc68b0">&#9670;&#160;</a></span>waitHandles()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="types_8h.html#ad1be2721625a17f1be47fac918032afe">Result</a> waitHandles </td>
<td>(</td>
<td class="paramtype"><a class="el" href="types_8h.html#ae9b1af5c037e57a98884758875d3a7c4">s32</a> *&#160;</td>
<td class="paramname"><em>idx_out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="types_8h.html#ab6d744c6b5de129f12937e482dc674fb">Handle</a> *&#160;</td>
<td class="paramname"><em>handles</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="types_8h.html#ae9b1af5c037e57a98884758875d3a7c4">s32</a>&#160;</td>
<td class="paramname"><em>num_handles</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="types_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a>&#160;</td>
<td class="paramname"><em>timeout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Waits for an arbitrary number of kernel synchronization objects, optionally with a timeout. </p>
<p>This function replaces <a class="el" href="svc_8h.html#a24db9958be55b2c39da7240eb18e1e32">svcWaitSynchronization</a>. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">idx_out</td><td>Variable that will received the index of the signalled object. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">handles</td><td>Array containing handles. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">num_handles</td><td>Number of handles in the array. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>Timeout (in nanoseconds). </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Result code. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>The number of objects must not be greater than <a class="el" href="svc_8h.html#adb3582f9aaf78eddd43389c3b50e015f">MAX_WAIT_OBJECTS</a>. This is a Horizon kernel limitation. </dd></dl>
</div>
</div>
<a id="a6da5414d448ff377baea7bfc1bad075d" name="a6da5414d448ff377baea7bfc1bad075d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6da5414d448ff377baea7bfc1bad075d">&#9670;&#160;</a></span>waitObjects()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="types_8h.html#ad1be2721625a17f1be47fac918032afe">Result</a> waitObjects </td>
<td>(</td>
<td class="paramtype"><a class="el" href="types_8h.html#ae9b1af5c037e57a98884758875d3a7c4">s32</a> *&#160;</td>
<td class="paramname"><em>idx_out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structWaiter.html">Waiter</a> *&#160;</td>
<td class="paramname"><em>objects</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="types_8h.html#ae9b1af5c037e57a98884758875d3a7c4">s32</a>&#160;</td>
<td class="paramname"><em>num_objects</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="types_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a>&#160;</td>
<td class="paramname"><em>timeout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Waits for an arbitrary number of generic waitable synchronization objects, optionally with a timeout. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">idx_out</td><td>Variable that will received the index of the signalled object. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">objects</td><td>Array containing <a class="el" href="structWaiter.html">Waiter</a> structures. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">num_objects</td><td>Number of objects in the array. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>Timeout (in nanoseconds). </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Result code. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>The number of objects must not be greater than <a class="el" href="svc_8h.html#adb3582f9aaf78eddd43389c3b50e015f">MAX_WAIT_OBJECTS</a>. This is a Horizon kernel limitation. </dd></dl>
</div>
</div>
<a id="a8b0e92da5e3dfcb52c40371c90727d1d" name="a8b0e92da5e3dfcb52c40371c90727d1d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8b0e92da5e3dfcb52c40371c90727d1d">&#9670;&#160;</a></span>waitSingle()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="types_8h.html#ad1be2721625a17f1be47fac918032afe">Result</a> waitSingle </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structWaiter.html">Waiter</a>&#160;</td>
<td class="paramname"><em>w</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="types_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a>&#160;</td>
<td class="paramname"><em>timeout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Waits on a single generic waitable synchronization object, optionally with a timeout. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">w</td><td><a class="el" href="structWaiter.html">Waiter</a> structure. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>Timeout (in nanoseconds). </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aae76c9fd3eca90f86986663d72204bb9" name="aae76c9fd3eca90f86986663d72204bb9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aae76c9fd3eca90f86986663d72204bb9">&#9670;&#160;</a></span>waitSingleHandle()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="types_8h.html#ad1be2721625a17f1be47fac918032afe">Result</a> waitSingleHandle </td>
<td>(</td>
<td class="paramtype"><a class="el" href="types_8h.html#ab6d744c6b5de129f12937e482dc674fb">Handle</a>&#160;</td>
<td class="paramname"><em>h</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="types_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a>&#160;</td>
<td class="paramname"><em>timeout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Waits for a single kernel synchronization object, optionally with a timeout. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">h</td><td><a class="el" href="types_8h.html#ab6d744c6b5de129f12937e482dc674fb">Handle</a> of the object. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>Timeout (in nanoseconds). </td></tr>
</table>
</dd>
</dl>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
</small></address>
</body>
</html>