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

487 lines
23 KiB
HTML
Raw Normal View History

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>
xmutex.c File Reference
</title>
<link href="$DriverApiDocsCssPath" 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.4.5 -->
<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 id="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>
<h1>xmutex.c File Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
Contains required functions for the <a class="el" href="struct_x_mutex.html">XMutex</a> driver.<p>
<pre>
MODIFICATION HISTORY:</pre><p>
<pre> Ver Who Date Changes
----- ---- -------- -----------------------------------------------
1.00a va First release
1.00b ecm 06/01/07 Cleanup, new coding standard, check into XCS
2.00a hm 04/14/09 Fixed CR 466322, removed extra definitions
Also fixed canonical definitions treating an interface
as an device instance.
3.00a hbm 10/15/09 Migrated to HAL phase 1 to use xil_io, xil_types,
and xil_assert.
4.00a bss 03/05/14 Modified XMutex_CfgInitialize to fix CR# 770096
</pre>
<p>
<code>#include &lt;string.h&gt;</code><br>
<code>#include &quot;xmutex.h&quot;</code><br>
<code>#include &quot;xparameters.h&quot;</code><br>
<code>#include &quot;xil_types.h&quot;</code><br>
<code>#include &quot;xil_assert.h&quot;</code><br>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xmutex_8c.html#dc27f84b9e6ead30caefc29c5d1859f3">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" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xmutex_8c.html#cd8ce9ec19b4e949d66f23c56fb529f5">XMutex_Lock</a> (<a class="el" href="struct_x_mutex.html">XMutex</a> *InstancePtr, u8 MutexNumber)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xmutex_8c.html#4d8ec1fd7ded72c8a41252d1a01a3495">XMutex_Trylock</a> (<a class="el" href="struct_x_mutex.html">XMutex</a> *InstancePtr, u8 MutexNumber)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xmutex_8c.html#40ee82db86b1d11f43092cd949b78eb3">XMutex_Unlock</a> (<a class="el" href="struct_x_mutex.html">XMutex</a> *InstancePtr, u8 MutexNumber)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xmutex_8c.html#534e5652ec502b9143fa9710d6159cce">XMutex_IsLocked</a> (<a class="el" href="struct_x_mutex.html">XMutex</a> *InstancePtr, u8 MutexNumber)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xmutex_8c.html#55eae2392bd9d0db37cf219cff46807b">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" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xmutex_8c.html#127d6d7fbffafcea12f60241e778a9aa">XMutex_GetUser</a> (<a class="el" href="struct_x_mutex.html">XMutex</a> *InstancePtr, u8 MutexNumber, u32 *User)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xmutex_8c.html#fcbbce6ca788475a9f64a15d26da2b33">XMutex_SetUser</a> (<a class="el" href="struct_x_mutex.html">XMutex</a> *InstancePtr, u8 MutexNumber, u32 User)</td></tr>
</table>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="dc27f84b9e6ead30caefc29c5d1859f3"></a><!-- doxytag: member="xmutex.c::XMutex_CfgInitialize" ref="dc27f84b9e6ead30caefc29c5d1859f3" args="(XMutex *InstancePtr, XMutex_Config *ConfigPtr, u32 EffectiveAddress)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">int XMutex_CfgInitialize </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_mutex.html">XMutex</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>InstancePtr</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap><a class="el" href="struct_x_mutex___config.html">XMutex_Config</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>ConfigPtr</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u32&nbsp;</td>
<td class="mdname" nowrap> <em>EffectiveAddress</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Initializes a specific Mutex instance/driver.<p>
<dl compact><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>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd><ul>
<li>XST_SUCCESS if initialization was successful</li></ul>
</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="55eae2392bd9d0db37cf219cff46807b"></a><!-- doxytag: member="xmutex.c::XMutex_GetStatus" ref="55eae2392bd9d0db37cf219cff46807b" args="(XMutex *InstancePtr, u8 MutexNumber, u32 *Locked, u32 *Owner)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void XMutex_GetStatus </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_mutex.html">XMutex</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>InstancePtr</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u8&nbsp;</td>
<td class="mdname" nowrap> <em>MutexNumber</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u32 *&nbsp;</td>
<td class="mdname" nowrap> <em>Locked</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u32 *&nbsp;</td>
<td class="mdname" nowrap> <em>Owner</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Gets the current status of a Mutex lock within a Mutex device.<p>
<dl compact><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>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>None.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="127d6d7fbffafcea12f60241e778a9aa"></a><!-- doxytag: member="xmutex.c::XMutex_GetUser" ref="127d6d7fbffafcea12f60241e778a9aa" args="(XMutex *InstancePtr, u8 MutexNumber, u32 *User)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">int XMutex_GetUser </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_mutex.html">XMutex</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>InstancePtr</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u8&nbsp;</td>
<td class="mdname" nowrap> <em>MutexNumber</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u32 *&nbsp;</td>
<td class="mdname" nowrap> <em>User</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Gets the USER register of a Mutex lock within a Mutex device.<p>
<dl compact><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>
</dl>
<dl compact><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 compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="534e5652ec502b9143fa9710d6159cce"></a><!-- doxytag: member="xmutex.c::XMutex_IsLocked" ref="534e5652ec502b9143fa9710d6159cce" args="(XMutex *InstancePtr, u8 MutexNumber)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">int XMutex_IsLocked </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_mutex.html">XMutex</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>InstancePtr</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u8&nbsp;</td>
<td class="mdname" nowrap> <em>MutexNumber</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Gets the current lock state of a Mutex lock within a Mutex device.<p>
<dl compact><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>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd><ul>
<li>TRUE if locked</li><li>FALSE if unlocked</li></ul>
</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="cd8ce9ec19b4e949d66f23c56fb529f5"></a><!-- doxytag: member="xmutex.c::XMutex_Lock" ref="cd8ce9ec19b4e949d66f23c56fb529f5" args="(XMutex *InstancePtr, u8 MutexNumber)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void XMutex_Lock </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_mutex.html">XMutex</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>InstancePtr</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u8&nbsp;</td>
<td class="mdname" nowrap> <em>MutexNumber</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Locks a particular Mutex lock within a Mutex device. Call blocks till the Mutex is locked.<p>
<dl compact><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>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>None</dd></dl>
<dl compact><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>
</td>
</tr>
</table>
<a class="anchor" name="fcbbce6ca788475a9f64a15d26da2b33"></a><!-- doxytag: member="xmutex.c::XMutex_SetUser" ref="fcbbce6ca788475a9f64a15d26da2b33" args="(XMutex *InstancePtr, u8 MutexNumber, u32 User)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">int XMutex_SetUser </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_mutex.html">XMutex</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>InstancePtr</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u8&nbsp;</td>
<td class="mdname" nowrap> <em>MutexNumber</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u32&nbsp;</td>
<td class="mdname" nowrap> <em>User</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Sets the USER register of a Mutex lock within a Mutex device.<p>
<dl compact><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>
</dl>
<dl compact><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 compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="4d8ec1fd7ded72c8a41252d1a01a3495"></a><!-- doxytag: member="xmutex.c::XMutex_Trylock" ref="4d8ec1fd7ded72c8a41252d1a01a3495" args="(XMutex *InstancePtr, u8 MutexNumber)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">int XMutex_Trylock </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_mutex.html">XMutex</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>InstancePtr</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u8&nbsp;</td>
<td class="mdname" nowrap> <em>MutexNumber</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<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 compact><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>
</dl>
<dl compact><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 compact><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>
</td>
</tr>
</table>
<a class="anchor" name="40ee82db86b1d11f43092cd949b78eb3"></a><!-- doxytag: member="xmutex.c::XMutex_Unlock" ref="40ee82db86b1d11f43092cd949b78eb3" args="(XMutex *InstancePtr, u8 MutexNumber)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">int XMutex_Unlock </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_mutex.html">XMutex</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>InstancePtr</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u8&nbsp;</td>
<td class="mdname" nowrap> <em>MutexNumber</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Unlocks a particular Mutex lock within a Mutex device.<p>
<dl compact><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>
</dl>
<dl compact><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>
<p>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
Copyright @ 1995-2014 Xilinx, Inc. All rights reserved.