embeddedsw/XilinxProcessorIPLib/drivers/mutex/doc/html/api/xmutex_8h.html

485 lines
24 KiB
HTML
Raw Normal View History

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>
Xilinx Driver mutex v4_0: xmutex.h File Reference
</title>
<link href="doxygen_kalyanidocs/doc/css/driver_api_doxygen.css" rel="stylesheet" type="text/css">
</head>
<h3 class="PageHeader">Xilinx Processor IP Library</h3>
<hl>Software Drivers</hl>
<hr class="whs1">
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>xmutex.h File Reference</h1><code>#include &quot;xstatus.h&quot;</code><br/>
<code>#include &quot;<a class="el" href="xmutex__hw_8h.html">xmutex_hw.h</a>&quot;</code><br/>
<code>#include &quot;xil_types.h&quot;</code><br/>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_x_mutex___config.html">XMutex_Config</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_x_mutex.html">XMutex</a></td></tr>
<tr><td colspan="2"><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xmutex_8h.html#a12f26d74626ae4179bad889dc5a3e6c9">XMUTEX_H</a></td></tr>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xmutex_8h.html#a250cfb7229128feb084799a476d423d6">XMutex_CfgInitialize</a> (<a class="el" href="struct_x_mutex.html">XMutex</a> *InstancePtr, <a class="el" href="struct_x_mutex___config.html">XMutex_Config</a> *ConfigPtr, u32 EffectiveAddress)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xmutex_8h.html#a1255fbeea64f519d8def63e542ce8703">XMutex_Lock</a> (<a class="el" href="struct_x_mutex.html">XMutex</a> *InstancePtr, u8 MutexNumber)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xmutex_8h.html#af1857cffa94ba8b3bdf491f1a0096340">XMutex_Trylock</a> (<a class="el" href="struct_x_mutex.html">XMutex</a> *InstancePtr, u8 MutexNumber)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xmutex_8h.html#a82790dd21650e2b03e2c0a0f69a605d3">XMutex_Unlock</a> (<a class="el" href="struct_x_mutex.html">XMutex</a> *InstancePtr, u8 MutexNumber)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xmutex_8h.html#a37302270d3c1c86dc0bffdfc7043b902">XMutex_IsLocked</a> (<a class="el" href="struct_x_mutex.html">XMutex</a> *InstancePtr, u8 MutexNumber)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xmutex_8h.html#a0fcbb23b06dc9fb716e3812696321f66">XMutex_GetStatus</a> (<a class="el" href="struct_x_mutex.html">XMutex</a> *InstancePtr, u8 MutexNumber, u32 *Locked, u32 *Owner)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xmutex_8h.html#ad7d5c5cd3b24ffee6dcc093b98c8546a">XMutex_GetUser</a> (<a class="el" href="struct_x_mutex.html">XMutex</a> *InstancePtr, u8 MutexNumber, u32 *User)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xmutex_8h.html#a941e13d2534884adf4926f05bae3966e">XMutex_SetUser</a> (<a class="el" href="struct_x_mutex.html">XMutex</a> *InstancePtr, u8 MutexNumber, u32 User)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_x_mutex___config.html">XMutex_Config</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xmutex_8h.html#a9b36fec5e8de70e5338132b29709f76a">XMutex_LookupConfig</a> (u16 DeviceId)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xmutex_8h.html#a1599a86dd180f3bd789a2fc472e9aa29">XMutex_SelfTest</a> (<a class="el" href="struct_x_mutex.html">XMutex</a> *InstancePtr)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<hr/><h2>Define Documentation</h2>
<a class="anchor" id="a12f26d74626ae4179bad889dc5a3e6c9"></a><!-- doxytag: member="xmutex.h::XMUTEX_H" ref="a12f26d74626ae4179bad889dc5a3e6c9" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define XMUTEX_H</td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="a250cfb7229128feb084799a476d423d6"></a><!-- doxytag: member="xmutex.h::XMutex_CfgInitialize" ref="a250cfb7229128feb084799a476d423d6" args="(XMutex *InstancePtr, XMutex_Config *ConfigPtr, u32 EffectiveAddress)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int XMutex_CfgInitialize </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_x_mutex.html">XMutex</a> *&nbsp;</td>
<td class="paramname"> <em>InstancePtr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_x_mutex___config.html">XMutex_Config</a> *&nbsp;</td>
<td class="paramname"> <em>ConfigPtr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u32&nbsp;</td>
<td class="paramname"> <em>EffectiveAddress</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Initializes a specific Mutex instance/driver.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstancePtr</em>&nbsp;</td><td>is a pointer to the <a class="el" href="struct_x_mutex.html">XMutex</a> instance to be worked on. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>ConfigPtr</em>&nbsp;</td><td>is the device configuration structure containing required HW build data. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>EffectiveAddress</em>&nbsp;</td><td>is the Physical address of the hardware in a Virtual Memory operating system environment. It is the Base Address in a stand alone environment.</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><ul>
<li>XST_SUCCESS if initialization was successful</li>
</ul>
</dd></dl>
<dl class="note"><dt><b>Note:</b></dt><dd>None. </dd></dl>
</div>
</div>
<a class="anchor" id="a0fcbb23b06dc9fb716e3812696321f66"></a><!-- doxytag: member="xmutex.h::XMutex_GetStatus" ref="a0fcbb23b06dc9fb716e3812696321f66" args="(XMutex *InstancePtr, u8 MutexNumber, u32 *Locked, u32 *Owner)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void XMutex_GetStatus </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_x_mutex.html">XMutex</a> *&nbsp;</td>
<td class="paramname"> <em>InstancePtr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&nbsp;</td>
<td class="paramname"> <em>MutexNumber</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u32 *&nbsp;</td>
<td class="paramname"> <em>Locked</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u32 *&nbsp;</td>
<td class="paramname"> <em>Owner</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets the current status of a Mutex lock within a Mutex device.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstancePtr</em>&nbsp;</td><td>is a pointer to the <a class="el" href="struct_x_mutex.html">XMutex</a> instance to be worked on. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>MutexNumber</em>&nbsp;</td><td>is the specific Mutex lock within the device to operate on. Each device may contain multiple Mutex locks. The Mutex number is a zero based number with a range of 0 - (InstancePtr-&gt;Config.NumMutex - 1). </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Locked</em>&nbsp;</td><td>is a pointer where the current lock status is stored. Sets memory pointed to by 'Locked' to 1 if the Mutex is locked and 0 if it is unlocked. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Owner</em>&nbsp;</td><td>is a pointer where the current owner status is stored. . If the Mutex is locked, the memory pointed to by 'Owner' is updated to reflect the CPU ID that has currently locked this Mutex.</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>None.</dd></dl>
<dl class="note"><dt><b>Note:</b></dt><dd>None. </dd></dl>
</div>
</div>
<a class="anchor" id="ad7d5c5cd3b24ffee6dcc093b98c8546a"></a><!-- doxytag: member="xmutex.h::XMutex_GetUser" ref="ad7d5c5cd3b24ffee6dcc093b98c8546a" args="(XMutex *InstancePtr, u8 MutexNumber, u32 *User)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int XMutex_GetUser </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_x_mutex.html">XMutex</a> *&nbsp;</td>
<td class="paramname"> <em>InstancePtr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&nbsp;</td>
<td class="paramname"> <em>MutexNumber</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u32 *&nbsp;</td>
<td class="paramname"> <em>User</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets the USER register of a Mutex lock within a Mutex device.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstancePtr</em>&nbsp;</td><td>is a pointer to the <a class="el" href="struct_x_mutex.html">XMutex</a> instance to be worked on. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>MutexNumber</em>&nbsp;</td><td>is the specific Mutex lock within the device to operate on. Each device may contain multiple Mutex locks. The Mutex number is a zero based number with a range of 0 - (InstancePtr-&gt;Config.NumMutex - 1). </td></tr>
<tr><td valign="top"></td><td valign="top"><em>User</em>&nbsp;</td><td>is a pointer to an u32 where the current user register value is stored by this function. </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><ul>
<li>XST_SUCCESS if successful. Memory pointed to by User is updated to reflect the contents of the user register.</li>
<li>XST_NO_FEATURE if the Mutex was not configured with a USER register.</li>
</ul>
</dd></dl>
<dl class="note"><dt><b>Note:</b></dt><dd>None. </dd></dl>
</div>
</div>
<a class="anchor" id="a37302270d3c1c86dc0bffdfc7043b902"></a><!-- doxytag: member="xmutex.h::XMutex_IsLocked" ref="a37302270d3c1c86dc0bffdfc7043b902" args="(XMutex *InstancePtr, u8 MutexNumber)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int XMutex_IsLocked </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_x_mutex.html">XMutex</a> *&nbsp;</td>
<td class="paramname"> <em>InstancePtr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&nbsp;</td>
<td class="paramname"> <em>MutexNumber</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets the current lock state of a Mutex lock within a Mutex device.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstancePtr</em>&nbsp;</td><td>is a pointer to the <a class="el" href="struct_x_mutex.html">XMutex</a> instance to be worked on. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>MutexNumber</em>&nbsp;</td><td>is the specific Mutex lock within the device to operate on. Each device may contain multiple Mutex locks. The Mutex number is a zero based number with a range of 0 - (InstancePtr-&gt;Config.NumMutex - 1).</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><ul>
<li>TRUE if locked</li>
<li>FALSE if unlocked</li>
</ul>
</dd></dl>
<dl class="note"><dt><b>Note:</b></dt><dd>None. </dd></dl>
</div>
</div>
<a class="anchor" id="a1255fbeea64f519d8def63e542ce8703"></a><!-- doxytag: member="xmutex.h::XMutex_Lock" ref="a1255fbeea64f519d8def63e542ce8703" args="(XMutex *InstancePtr, u8 MutexNumber)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void XMutex_Lock </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_x_mutex.html">XMutex</a> *&nbsp;</td>
<td class="paramname"> <em>InstancePtr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&nbsp;</td>
<td class="paramname"> <em>MutexNumber</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Locks a particular Mutex lock within a Mutex device. Call blocks till the Mutex is locked.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstancePtr</em>&nbsp;</td><td>is a pointer to the <a class="el" href="struct_x_mutex.html">XMutex</a> instance to be worked on. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>MutexNumber</em>&nbsp;</td><td>is the specific Mutex lock within the device to operate on. Each device may contain multiple Mutex locks. The Mutex number is a zero based number with a range of 0 - (InstancePtr-&gt;Config.NumMutex - 1).</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>None</dd></dl>
<dl class="note"><dt><b>Note:</b></dt><dd><ul>
<li>XMutex_Trylock is a blocking call. This call blocks until the user gets the lock.</li>
<li>Use XMutex_Trylock for a Non-Blocking call. The user gets the lock if it is available and returns immediately if the lock is not available. </li>
</ul>
</dd></dl>
</div>
</div>
<a class="anchor" id="a9b36fec5e8de70e5338132b29709f76a"></a><!-- doxytag: member="xmutex.h::XMutex_LookupConfig" ref="a9b36fec5e8de70e5338132b29709f76a" args="(u16 DeviceId)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="struct_x_mutex___config.html">XMutex_Config</a>* XMutex_LookupConfig </td>
<td>(</td>
<td class="paramtype">u16&nbsp;</td>
<td class="paramname"> <em>DeviceId</em></td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a1599a86dd180f3bd789a2fc472e9aa29"></a><!-- doxytag: member="xmutex.h::XMutex_SelfTest" ref="a1599a86dd180f3bd789a2fc472e9aa29" args="(XMutex *InstancePtr)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int XMutex_SelfTest </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_x_mutex.html">XMutex</a> *&nbsp;</td>
<td class="paramname"> <em>InstancePtr</em></td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Selftest a particular Mutex hardware core.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstancePtr</em>&nbsp;</td><td>is a pointer to the <a class="el" href="struct_x_mutex.html">XMutex</a> instance to be worked on.</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><ul>
<li>XST_SUCCESS if test was successful.</li>
<li>XST_FAILURE if test was not successful.</li>
</ul>
</dd></dl>
<dl class="note"><dt><b>Note:</b></dt><dd></dd></dl>
<p>This test is destructive. It will fail if the Mutex is currently being used. This is also a blocking call, if there is another process which has the Mutex, the first _lock will hand the test until the other process releases it. </p>
</div>
</div>
<a class="anchor" id="a941e13d2534884adf4926f05bae3966e"></a><!-- doxytag: member="xmutex.h::XMutex_SetUser" ref="a941e13d2534884adf4926f05bae3966e" args="(XMutex *InstancePtr, u8 MutexNumber, u32 User)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int XMutex_SetUser </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_x_mutex.html">XMutex</a> *&nbsp;</td>
<td class="paramname"> <em>InstancePtr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&nbsp;</td>
<td class="paramname"> <em>MutexNumber</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u32&nbsp;</td>
<td class="paramname"> <em>User</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Sets the USER register of a Mutex lock within a Mutex device.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstancePtr</em>&nbsp;</td><td>is a pointer to the <a class="el" href="struct_x_mutex.html">XMutex</a> instance to be worked on. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>MutexNumber</em>&nbsp;</td><td>is the specific Mutex lock within the device to operate on. Each device may contain multiple Mutex locks. The Mutex number is a zero based number with a range of 0 - (InstancePtr-&gt;Config.NumMutex - 1). </td></tr>
<tr><td valign="top"></td><td valign="top"><em>User</em>&nbsp;</td><td>is the value to update the USER register with.</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><ul>
<li>XST_SUCCESS if the USER register is written with the given value .</li>
<li>XST_NO_FEATURE if the Mutex was not configured with a USER register.</li>
</ul>
</dd></dl>
<dl class="note"><dt><b>Note:</b></dt><dd>None. </dd></dl>
</div>
</div>
<a class="anchor" id="af1857cffa94ba8b3bdf491f1a0096340"></a><!-- doxytag: member="xmutex.h::XMutex_Trylock" ref="af1857cffa94ba8b3bdf491f1a0096340" args="(XMutex *InstancePtr, u8 MutexNumber)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int XMutex_Trylock </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_x_mutex.html">XMutex</a> *&nbsp;</td>
<td class="paramname"> <em>InstancePtr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&nbsp;</td>
<td class="paramname"> <em>MutexNumber</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Locks a particular Mutex lock within a Mutex device. Call returns immediately if the Mutex is already locked (This is Non-Blocking call).</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstancePtr</em>&nbsp;</td><td>is a pointer to the <a class="el" href="struct_x_mutex.html">XMutex</a> instance to be worked on. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>MutexNumber</em>&nbsp;</td><td>is the specific Mutex lock within the device to operate on. Each device may contain multiple Mutex locks. The Mutex number is a zero based number with a range of 0 - (InstancePtr-&gt;Config.NumMutex - 1).</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><ul>
<li>XST_SUCCESS if locking was successful.</li>
<li>XST_DEVICE_BUSY if the Mutex was found to be already locked</li>
</ul>
</dd></dl>
<dl class="note"><dt><b>Note:</b></dt><dd><ul>
<li>This is Non-Blocking call, the user gets the lock if it is available else XST_DEVICE_BUSY is returned.</li>
<li>Use XMutex_Lock if you need to block until a lock is obtained. </li>
</ul>
</dd></dl>
</div>
</div>
<a class="anchor" id="a82790dd21650e2b03e2c0a0f69a605d3"></a><!-- doxytag: member="xmutex.h::XMutex_Unlock" ref="a82790dd21650e2b03e2c0a0f69a605d3" args="(XMutex *InstancePtr, u8 MutexNumber)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int XMutex_Unlock </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_x_mutex.html">XMutex</a> *&nbsp;</td>
<td class="paramname"> <em>InstancePtr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&nbsp;</td>
<td class="paramname"> <em>MutexNumber</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Unlocks a particular Mutex lock within a Mutex device.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstancePtr</em>&nbsp;</td><td>is a pointer to the <a class="el" href="struct_x_mutex.html">XMutex</a> instance to be worked on. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>MutexNumber</em>&nbsp;</td><td>is the specific Mutex lock within the device to operate on. Each device may contain multiple Mutex locks. The Mutex number is a zero based number with a range of 0 - (InstancePtr-&gt;Config.NumMutex - 1).</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd></dd></dl>
<ul>
<li>XST_SUCCESS if locking was successful.</li>
<li>XST_FAILURE if the Mutex was locked by process with different ID.</li>
</ul>
<dl class="note"><dt><b>Note:</b></dt><dd>None. </dd></dl>
</div>
</div>
</div>
<p class="Copyright">
Copyright &copy; 1995-2014 Xilinx, Inc. All rights reserved.
</p>
</body>
</html>