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 <nn/os.h> 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>