Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

sema(9) [v7 man page]

SEMA(9) 						   BSD Kernel Developer's Manual						   SEMA(9)

NAME
sema, sema_init, sema_destroy, sema_post, sema_wait, sema_timedwait, sema_trywait, sema_value -- kernel counting semaphore SYNOPSIS
#include <sys/types.h> #include <sys/lock.h> #include <sys/sema.h> void sema_init(struct sema *sema, int value, const char *description); void sema_destroy(struct sema *sema); void sema_post(struct sema *sema); void sema_wait(struct sema *sema); int sema_timedwait(struct sema *sema, int timo); int sema_trywait(struct sema *sema); int sema_value(struct sema *sema); DESCRIPTION
Counting semaphores provide a mechanism for synchronizing access to a pool of resources. Unlike mutexes, semaphores do not have the concept of an owner, so they can also be useful in situations where one thread needs to acquire a resource, and another thread needs to release it. Each semaphore has an integer value associated with it. Posting (incrementing) always succeeds, but waiting (decrementing) can only success- fully complete if the resulting value of the semaphore is greater than or equal to zero. Semaphores should not be used where mutexes and condition variables will suffice. Semaphores are a more complex synchronization mechanism than mutexes and condition variables, and are not as efficient. Semaphores are created with sema_init(), where sema is a pointer to space for a struct sema, value is the initial value of the semaphore, and description is a pointer to a null-terminated character string that describes the semaphore. Semaphores are destroyed with sema_destroy(). A semaphore is posted (incremented) with sema_post(). A semaphore is waited on (decremented) with sema_wait(), sema_timedwait(), or sema_trywait(). The timo argument to sema_timedwait() specifies the minimum time in ticks to wait before returning with failure. sema_value() is used to read the current value of the semaphore. RETURN VALUES
The sema_value() function returns the current value of the semaphore. If decrementing the semaphore would result in its value being negative, sema_trywait() returns 0 to indicate failure. Otherwise, a non-zero value is returned to indicate success. The sema_timedwait() function returns 0 if waiting on the semaphore succeeded; otherwise a non-zero error code is returned. ERRORS
The sema_timedwait() function will fail if: [EWOULDBLOCK] Timeout expired. SEE ALSO
condvar(9), locking(9), mtx_pool(9), mutex(9), rwlock(9), sx(9) BSD
February 1, 2006 BSD

Check Out this Related Man Page

SEMA(9) 						   BSD Kernel Developer's Manual						   SEMA(9)

NAME
sema, sema_init, sema_destroy, sema_post, sema_wait, sema_timedwait, sema_trywait, sema_value -- kernel counting semaphore SYNOPSIS
#include <sys/types.h> #include <sys/lock.h> #include <sys/sema.h> void sema_init(struct sema *sema, int value, const char *description); void sema_destroy(struct sema *sema); void sema_post(struct sema *sema); void sema_wait(struct sema *sema); int sema_timedwait(struct sema *sema, int timo); int sema_trywait(struct sema *sema); int sema_value(struct sema *sema); DESCRIPTION
Counting semaphores provide a mechanism for synchronizing access to a pool of resources. Unlike mutexes, semaphores do not have the concept of an owner, so they can also be useful in situations where one thread needs to acquire a resource, and another thread needs to release it. Each semaphore has an integer value associated with it. Posting (incrementing) always succeeds, but waiting (decrementing) can only success- fully complete if the resulting value of the semaphore is greater than or equal to zero. Semaphores should not be used where mutexes and condition variables will suffice. Semaphores are a more complex synchronization mechanism than mutexes and condition variables, and are not as efficient. Semaphores are created with sema_init(), where sema is a pointer to space for a struct sema, value is the initial value of the semaphore, and description is a pointer to a null-terminated character string that describes the semaphore. Semaphores are destroyed with sema_destroy(). A semaphore is posted (incremented) with sema_post(). A semaphore is waited on (decremented) with sema_wait(), sema_timedwait(), or sema_trywait(). The timo argument to sema_timedwait() specifies the minimum time in ticks to wait before returning with failure. sema_value() is used to read the current value of the semaphore. RETURN VALUES
The sema_value() function returns the current value of the semaphore. If decrementing the semaphore would result in its value being negative, sema_trywait() returns 0 to indicate failure. Otherwise, a non-zero value is returned to indicate success. The sema_timedwait() function returns 0 if waiting on the semaphore succeeded; otherwise a non-zero error code is returned. ERRORS
The sema_timedwait() function will fail if: [EWOULDBLOCK] Timeout expired. SEE ALSO
condvar(9), locking(9), mtx_pool(9), mutex(9), rwlock(9), sx(9) BSD
February 1, 2006 BSD
Man Page