xref: /freebsd/lib/libc/gen/sem_getvalue.3 (revision b0a1b4f80919d734dda03410df0cabf7297dfb68)
1b0a1b4f8SJason Evans.\" Copyright (C) 2000 Jason Evans <jasone@canonware.com>.
2b0a1b4f8SJason Evans.\" All rights reserved.
3b0a1b4f8SJason Evans.\"
4b0a1b4f8SJason Evans.\" Redistribution and use in source and binary forms, with or without
5b0a1b4f8SJason Evans.\" modification, are permitted provided that the following conditions
6b0a1b4f8SJason Evans.\" are met:
7b0a1b4f8SJason Evans.\" 1. Redistributions of source code must retain the above copyright
8b0a1b4f8SJason Evans.\"    notice(s), this list of conditions and the following disclaimer as
9b0a1b4f8SJason Evans.\"    the first lines of this file unmodified other than the possible
10b0a1b4f8SJason Evans.\"    addition of one or more copyright notices.
11b0a1b4f8SJason Evans.\" 2. Redistributions in binary form must reproduce the above copyright
12b0a1b4f8SJason Evans.\"    notice(s), this list of conditions and the following disclaimer in
13b0a1b4f8SJason Evans.\"    the documentation and/or other materials provided with the
14b0a1b4f8SJason Evans.\"    distribution.
15b0a1b4f8SJason Evans.\"
16b0a1b4f8SJason Evans.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY
17b0a1b4f8SJason Evans.\" EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18b0a1b4f8SJason Evans.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19b0a1b4f8SJason Evans.\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE
20b0a1b4f8SJason Evans.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21b0a1b4f8SJason Evans.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22b0a1b4f8SJason Evans.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
23b0a1b4f8SJason Evans.\" BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24b0a1b4f8SJason Evans.\" WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
25b0a1b4f8SJason Evans.\" OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
26b0a1b4f8SJason Evans.\" EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27b0a1b4f8SJason Evans.\"
28b0a1b4f8SJason Evans.\" $FreeBSD$
29b0a1b4f8SJason Evans.Dd February 15, 2000
30b0a1b4f8SJason Evans.Dt SEM_GETVALUE 3
31b0a1b4f8SJason Evans.Os
32b0a1b4f8SJason Evans.Sh NAME
33b0a1b4f8SJason Evans.Nm sem_getvalue
34b0a1b4f8SJason Evans.Nd get the value of a semaphore
35b0a1b4f8SJason Evans.Sh SYNOPSIS
36b0a1b4f8SJason Evans.Fd #include <semaphore.h>
37b0a1b4f8SJason Evans.Ft int
38b0a1b4f8SJason Evans.Fn sem_getvalue "sem_t *sem" "int *sval"
39b0a1b4f8SJason Evans.Sh DESCRIPTION
40b0a1b4f8SJason EvansThe
41b0a1b4f8SJason Evans.Fn sem_getvalue
42b0a1b4f8SJason Evansfunction sets the variable pointed to by
43b0a1b4f8SJason Evans.Fa sval
44b0a1b4f8SJason Evansto the current value of the semaphore pointed to by
45b0a1b4f8SJason Evans.Fa sem ,
46b0a1b4f8SJason Evansas of the time that the call to
47b0a1b4f8SJason Evans.Fn sem_getvalue
48b0a1b4f8SJason Evansis actually run.
49b0a1b4f8SJason Evans.Sh RETURN VALUES
50b0a1b4f8SJason EvansIf successful,
51b0a1b4f8SJason Evans.Fn sem_getvalue
52b0a1b4f8SJason Evansreturns 0.  Otherwise, -1 is returned and
53b0a1b4f8SJason Evans.Va errno
54b0a1b4f8SJason Evansis set to indicate the type of
55b0a1b4f8SJason Evanserror.
56b0a1b4f8SJason Evans.Sh ERRORS
57b0a1b4f8SJason Evans.Fn sem_getvalue
58b0a1b4f8SJason Evanswill fail if:
59b0a1b4f8SJason Evans.Bl -tag -width Er
60b0a1b4f8SJason Evans.It Bq Er EINVAL
61b0a1b4f8SJason Evans.Fa sem
62b0a1b4f8SJason Evanspoints to an invalid semaphore.
63b0a1b4f8SJason Evans.El
64b0a1b4f8SJason Evans.Sh SEE ALSO
65b0a1b4f8SJason Evans.Xr sem_post 3 ,
66b0a1b4f8SJason Evans.Xr sem_wait 3 ,
67b0a1b4f8SJason Evans.Xr sem_trywait 3
68b0a1b4f8SJason Evans.Sh STANDARDS
69b0a1b4f8SJason Evans.Fn sem_getvalue
70b0a1b4f8SJason Evansconforms to ISO/IEC 9945-1 ANSI/IEEE
71b0a1b4f8SJason Evans.Pq Dq Tn POSIX
72b0a1b4f8SJason EvansStd 1003.1 1996 Edition.
73b0a1b4f8SJason Evans.Pp
74b0a1b4f8SJason EvansThe value of the semaphore is never negative, even if there are threads blocked
75b0a1b4f8SJason Evanson the semaphore.  POSIX is somewhat ambiguous in its wording with regard to
76b0a1b4f8SJason Evanswhat the value of the semaphore should be if there are blocked waiting threads,
77b0a1b4f8SJason Evansbut this behavior is conformant, given the wording of the specification.
78