semop man page on Xenix

Man page or keyword search:  
man Server   1130 pages
apropos Keyword Search (all sections)
Output format
Xenix logo
[printable version]



     SEMOP(S)		      XENIX System V		      SEMOP(S)

     Name
	  semop - Performs semaphore operations.

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

	  int semop (semid, sops, nsops)
	  int semid;
	  struct sembuf *sops;
	  int nsops;

     Description
	  semop is used to automatically perform an array of semaphore
	  operations on the set of semaphores associated with the
	  semaphore identifier specified by semid.  sops is a pointer
	  to the array of semaphore-operation structures.  nsops is
	  the number of such structures in the array.  The contents of
	  each structure includes the following members:

	       short   sem_num;	   /* semaphore number */
	       short   sem_op;	   /* semaphore operation */
	       short   sem_flg;	   /* operation flags */

	  Each semaphore operation specified by sem_op is performed on
	  the corresponding semaphore specified by semid and sem_num.

	  sem_op specifies one of three semaphore operations as
	  follows:

		  If sem_op is a negative integer, one of the
		  following will occur:

		       If semval (see intro(S)) is greater than or
		       equal to the absolute value of sem_op, the
		       absolute value of sem_op is subtracted from
		       semval.	Also, if (sem_flg & SEM_UNDO) is
		       ``true'', the absolute value of sem_op is added
		       to the calling process' semadj value (see
		       exit(S)) for the specified semaphore.

		       If semval is less than the absolute value of
		       sem_op and (sem_flg & IPC_NOWAIT) is ``true'',
		       semop will return immediately.

		       If semval is less than the absolute value of
		       sem_op and (sem_flg & IPC_NOWAIT) is ``false'',
		       semop will increment the semncnt associated
		       with the specified semaphore and suspend
		       execution of the calling process until one of
		       the following conditions occur.

     Page 1					      (printed 8/7/87)

     SEMOP(S)		      XENIX System V		      SEMOP(S)

			  semval becomes greater than or equal to the
			  absolute value of sem_op.  When this occurs,
			  the value of semncnt ssociated with the
			  specified semaphore is decremented, the
			  absolute value of sem_op is subtracted from
			  semval and, if (sem_flg & SEM_UNDO) is
			  ``true'', the absolute value of sem_op is
			  added to the calling process' semadj value
			  for the specified semaphore.

			  The semid for which the calling process is
			  awaiting action is removed from the system
			  (see semctl(S)).  When this occurs, errno is
			  set equal to EIDRM, and a value of -1 is
			  returned.

			  The calling process receives a signal that
			  is to be caught.  When this occurs, the
			  value of semncnt associated with the
			  specified semaphore is decremented, and the
			  calling process resumes execution in the
			  manner prescribed in signal(S).

		  If sem_op is a positive integer, the value of sem_op
		  is added to semval and, if (sem_flg & SEM_UNDO) is
		  ``true'', the value of sem_op is subtracted from the
		  calling process' semadj value for the specified
		  semaphore.

		  If sem_op is zero, one of the following will occur:

		       If semval is zero, semop will return
		       immediately.

		       If semval is not equal to zero and (sem_flg &
		       IPC_NOWAIT) is ``true'', semop will return
		       immediately.

		       If semval is not equal to zero and (sem_flg &
		       IPC_NOWAIT) is ``false'', semop will increment
		       the semzcnt associated with the specified
		       semaphore and suspend execution of the calling
		       process until one of the following occurs:

			  semval becomes zero, at which time the value
			  of semzcnt associated with the specified
			  semaphore is decremented.

			  The semid for which the calling process is
			  awaiting action is removed from the system.
			  When this occurs, errno is set equal to
			  EIDRM, and a value of -1 is returned.

     Page 2					      (printed 8/7/87)

     SEMOP(S)		      XENIX System V		      SEMOP(S)

			  The calling process receives a signal that
			  is to be caught.  When this occurs, the
			  value of semzcnt associated with the
			  specified semaphore is decremented, and the
			  calling process resumes execution in the
			  manner prescribed in signal(S).

	  semop will fail if one or more of the following are true for
	  any of the semaphore operations specified by sops:

	       semid is not a valid semaphore identifier.  [EINVAL]

	       sem_num is less than zero or greater than or equal to
	       the number of semaphores in the set associated with
	       semid.  [EFBIG]

	       nsops is greater than the system-imposed maximum.
	       [E2BIG]

	       Operation permission is denied to the calling process
	       (see intro(S)).	[EACCES]

	       The operation would result in suspension of the calling
	       process but (sem_flg & IPC_NOWAIT) is ``true''.
	       [EAGAIN]

	       The limit on the number of individual  processes
	       requesting a SEM_UNDO would be exceeded.	 [ENOSPC]

	       The number of individual semaphores for which the
	       calling process requests a SEM_UNDO would exceed the
	       limit.  [EINVAL]

	       An operation would cause a semval to overflow the
	       system-imposed limit.  [ERANGE]

	       An operation would cause a semadj value to overflow the
	       system-imposed limit.  [ERANGE]

	       sops points to an illegal address.  [EFAULT]

	  Upon successful completion, the value of semid for each
	  semaphore specified in the array pointed to by sops is set
	  equal to the process ID of the calling process.

     Return Value
	  If semop returns due to the receipt of a signal, a value of
	  -1 is returned to the calling process and errno is set to
	  EINTR.  If it returns due to the removal of a semid from the
	  system, a value of -1 is returned and errno is set to EIDRM.

	  Upon successful completion, a value of 0 is returned.

     Page 3					      (printed 8/7/87)

     SEMOP(S)		      XENIX System V		      SEMOP(S)

	  Otherwise, a value of -1 is returned and errno is set to
	  indicate the error.

     See Also
	  exec(S), exit(S), fork(S), intro(S), semctl(S), semget(S),
	  signal(S)

     Notes
	  If SEMVMX = 32767, semop will not be able to make semval
	  overflow the limit (ERANGE) because sem_op_ +32768 (signed
	  short) looks like negative sem_op.  Therefore, it will not
	  increase semval to put it over the limit; instead, it will
	  try to subtract _ 32768 from semval (EAGAIN).	 Programs
	  using this function must be compiled with the -Me compiler
	  option.

     Page 4					      (printed 8/7/87)

[top]
                             _         _         _ 
                            | |       | |       | |     
                            | |       | |       | |     
                         __ | | __ __ | | __ __ | | __  
                         \ \| |/ / \ \| |/ / \ \| |/ /  
                          \ \ / /   \ \ / /   \ \ / /   
                           \   /     \   /     \   /    
                            \_/       \_/       \_/ 
More information is available in HTML format for server Xenix

List of man pages available for Xenix

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net