diff options
author | rpj <rpj> | 2005-05-13 14:21:30 +0000 |
---|---|---|
committer | rpj <rpj> | 2005-05-13 14:21:30 +0000 |
commit | d4a22be21479c3b52e0ba2d3cfb150a98c426422 (patch) | |
tree | c4550e960db110bd64720a474ad6f2b257b9acb8 /manual/sem_init.html | |
parent | 8c349ac54c076e64ac8017927974968f2608fcb1 (diff) |
''
Diffstat (limited to 'manual/sem_init.html')
-rw-r--r-- | manual/sem_init.html | 58 |
1 files changed, 28 insertions, 30 deletions
diff --git a/manual/sem_init.html b/manual/sem_init.html index 5509859..80e0580 100644 --- a/manual/sem_init.html +++ b/manual/sem_init.html @@ -5,7 +5,7 @@ <TITLE>SEMAPHORES(3) manual page</TITLE> <META NAME="GENERATOR" CONTENT="OpenOffice.org 1.1.3 (Linux)"> <META NAME="CREATED" CONTENT="20050505;14061900"> - <META NAME="CHANGED" CONTENT="20050505;16344500"> + <META NAME="CHANGED" CONTENT="20050514;195200"> <!-- manual page source format generated by PolyglotMan v3.2, --> <!-- available at http://polyglotman.sourceforge.net/ --> </HEAD> @@ -25,15 +25,15 @@ unsigned int </B><I>value</I><B>);</B> </P> <P><B>int sem_wait(sem_t * </B><I>sem</I><B>);</B> </P> -<P><B>int sem_timedwait(sem_t * </B><I>sem</I><SPAN STYLE="font-style: normal">, -<B>const struct timespec *</B></SPAN><I>abstime</I><B>);</B> +<P><B>int sem_timedwait(sem_t * </B><I>sem</I>, <B>const struct +timespec *</B><I>abstime</I><B>);</B> </P> <P><B>int sem_trywait(sem_t * </B><I>sem</I><B>);</B> </P> <P><B>int sem_post(sem_t * </B><I>sem</I><B>);</B> </P> -<P><B>int sem_post_multiple(sem_t * </B><I>sem, </I><SPAN STYLE="font-style: normal"><B>int</B> -</SPAN><I>number</I><B>);</B> +<P><B>int sem_post_multiple(sem_t * </B><I>sem, </I><B>int</B> +<I>number</I><B>);</B> </P> <P><B>int sem_getvalue(sem_t * </B><I>sem</I><B>, int * </B><I>sval</I><B>);</B> </P> @@ -56,8 +56,8 @@ if <I>pshared</I> is not zero. </P> <P><B>sem_wait</B> atomically decrements <I>sem</I>'s count if it is greater than 0 and returns immediately or it suspends the calling -thread until it can resume following a call to <B>sem_post</B><SPAN STYLE="font-weight: medium"> -or </SPAN><B>sem_post_multiple</B>.</P> +thread until it can resume following a call to <B>sem_post</B> or +<B>sem_post_multiple</B>.</P> <P><B>sem_timedwait</B> atomically decrements <I>sem</I>'s count if it is greater than 0 and returns immediately, or it suspends the calling thread. If <I>abstime</I> time arrives before the thread can @@ -65,31 +65,29 @@ resume following a call to <B>sem_post</B> or <B>sem_post_multiple</B>, then <B>sem_timedwait</B> returns with a return code of -1 after having set <B>errno</B> to <B>ETIMEDOUT</B>. If the call can return without suspending then <I>abstime</I> is not checked.</P> -<P><B>sem_trywait</B><SPAN STYLE="font-weight: medium"> atomically -decrements <I>sem</I>'s count if it is greater than 0 and returns -immediately, or it returns immediately with a return code of -1 after -having set <B>errno</B> to <B>EAGAIN</B></SPAN>. <B>sem_trywait</B><SPAN STYLE="font-weight: medium"> -never blocks.</SPAN></P> +<P><B>sem_trywait</B> atomically decrements <I>sem</I>'s count if it +is greater than 0 and returns immediately, or it returns immediately +with a return code of -1 after having set <B>errno</B> to <B>EAGAIN</B>. +<B>sem_trywait</B> never blocks.</P> <P><B>sem_post</B> either releases one thread if there are any waiting on <I>sem</I>, or it atomically increments <I>sem</I>'s count.</P> <P><B>sem_post_multiple</B> either releases multiple threads if there -are any waiting on <I>sem</I><SPAN STYLE="font-style: normal"> and/or -it </SPAN>atomically increases <I>sem</I>'s count. If there are -currently <I>n</I> waiters, where <I>n</I> the largest number less -than or equal to <I>number</I>, then <I>n</I> waiters are released -and <I>sem</I>'s count is incremented by <I>number</I> minus <I>n</I>.</P> +are any waiting on <I>sem</I> and/or it atomically increases <I>sem</I>'s +count. If there are currently <I>n</I> waiters, where <I>n</I> the +largest number less than or equal to <I>number</I>, then <I>n</I> +waiters are released and <I>sem</I>'s count is incremented by <I>number</I> +minus <I>n</I>.</P> <P><B>sem_getvalue</B> stores in the location pointed to by <I>sval</I> the current count of the semaphore <I>sem</I>. In the <B>Pthreads-w32</B> implementation: if the value returned in <I>sval</I> is greater than or equal to 0 it was the <I>sem</I>'s count at some point during the -call to <B>sem_getvalue</B>. <SPAN STYLE="font-weight: medium">If the -value returned in <I>sval</I> is less than 0 then it's absolute value -represents the number of threads waiting on <I>sem</I> at some point -during the call to </SPAN><B>sem_getvalue. </B><SPAN STYLE="font-weight: medium">POSIX -does not require an implementation of </SPAN><B>sem_getvalue</B><SPAN STYLE="font-weight: medium"> +call to <B>sem_getvalue</B>. If the value returned in <I>sval</I> is +less than 0 then it's absolute value represents the number of threads +waiting on <I>sem</I> at some point during the call to <B>sem_getvalue. +</B>POSIX does not require an implementation of <B>sem_getvalue</B> to return a value in <I>sval</I> that is less than 0, but if it does -then it's absolute value must represent the number of waiters.</SPAN></P> +then it's absolute value must represent the number of waiters.</P> <P><B>sem_destroy</B> destroys a semaphore object, freeing the resources it might hold. No threads should be waiting on the semaphore at the time <B>sem_destroy</B> is called.</P> @@ -110,12 +108,12 @@ codes on error: <DL> <DT STYLE="margin-right: 1cm; margin-bottom: 0.5cm"><B>EINVAL</B> </DT><DD STYLE="margin-right: 1cm; margin-bottom: 0.5cm"> - <I>value</I> exceeds the maximal counter value <B>_POSIX_SEM_VALUE_MAX</B> + <I>value</I> exceeds the maximal counter value <B>SEM_VALUE_MAX</B> </DD><DT STYLE="margin-right: 1cm; margin-bottom: 0.5cm"> <B>ENOSYS</B> </DT></DL> </DL> -<BLOCKQUOTE STYLE="margin-left: 2cm"> +<BLOCKQUOTE STYLE="margin-left: 3cm"> <I>pshared</I> is not zero </BLOCKQUOTE> <P>The <B>sem_timedwait</B> function sets <B>errno</B> to the @@ -126,7 +124,7 @@ following error code on error: <DT STYLE="margin-right: 1cm; margin-bottom: 0.5cm"><B>ETIMEDOUT</B> </DT></DL> </DL> -<BLOCKQUOTE STYLE="margin-left: 2cm"> +<BLOCKQUOTE STYLE="margin-left: 3cm"> if <I>abstime</I> arrives before the waiting thread can resume following a call to <B>sem_post</B> or <B>sem_post_multiple</B>. </BLOCKQUOTE> @@ -138,7 +136,7 @@ error code on error: <DT STYLE="margin-right: 1cm; margin-bottom: 0.5cm"><B>EAGAIN</B> </DT></DL> </DL> -<BLOCKQUOTE STYLE="margin-left: 2cm"> +<BLOCKQUOTE STYLE="margin-left: 3cm"> if the semaphore count is currently 0 </BLOCKQUOTE> <P>The <B>sem_post</B> and <B>sem_post_multiple</B> functions set @@ -149,8 +147,8 @@ if the semaphore count is currently 0 <DT STYLE="margin-right: 1cm; margin-bottom: 0.5cm"><B>ERANGE</B> </DT><DD STYLE="margin-right: 1cm; margin-bottom: 0.5cm"> if after incrementing, the semaphore count would exceed - <B>_POSIX_SEM_VALUE_MAX</B> (the semaphore count is left unchanged - in this case) + <B>SEM_VALUE_MAX</B> (the semaphore count is left unchanged in this + case) </DD></DL> </DL> <P> @@ -199,4 +197,4 @@ error code on error: </P> </UL> </BODY> -</HTML> +</HTML>
\ No newline at end of file |