pthread_spin_init(3)
NAME
- pthread_spin_init, pthread_spin_destroy - initialize or de
- stroy a spin lock
LIBRARY
library ``libpthread'' library ``libthr''
SYNOPSIS
#include <pthread.h> int pthread_spin_init(pthread_spinlock_t *lock, int pshared); int pthread_spin_destroy(pthread_spinlock_t *lock);
DESCRIPTION
- The pthread_spin_init() function will initialize lock to an
- unlocked state and allocate any resources necessary to begin using
- it. If pshared is set to PTHREAD_PROCESS_SHARED, any thread, whether be
- longing to the process in which the spinlock was created or not, that has
- access to the memory area where lock resides, can use lock. If it is set
- to PTHREAD_PROCESS_PRIVATE, it can only be used by threads
- within the same process.
- The pthread_spin_destroy() function will destroy lock and
- release any resources that may have been allocated on its behalf.
RETURN VALUES
- If successful, both pthread_spin_init() and
- pthread_spin_destroy() will return zero. Otherwise, an error number will be returned to
- indicate the error.
- Neither of these functions will return EINTR.
ERRORS
- The pthread_spin_init() and pthread_spin_destroy() functions
- will fail if:
- [EBUSY] An attempt to initialize or destroy lock
- while it is
- in use.
- [EINVAL] The value specified by lock is invalid.
- The pthread_spin_init() function will fail if:
- [EAGAIN] Insufficient resources, other than memo
- ry, to initial
- ize lock.
- [ENOMEM] Insufficient memory to initialize lock.
SEE ALSO
pthread_spin_lock(3), pthread_spin_unlock(3)
HISTORY
- The pthread_spin_init() and pthread_spin_destroy() functions
- first appeared in library ``libpthread'' in FreeBSD 5.2, and in
- library ``libthr'' in FreeBSD 5.3.
BUGS
- The implementation of pthread_spin_init() does not fully
- conform to IEEE Std 1003.2 (``POSIX.2'') because the pshared argument is ig
- nored in library ``libthr'', and in library ``libpthread'' if any
- value other than PTHREAD_PROCESSES_PRIVATE is specified, it returns EINVAL.
- BSD January 22, 2004