1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xml:lang="en-US" lang="en-US" xmlns="http://www.w3.org/1999/xhtml">
3  <head>
4    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5    <meta http-equiv="Content-Style-Type" content="text/css" />
6    <link rel="stylesheet" href="../../../css/manpage.css" type="text/css" />
7    <title>FindByStackAddress</title>
8  </head>
9  <body>
10    <h1><CODE><a href="../../../nn/Overview.html">nn</a>::<a href="../../../nn/os/Overview.html">os</a>::<a href="../../../nn/os/ManagedThread/Overview.html">ManagedThread</a>::FindByStackAddress</CODE> Member Function</h1>
11    <h2>Syntax</h2>
12    <div class="section">
13      <pre class="definition">#include &lt;nn/os.h&gt;
14
15static <a href="../../../nn/os/ManagedThread/Overview.html">ManagedThread</a> * FindByStackAddress(
16     <a href="../../../nn_types/uptr.html">uptr</a> address
17);
18</pre>
19    </div>
20    <h2>Parameters</h2>
21    <div class="section">
22      <table class="arguments">
23        <thead>
24          <tr>
25            <td width="15" />
26            <th>Name</th>
27            <td>Description</td>
28          </tr>
29        </thead>
30        <tr>
31          <td>in</td>
32          <th>address</th>
33          <td>The address to use as the thread search key.</td>
34        </tr> </table>
35    </div>
36    <h2>Return Values</h2>
37    <div class="section">Returns the pointer to the <CODE><a href="../../../nn/os/ManagedThread/Overview.html">ManagedThread</a></CODE> corresponding to the thread that is using <SPAN class="argument">address</SPAN> as the stack. Returns <code>NULL</code> if not found. </div>
38    <h2>Description</h2>
39    <div class="section">
40      <p>Gets the pointer to the <CODE><a href="../../../nn/os/ManagedThread/Overview.html">ManagedThread</a></CODE> from the stack address.</p><p>Searches among <CODE><a href="../../../nn/os/ManagedThread/Overview.html">ManagedThread</a></CODE> instances that have been <a href="../../../nn/os/ManagedThread/Initialize.html">initialized</a> but not <a href="../../../nn/os/ManagedThread/Finalize.html">finalized</a> to find the one for which <SPAN class="argument">address</SPAN> is being used as the stack.</p><p>It is determined that <SPAN class="argument">address</SPAN> is being used for the stack if <SPAN class="argument">address</SPAN> is in the range of <CODE><a href="../../../nn/os/ManagedThread/GetStackBufferBegin.html">GetStackBufferBegin</a></CODE> to <CODE><a href="../../../nn/os/ManagedThread/GetStackBufferEnd.html">GetStackBufferEnd</a></CODE>. Both ends are inclusive in the range. <B>Note the following</B>: If two thread stacks are using contiguous buffers, then the <CODE>GetStackBufferBegin</CODE> value of one thread is the same as the <CODE>GetStackBufferEnd</CODE> value of the other thread. So if you specify the same address for <SPAN class="argument">address</SPAN>, then the function will return the pointer corresponding to either of the threads.</p><p>This function is implemented using <CODE><a href="../../../nn/os/ManagedThread/Enumerate.html">Enumerate</a></CODE>, so it complies with <CODE><a href="../../../nn/os/ManagedThread/Enumerate.html">Enumerate</a></CODE> in terms of thread safety and internal function blocks. For details, see the <CODE><a href="../../../nn/os/ManagedThread/Enumerate.html">Enumerate</a></CODE> function.</p><!-- write here --></div>
41    <h2>Revision History</h2>
42    <div class="section">
43      <dl class="history">
44        <dt>2012/04/13</dt>
45        <dd>Initial version.<br />
46        </dd>
47      </dl>
48    </div>
49  <hr><p>CONFIDENTIAL</p></body>
50</html>