IPnom Home • Manuals • FreeBSD

 FreeBSD Man Pages

Man Sections:Commands (1)System Calls (2)Library Functions (3)Device Drivers (4)File Formats (5)Miscellaneous (7)System Utilities (8)
Keyword Live Search (10 results max):
 Type in part of a command in the search box.
 
Index:
  __syscall(2)
  _exit(2)
  accept(2)
  access(2)
  acct(2)
  adjtime(2)
  aio_cancel(2)
  aio_error(2)
  aio_read(2)
  aio_return(2)
  aio_suspend(2)
  aio_waitcomplete(2)
  aio_write(2)
  bind(2)
  brk(2)
  chdir(2)
  chflags(2)
  chmod(2)
  chown(2)
  chroot(2)
  clock_getres(2)
  clock_gettime(2)
  clock_settime(2)
  close(2)
  connect(2)
  creat(2)
  dup(2)
  dup2(2)
  eaccess(2)
  errno(2)
  execve(2)
  extattr(2)
  extattr_delete_fd(2)
  extattr_delete_file(2)
  extattr_get_fd(2)
  extattr_get_file(2)
  extattr_set_fd(2)
  extattr_set_file(2)
  fchdir(2)
  fchflags(2)
  fchmod(2)
  fchown(2)
  fcntl(2)
  fhopen(2)
  fhstat(2)
  fhstatfs(2)
  flock(2)
  fork(2)
  fpathconf(2)
  fstat(2)
  fstatfs(2)
  fsync(2)
  ftruncate(2)
  futimes(2)
  getdents(2)
  getdirentries(2)
  getdtablesize(2)
  getegid(2)
  geteuid(2)
  getfh(2)
  getfsstat(2)
  getgid(2)
  getgroups(2)
  getitimer(2)
  getlogin(2)
  getpeername(2)
  getpgid(2)
  getpgrp(2)
  getpid(2)
  getppid(2)
  getpriority(2)
  getresgid(2)
  getresuid(2)
  getrlimit(2)
  getrusage(2)
  getsid(2)
  getsockname(2)
  getsockopt(2)
  gettimeofday(2)
  getuid(2)
  i386_get_ioperm(2)
  i386_get_ldt(2)
  i386_set_ioperm(2)
  i386_set_ldt(2)
  i386_vm86(2)
  intro(2)
  ioctl(2)
  issetugid(2)
  jail(2)
  jail_attach(2)
  kenv(2)
  kevent(2)
  kill(2)
  killpg(2)
  kldfind(2)
  kldfirstmod(2)
  kldload(2)
  kldnext(2)
  kldstat(2)
  kldsym(2)
  kldunload(2)
  kqueue(2)
  kse(2)
  kse_create(2)
  kse_exit(2)
  kse_release(2)
  kse_switchin(2)
  kse_thr_interrupt(2)
  kse_wakeup(2)
  ktrace(2)
  lchflags(2)
  lchmod(2)
  lchown(2)
  lgetfh(2)
  link(2)
  lio_listio(2)
  listen(2)
  lseek(2)
  lstat(2)
  lutimes(2)
  madvise(2)
  mincore(2)
  minherit(2)
  mkdir(2)
  mkfifo(2)
  mknod(2)
  mlock(2)
  mlockall(2)
  mmap(2)
  modfind(2)
  modfnext(2)
  modnext(2)
  modstat(2)
  mount(2)
  mprotect(2)
  msync(2)
  munlock(2)
  munlockall(2)
  munmap(2)
  nanosleep(2)
  nfssvc(2)
  nmount(2)
  ntp_adjtime(2)
  ntp_gettime(2)
  open(2)
  pathconf(2)
  pipe(2)
  poll(2)
  posix_madvise(2)
  pread(2)
  profil(2)
  ptrace(2)
  pwrite(2)
  quotactl(2)
  read(2)
  readlink(2)
  readv(2)
  reboot(2)
  recv(2)
  recvfrom(2)
  recvmsg(2)
  rename(2)
  revoke(2)
  rfork(2)
  rmdir(2)
  rtprio(2)
  sbrk(2)
  sched_get_priority_max(2)
  sched_get_priority_min(2)
  sched_getparam(2)
  sched_getscheduler(2)
  sched_rr_get_interval(2)
  sched_setparam(2)
  sched_setscheduler(2)
  sched_yield(2)
  select(2)
  semctl(2)
  semget(2)
  semop(2)
  send(2)
  sendfile(2)
  sendmsg(2)
  sendto(2)
  setegid(2)
  seteuid(2)
  setgid(2)
  setgroups(2)
  setitimer(2)
  setlogin(2)
  setpgid(2)
  setpgrp(2)
  setpriority(2)
  setregid(2)
  setresgid(2)
  setresuid(2)
  setreuid(2)
  setrlimit(2)
  setsid(2)
  setsockopt(2)
  settimeofday(2)
  setuid(2)
  shmat(2)
  shmctl(2)
  shmdt(2)
  shmget(2)
  shutdown(2)
  sigaction(2)
  sigaltstack(2)
  sigblock(2)
  sigmask(2)
  sigpause(2)
  sigpending(2)
  sigprocmask(2)
  sigreturn(2)
  sigsetmask(2)
  sigstack(2)
  sigsuspend(2)
  sigvec(2)
  sigwait(2)
  socket(2)
  socketpair(2)
  stat(2)
  statfs(2)
  swapoff(2)
  swapon(2)
  symlink(2)
  sync(2)
  sysarch(2)
  syscall(2)
  truncate(2)
  umask(2)
  undelete(2)
  unlink(2)
  unmount(2)
  utimes(2)
  utrace(2)
  uuidgen(2)
  vfork(2)
  wait(2)
  wait3(2)
  wait4(2)
  waitpid(2)
  write(2)
  writev(2)

semop(2)

NAME

     semop -- atomic array of operations on a semaphore set


LIBRARY

     Standard C Library (libc, -lc)


SYNOPSIS

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

     int
     semop(int semid, struct sembuf *array, size_t nops);


DESCRIPTION

     The semop() system call atomically performs the array of operations indi-
     cated by array on the semaphore set indicated by semid.  The length of
     array is indicated by nops.  Each operation is encoded in a struct
     sembuf, which is defined as follows:

     struct sembuf {
	     u_short sem_num;	     /* semaphore # */
	     short   sem_op;	     /* semaphore operation */
	     short   sem_flg;	     /* operation flags */
     };

     For each element in array, sem_op and sem_flg determine an operation to
     be performed on semaphore number sem_num in the set.  The values SEM_UNDO
     and IPC_NOWAIT may be OR'ed into the sem_flg member in order to modify
     the behavior of the given operation.

     The operation performed depends as follows on the value of sem_op:

     o	 When sem_op is positive and the process has alter permission, the
	 semaphore's value is incremented by sem_op's value.  If SEM_UNDO is
	 specified, the semaphore's adjust on exit value is decremented by
	 sem_op's value.  A positive value for sem_op generally corresponds to
	 a process releasing a resource associated with the semaphore.

     o	 The behavior when sem_op is negative and the process has alter per-
	 mission, depends on the current value of the semaphore:

	 o   If the current value of the semaphore is greater than or equal to
	     the absolute value of sem_op, then the value is decremented by
	     the absolute value of sem_op.  If SEM_UNDO is specified, the sem-
	     aphore's adjust on exit value is incremented by the absolute
	     value of sem_op.

	 o   If the current value of the semaphore is less than the absolute
	     value of sem_op, one of the following happens:

	     o	 If IPC_NOWAIT was specified, then semop() returns immediately
		 with a return value of EAGAIN.

	     o	 Otherwise, the calling process is put to sleep until one of
		 the following conditions is satisfied:

		 o   The semaphore's value is greater than or equal to the
		     absolute value of sem_op.	When this condition becomes
		     true, the semaphore's value is decremented by the abso-
		     lute value of sem_op, the semaphore's adjust on exit
		     value is incremented by the absolute value of sem_op.

	 A negative value for sem_op generally means that a process is waiting
	 for a resource to become available.

     o	 When sem_op is zero and the process has read permission, one of the
	 following will occur:

	 o   If the current value of the semaphore is equal to zero then
	     semop() can return immediately.

	 o   If IPC_NOWAIT was specified, then semop() returns immediately
	     with a return value of EAGAIN.

	 o   Otherwise, the calling process is put to sleep until one of the
	     following conditions is satisfied:

	     o	 Some other process removes the semaphore with the IPC_RMID
		 option of semctl(2).  In this case, semop() returns immedi-
		 ately with a return value of EIDRM.

	     o	 The process receives a signal that is to be caught.  In this
		 case, the process will resume execution as defined by
		 sigaction(2).

	     o	 The semaphore's value becomes zero.

     For each semaphore a process has in use, the kernel maintains an ``adjust
     on exit'' value, as alluded to earlier.  When a process exits, either
     voluntarily or involuntarily, the adjust on exit value for each semaphore
     is added to the semaphore's value.  This can be used to insure that a
     resource is released if a process terminates unexpectedly.


RETURN VALUES

     The semop() function returns the value 0 if successful; otherwise the
     value -1 is returned and the global variable errno is set to indicate the
     error.


ERRORS

     The semop() system call will fail if:

     [EINVAL]		No semaphore set corresponds to semid, or the process
			would exceed the system-defined limit for the number
			of per-process SEM_UNDO structures.

     [EACCES]		Permission denied due to mismatch between operation
			and mode of semaphore set.

     [EAGAIN]		The semaphore's value would have resulted in the
			process being put to sleep and IPC_NOWAIT was speci-
			fied.

     [E2BIG]		Too many operations were specified.  [SEMOPM]


     [ERANGE]		The requested operation would cause either the sema-
			phore's current value [SEMVMX] or its adjust on exit
			value [SEMAEM] to exceed the system-imposed limits.


SEE ALSO

     semctl(2), semget(2), sigaction(2)


BUGS

     The semop() system call may block waiting for memory even if IPC_NOWAIT
     was specified.

FreeBSD 5.4		      September 22, 1995		   FreeBSD 5.4

SPONSORED LINKS




Man(1) output converted with man2html , sed , awk