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.\" $FreeBSD$ 2926b6c45aSRuslan Ermilov.\" 307bf27b2dSDavid Xu.Dd January 9, 2010 31b0a1b4f8SJason Evans.Dt SEM_INIT 3 32b0a1b4f8SJason Evans.Os 33b0a1b4f8SJason Evans.Sh NAME 34b0a1b4f8SJason Evans.Nm sem_init 35b0a1b4f8SJason Evans.Nd initialize an unnamed semaphore 36d8a78688SAlexey Zelkin.Sh LIBRARY 37fccedf06SRuslan Ermilov.Lb libc 38b0a1b4f8SJason Evans.Sh SYNOPSIS 3932eef9aeSRuslan Ermilov.In semaphore.h 40b0a1b4f8SJason Evans.Ft int 41b0a1b4f8SJason Evans.Fn sem_init "sem_t *sem" "int pshared" "unsigned int value" 42b0a1b4f8SJason Evans.Sh DESCRIPTION 43b0a1b4f8SJason EvansThe 44b0a1b4f8SJason Evans.Fn sem_init 45b0a1b4f8SJason Evansfunction initializes the unnamed semaphore pointed to by 46b0a1b4f8SJason Evans.Fa sem 47b0a1b4f8SJason Evansto have the value 48b0a1b4f8SJason Evans.Fa value . 49a455039eSDavid Xu.Pp 50b0a1b4f8SJason EvansA non-zero value for 51b0a1b4f8SJason Evans.Fa pshared 52a455039eSDavid Xuspecifies a shared semaphore that can be used by multiple processes, 53a455039eSDavid Xuthe semaphore should be located in shared memory region (see 54a455039eSDavid Xu.Xr mmap 2 , 55a455039eSDavid Xu.Xr shm_open 2 , 56a455039eSDavid Xuand 57a455039eSDavid Xu.Xr shmget 2 ) , 58a455039eSDavid Xuany process having read and write access to address 59a455039eSDavid Xu.Fa sem 60a455039eSDavid Xucan perform semaphore operations on 61a455039eSDavid Xu.Fa sem . 62b0a1b4f8SJason Evans.Pp 63b0a1b4f8SJason EvansFollowing a successful call to 64b0a1b4f8SJason Evans.Fn sem_init , 65b0a1b4f8SJason Evans.Fa sem 66b0a1b4f8SJason Evanscan be used as an argument in subsequent calls to 679d09157aSPhilippe Charnier.Xr sem_wait 3 , 689d09157aSPhilippe Charnier.Xr sem_trywait 3 , 699d09157aSPhilippe Charnier.Xr sem_post 3 , 70b0a1b4f8SJason Evansand 719d09157aSPhilippe Charnier.Xr sem_destroy 3 . 729d09157aSPhilippe CharnierThe 73b0a1b4f8SJason Evans.Fa sem 749d09157aSPhilippe Charnierargument is no longer valid after a successful call to 759d09157aSPhilippe Charnier.Xr sem_destroy 3 . 76b0a1b4f8SJason Evans.Sh RETURN VALUES 77b1250632SYaroslav Tykhiy.Rv -std sem_init 78b0a1b4f8SJason Evans.Sh ERRORS 799d09157aSPhilippe CharnierThe 80b0a1b4f8SJason Evans.Fn sem_init 819d09157aSPhilippe Charnierfunction will fail if: 82b0a1b4f8SJason Evans.Bl -tag -width Er 83b0a1b4f8SJason Evans.It Bq Er EINVAL 8426b6c45aSRuslan ErmilovThe 85b0a1b4f8SJason Evans.Fa value 8626b6c45aSRuslan Ermilovargument exceeds 8726b6c45aSRuslan Ermilov.Dv SEM_VALUE_MAX . 88b0a1b4f8SJason Evans.It Bq Er ENOSPC 89b0a1b4f8SJason EvansMemory allocation error. 90b0a1b4f8SJason Evans.El 91b0a1b4f8SJason Evans.Sh SEE ALSO 9282db3da3SJason Evans.Xr sem_destroy 3 , 937a6d1e6fSRobert Watson.Xr sem_getvalue 3 , 94b0a1b4f8SJason Evans.Xr sem_post 3 , 9582db3da3SJason Evans.Xr sem_trywait 3 , 9651f2ddd7STim J. Robbins.Xr sem_wait 3 , 9751f2ddd7STim J. Robbins.Xr sem 4 98b0a1b4f8SJason Evans.Sh STANDARDS 999d09157aSPhilippe CharnierThe 100b0a1b4f8SJason Evans.Fn sem_init 1019d09157aSPhilippe Charnierfunction conforms to 102096841ecSRuslan Ermilov.St -p1003.1-96 . 103