Files
oldlinux-files/Ref-docs/POSIX/susv3/functions/sem_post.html
2024-02-19 00:21:47 -05:00

155 lines
6.1 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta name="generator" content="HTML Tidy, see www.w3.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link type="text/css" rel="stylesheet" href="style.css"><!-- Generated by The Open Group's rhtm tool v1.2.1 -->
<!-- Copyright (c) 2001 The Open Group, All Rights Reserved -->
<title>sem_post</title>
</head>
<body bgcolor="white">
<script type="text/javascript" language="JavaScript" src="../jscript/codes.js">
</script>
<basefont size="3"> <a name="sem_post"></a> <a name="tag_03_633"></a><!-- sem_post -->
<!--header start-->
<center><font size="2">The Open Group Base Specifications Issue 6<br>
IEEE Std 1003.1-2001<br>
Copyright &copy; 2001 The IEEE and The Open Group, All Rights reserved.</font></center>
<!--header end-->
<hr size="2" noshade>
<h4><a name="tag_03_633_01"></a>NAME</h4>
<blockquote>sem_post - unlock a semaphore (<b>REALTIME</b>)</blockquote>
<h4><a name="tag_03_633_02"></a>SYNOPSIS</h4>
<blockquote class="synopsis">
<div class="box"><code><tt><sup>[<a href="javascript:open_code('SEM')">SEM</a>]</sup> <img src="../images/opt-start.gif" alt=
"[Option Start]" border="0"> #include &lt;<a href="../basedefs/semaphore.h.html">semaphore.h</a>&gt;<br>
<br>
int sem_post(sem_t *</tt><i>sem</i><tt>); <img src="../images/opt-end.gif" alt="[Option End]" border="0"></tt></code></div>
<tt><br>
</tt></blockquote>
<h4><a name="tag_03_633_03"></a>DESCRIPTION</h4>
<blockquote>
<p>The <i>sem_post</i>() function shall unlock the semaphore referenced by <i>sem</i> by performing a semaphore unlock operation on
that semaphore.</p>
<p>If the semaphore value resulting from this operation is positive, then no threads were blocked waiting for the semaphore to
become unlocked; the semaphore value is simply incremented.</p>
<p>If the value of the semaphore resulting from this operation is zero, then one of the threads blocked waiting for the semaphore
shall be allowed to return successfully from its call to <a href="../functions/sem_wait.html"><i>sem_wait</i>()</a>. <sup>[<a href=
"javascript:open_code('PS')">PS</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]" border="0"> &nbsp;If the Process
Scheduling option is supported, the thread to be unblocked shall be chosen in a manner appropriate to the scheduling policies and
parameters in effect for the blocked threads. In the case of the schedulers SCHED_FIFO and SCHED_RR, the highest priority waiting
thread shall be unblocked, and if there is more than one highest priority thread blocked waiting for the semaphore, then the
highest priority thread that has been waiting the longest shall be unblocked. If the Process Scheduling option is not defined, the
choice of a thread to unblock is unspecified. <img src="../images/opt-end.gif" alt="[Option End]" border="0"></p>
<p><sup>[<a href="javascript:open_code('SS')">SS</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]" border="0"> If
the Process Sporadic Server option is supported, and the scheduling policy is SCHED_SPORADIC, the semantics are as per SCHED_FIFO
above. <img src="../images/opt-end.gif" alt="[Option End]" border="0"></p>
<p>The <i>sem_post</i>() function shall be reentrant with respect to signals and may be invoked from a signal-catching
function.</p>
</blockquote>
<h4><a name="tag_03_633_04"></a>RETURN VALUE</h4>
<blockquote>
<p>If successful, the <i>sem_post</i>() function shall return zero; otherwise, the function shall return -1 and set <i>errno</i> to
indicate the error.</p>
</blockquote>
<h4><a name="tag_03_633_05"></a>ERRORS</h4>
<blockquote>
<p>The <i>sem_post</i>() function shall fail if:</p>
<dl compact>
<dt>[EINVAL]</dt>
<dd>The <i>sem</i> argument does not refer to a valid semaphore.</dd>
</dl>
</blockquote>
<hr>
<div class="box"><em>The following sections are informative.</em></div>
<h4><a name="tag_03_633_06"></a>EXAMPLES</h4>
<blockquote>
<p>None.</p>
</blockquote>
<h4><a name="tag_03_633_07"></a>APPLICATION USAGE</h4>
<blockquote>
<p>The <i>sem_post</i>() function is part of the Semaphores option and need not be available on all implementations.</p>
</blockquote>
<h4><a name="tag_03_633_08"></a>RATIONALE</h4>
<blockquote>
<p>None.</p>
</blockquote>
<h4><a name="tag_03_633_09"></a>FUTURE DIRECTIONS</h4>
<blockquote>
<p>None.</p>
</blockquote>
<h4><a name="tag_03_633_10"></a>SEE ALSO</h4>
<blockquote>
<p><a href="semctl.html"><i>semctl</i>()</a> , <a href="semget.html"><i>semget</i>()</a> , <a href="semop.html"><i>semop</i>()</a>
, <a href="sem_timedwait.html"><i>sem_timedwait</i>()</a> , <a href="sem_trywait.html"><i>sem_trywait</i>()</a> , <a href=
"sem_wait.html"><i>sem_wait</i>()</a> , the Base Definitions volume of IEEE&nbsp;Std&nbsp;1003.1-2001, <a href=
"../basedefs/semaphore.h.html"><i>&lt;semaphore.h&gt;</i></a></p>
</blockquote>
<h4><a name="tag_03_633_11"></a>CHANGE HISTORY</h4>
<blockquote>
<p>First released in Issue 5. Included for alignment with the POSIX Realtime Extension.</p>
</blockquote>
<h4><a name="tag_03_633_12"></a>Issue 6</h4>
<blockquote>
<p>The <i>sem_post</i>() function is marked as part of the Semaphores option.</p>
<p>The [ENOSYS] error condition has been removed as stubs need not be provided if an implementation does not support the Semaphores
option.</p>
<p>The <a href="../functions/sem_timedwait.html"><i>sem_timedwait</i>()</a> function is added to the SEE ALSO section for alignment
with IEEE&nbsp;Std&nbsp;1003.1d-1999.</p>
<p>SCHED_SPORADIC is added to the list of scheduling policies for which the thread that is to be unblocked is specified for
alignment with IEEE&nbsp;Std&nbsp;1003.1d-1999.</p>
</blockquote>
<div class="box"><em>End of informative text.</em></div>
<hr>
<hr size="2" noshade>
<center><font size="2"><!--footer start-->
UNIX &reg; is a registered Trademark of The Open Group.<br>
POSIX &reg; is a registered Trademark of The IEEE.<br>
[ <a href="../mindex.html">Main Index</a> | <a href="../basedefs/contents.html">XBD</a> | <a href=
"../utilities/contents.html">XCU</a> | <a href="../functions/contents.html">XSH</a> | <a href="../xrat/contents.html">XRAT</a>
]</font></center>
<!--footer end-->
<hr size="2" noshade>
</body>
</html>