ibm-information-center/dist/eclipse/plugins/i5OS.ic.apis_5.4.0.1/users_51.htm

176 lines
6.1 KiB
HTML
Raw Normal View History

2024-04-02 14:02:31 +00:00
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Copyright" content="Copyright (c) 2006 by IBM Corporation">
<title>pthread_mutexattr_getname_np()--Get Name from Mutex Attributes Object</title>
<!-- All rights reserved. Licensed Materials Property of IBM -->
<!-- US Government Users Restricted Rights -->
<!-- Use, duplication or disclosure restricted by -->
<!-- GSA ADP Schedule Contract with IBM Corp. -->
<!-- Begin Header Records ========================================== -->
<!-- NETMG2 SCRIPT A converted by B2H R4.1 (346) (CMS) by HOLTJM at -->
<!-- RCHVMW2 on 29 Jan 1999 at 10:01:37 -->
<!--File Edited November 2001 -->
<!--End Header Records -->
<link rel="stylesheet" type="text/css" href="../rzahg/ic.css">
</head>
<body>
<!-- Java sync-link -->
<script language="Javascript" src="../rzahg/synch.js" type="text/javascript">
</script>
<a name="Top_Of_Page"></a>
<h2>pthread_mutexattr_getname_np()--Get Name from Mutex Attributes Object</h2>
<div class="box" style="width: 80%;">
<br>
&nbsp;&nbsp;Syntax:
<pre> #include &lt;pthread.h&gt;
int pthread_mutexattr_getname_np(const pthread_mutexattr_t *attr, char *name); </pre>
&nbsp;&nbsp;Service Program Name: QP0WPTHR<br>
<!-- iddvc RMBR -->
<br>
&nbsp;&nbsp;Default Public Authority: *USE <br>
<!-- iddvc RMBR -->
<br>
&nbsp;&nbsp;Threadsafe: Yes<br>
<!-- iddvc RMBR -->
<br>
&nbsp;&nbsp;Signal Safe: Yes<br>
<!-- iddvc RMBR -->
<br>
</div>
<p>The <strong>pthread_mutexattr_getname_np</strong>() function retrieves the name attribute associated with the mutex attribute specified by <em>attr</em>. The buffer specified by <em>name</em> must be at least 16 characters in length. If the length of the mutex name is less than or equal to 15 characters, it is null terminated in the output buffer.</p>
<p>By default, each pthread_mutex_t has the name &quot;QP0WMTX UNNAMED&quot; associated with it. The name attribute is used by various i5/OS system utilities to aid in debugging and service. One example is the WRKJOB command, which has a `work with mutexes' menu choice to show which mutexes are currently locked and which mutexes are being waited for.</p>
<p>If you should give unique names to all mutexes created to aid in debugging deadlock or performance problems. Use the CL command <strong>WRKJOB</strong>, option 20, to help debug mutex deadlocks.</p>
<br>
<h3>Authorities and Locks</h3>
<p>None.</p>
<br>
<h3>Parameters</h3>
<dl>
<dt><strong>attr</strong></dt>
<dd>(Input) Address of the mutex attributes object</dd>
<dt><strong>name</strong></dt>
<dd>(Output) Address of a 16-byte character buffer to receive the name</dd>
</dl>
<br>
<h3>Return Value</h3>
<dl>
<dt><strong>0</strong></dt>
<dd><strong>pthread_mutexattr_getname_np</strong>() was successful.</dd>
<dt><strong>value</strong></dt>
<dd><strong>pthread_mutexattr_getname_np</strong>() was not successful. <em>value</em> is set to indicate the error condition.</dd>
</dl>
<br>
<h3>Error Conditions</h3>
<p>If <strong>pthread_mutexattr_getname_np</strong>() was not successful, the error condition returned usually indicates one of the following errors. Under some conditions, the value returned could indicate an error other than those listed here.</p>
<dl>
<dt><em>[EINVAL]</em></dt>
<dd><p>The value specified for the argument is not correct.</p></dd>
</dl>
<br>
<h3>Related Information</h3>
<ul>
<li>The &lt;<strong>pthread.h</strong>> header file. See <a href="rzah4hed.htm">Header files for Pthread functions</a>.<br><br></li>
<li><a href="users_54.htm">pthread_mutexattr_init()</a>--Initialize Mutex Attributes Object<br><br></li>
<li><a href="users_56.htm">pthread_mutexattr_setname_np()</a>--Set Name in Mutex Attributes Object<br><br></li>
<li><a href="users_61.htm">pthread_mutex_init()</a>--Initialize Mutex</li>
</ul>
<br>
<h3>Example</h3>
<p>See <a href="../apiref/aboutapis.htm#codedisclaimer">Code disclaimer information</a>
for information pertaining to code examples.</p>
<pre>#include &lt;pthread.h&gt;
#include &lt;stdio.h&gt;
#include &quot;check.h&quot;
int main(int argc, char **argv)
{
int rc=0;
pthread_mutexattr_t mta;
char mutexname[16];
printf(&quot;Entering testcase\n&quot;);
printf(&quot;Create a default mutex attribute\n&quot;);
rc = pthread_mutexattr_init(&amp;mta);
checkResults(&quot;pthread_mutexattr_init\n&quot;, rc);
memset(mutexname, 0, sizeof(mutexname));
printf(&quot;Find out what the default name of the mutex is\n&quot;);
rc = pthread_mutexattr_getname_np(&amp;mta, mutexname);
checkResults(&quot;pthread_mutexattr_getname_np()\n&quot;, rc);
printf(&quot;The default mutex name will be: %.15s\n&quot;, mutexname);
printf(&quot;- At this point, mutexes created with this attribute\n&quot;);
printf(&quot;- will show up by name on many i5/OS debug and service screens\n&quot;);
printf(&quot;- The default attribute contains a special automatically\n&quot;);
printf(&quot;- incrementing name that changes for each mutex created in \n&quot;);
printf(&quot;- the process\n&quot;);
printf(&quot;Destroy mutex attribute\n&quot;);
rc = pthread_mutexattr_destroy(&amp;mta);
checkResults(&quot;pthread_mutexattr_destroy()\n&quot;, rc);
printf(&quot;Main completed\n&quot;);
return 0;
}</pre>
<p><strong>Output:</strong></p>
<pre>Entering testcase
Create a default mutex attribute
Find out what the default name of the mutex is
The default mutex name is: QP0WMTX UNNAMED
- At this point, mutexes created with this attribute
- will show up by name on many i5/OS debug and service screens
- The default attribute contains a special automatically
- incrementing name that changes for each mutex created in&nbsp;
- the process
Destroy mutex attribute
Main completed</pre>
<hr>
API introduced: V4R3
<hr>
<center>
<table cellpadding="2" cellspacing="2">
<tr align="center">
<td valign="middle" align="center"><a href="#Top_Of_Page">Top</a> |
<a href="rzah4mst.htm">Pthread APIs</a> |
<a href="aplist.htm">APIs by category</a></td>
</tr>
</table>
</center>
</body>
</html>