1c5e7e03aSRuslan Ermilov.\" Copyright (C) 2000 Jason Evans <jasone@FreeBSD.org>. 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.Dd February 15, 2000 29b0a1b4f8SJason Evans.Dt SEM_GETVALUE 3 30b0a1b4f8SJason Evans.Os 31b0a1b4f8SJason Evans.Sh NAME 32b0a1b4f8SJason Evans.Nm sem_getvalue 33b0a1b4f8SJason Evans.Nd get the value of a semaphore 34d8a78688SAlexey Zelkin.Sh LIBRARY 35fccedf06SRuslan Ermilov.Lb libc 36b0a1b4f8SJason Evans.Sh SYNOPSIS 3732eef9aeSRuslan Ermilov.In semaphore.h 38b0a1b4f8SJason Evans.Ft int 39ddb4fb5bSMike Barcroft.Fn sem_getvalue "sem_t * restrict sem" "int * restrict sval" 40b0a1b4f8SJason Evans.Sh DESCRIPTION 41b0a1b4f8SJason EvansThe 42b0a1b4f8SJason Evans.Fn sem_getvalue 43b0a1b4f8SJason Evansfunction sets the variable pointed to by 44b0a1b4f8SJason Evans.Fa sval 45b0a1b4f8SJason Evansto the current value of the semaphore pointed to by 46b0a1b4f8SJason Evans.Fa sem , 47b0a1b4f8SJason Evansas of the time that the call to 48b0a1b4f8SJason Evans.Fn sem_getvalue 49b0a1b4f8SJason Evansis actually run. 50b0a1b4f8SJason Evans.Sh RETURN VALUES 51b1250632SYaroslav Tykhiy.Rv -std sem_getvalue 52b0a1b4f8SJason Evans.Sh ERRORS 539d09157aSPhilippe CharnierThe 54b0a1b4f8SJason Evans.Fn sem_getvalue 559d09157aSPhilippe Charnierfunction will fail if: 56b0a1b4f8SJason Evans.Bl -tag -width Er 57b0a1b4f8SJason Evans.It Bq Er EINVAL 5826b6c45aSRuslan ErmilovThe 59b0a1b4f8SJason Evans.Fa sem 6026b6c45aSRuslan Ermilovargument 61b0a1b4f8SJason Evanspoints to an invalid semaphore. 62b0a1b4f8SJason Evans.El 63b0a1b4f8SJason Evans.Sh SEE ALSO 64b0a1b4f8SJason Evans.Xr sem_post 3 , 6582db3da3SJason Evans.Xr sem_trywait 3 , 66*15096da3SJohn Baldwin.Xr sem_wait 3 67b0a1b4f8SJason Evans.Sh STANDARDS 689d09157aSPhilippe CharnierThe 69b0a1b4f8SJason Evans.Fn sem_getvalue 709d09157aSPhilippe Charnierfunction conforms to 71096841ecSRuslan Ermilov.St -p1003.1-96 . 72b0a1b4f8SJason Evans.Pp 73b0a1b4f8SJason EvansThe value of the semaphore is never negative, even if there are threads blocked 7426b6c45aSRuslan Ermilovon the semaphore. 7526b6c45aSRuslan Ermilov.Tn POSIX 7626b6c45aSRuslan Ermilovis somewhat ambiguous in its wording with regard to 77b0a1b4f8SJason Evanswhat the value of the semaphore should be if there are blocked waiting threads, 78b0a1b4f8SJason Evansbut this behavior is conformant, given the wording of the specification. 79