Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
semget(2)							     semget(2)

       semget -	get set	of semaphores

       #include	<sys/types.h>
       #include	<sys/ipc.h>
       #include	<sys/sem.h>

       int semget (key,	nsems, semflg)
       key_t key;
       int nsems, semflg;

       The  system  call returns the semaphore identifier associated with key.
       A semaphore identifier and associated data structure and	set containing
       nsems semaphores	are created for	key, if	one of the following is	true:

       o   The key is equal to IPC_PRIVATE

       o   The	key  does  not	already	have a semaphore identifier associated
	   with	it, and	(semflg	& IPC_CREAT ) is true.

       For further information,	see

       Upon creation, the data structure associated  with  the	new  semaphore
       identifier is initialized as follows:

       o   The sem_perm.cuid, sem_perm.uid, sem_perm.cgid and sem_perm.gid are
	   set equal to	the effective user ID and effective group ID,  respec-
	   tively, of the calling process.

       o   The	low-order nine bits of sem_perm.mode are set equal to the low-
	   order nine bits of semflg.

       o   The sem_nsems is set	equal to the value of nsems.

       o   The sem_otime is set	equal to zero (0) and sem_ctime	is  set	 equal
	   to the current time.

Return Values
       Upon  successful	 completion, a nonnegative integer, namely a semaphore
       identifier, is returned.	 Otherwise, a value  of	 -1  is	 returned  and
       errno is	set to indicate	the error.

       The semget system call fails if any of the following is true:

       [EINVAL]	      The  nsems  is  either  less  than  or  equal to zero or
		      greater than the system-imposed limit

       [EACCES]	      A	semaphore identifier exists  for  key,	but  operation
		      permission,  as  specified by the	low-order nine bits of
		      semflg would not be granted.  For	 further  information,

       [EINVAL]	      A	semaphore identifier exists for	key, but the number of
		      semaphores in the	set associated with it	is  less  than
		      nsems and	nsems is not equal to zero.

       [ENOENT]	      A	 semaphore identifier does not exist for key and (sem-
		      flg & IPC_CREAT )	is false.

       [ENOSPC]	      A	semaphore identifier is	to be created but the  system-
		      imposed limit on the maximum number of allowed semaphore
		      identifiers in the system	would be exceeded.

       [EEXIST]	      A	semaphore identifier exists for	 key  but  ((semflg  &
		      IPC_CREAT	) & (semflg & IPC_EXCL )) is true.

See Also
       semctl(2), semop(2), ftok(3)


Name | Syntax | Description | Return Values | Diagnostics | See Also

Want to link to this manual page? Use this URL:

home | help