summaryrefslogtreecommitdiffstats
path: root/man/man3/pthread_spin_lock.3
diff options
context:
space:
mode:
Diffstat (limited to 'man/man3/pthread_spin_lock.3')
-rw-r--r--man/man3/pthread_spin_lock.3102
1 files changed, 102 insertions, 0 deletions
diff --git a/man/man3/pthread_spin_lock.3 b/man/man3/pthread_spin_lock.3
new file mode 100644
index 000000000..bed98a9ec
--- /dev/null
+++ b/man/man3/pthread_spin_lock.3
@@ -0,0 +1,102 @@
+.\" Copyright (c) 2017, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH pthread_spin_lock 3 (date) "Linux man-pages (unreleased)"
+.SH NAME
+pthread_spin_lock, pthread_spin_trylock, pthread_spin_unlock \-
+lock and unlock a spin lock
+.SH LIBRARY
+POSIX threads library
+.RI ( libpthread ", " \-lpthread )
+.SH SYNOPSIS
+.nf
+.B #include <pthread.h>
+.P
+.BI "int pthread_spin_lock(pthread_spinlock_t *" lock );
+.BI "int pthread_spin_trylock(pthread_spinlock_t *" lock );
+.BI "int pthread_spin_unlock(pthread_spinlock_t *" lock );
+.fi
+.P
+.RS -4
+Feature Test Macro Requirements for glibc (see
+.BR feature_test_macros (7)):
+.RE
+.P
+.BR pthread_spin_lock (),
+.BR pthread_spin_trylock ():
+.nf
+ _POSIX_C_SOURCE >= 200112L
+.fi
+.SH DESCRIPTION
+The
+.BR pthread_spin_lock ()
+function locks the spin lock referred to by
+.IR lock .
+If the spin lock is currently unlocked,
+the calling thread acquires the lock immediately.
+If the spin lock is currently locked by another thread,
+the calling thread spins, testing the lock until it becomes available,
+at which point the calling thread acquires the lock.
+.P
+Calling
+.BR pthread_spin_lock ()
+on a lock that is already held by the caller
+or a lock that has not been initialized with
+.BR pthread_spin_init (3)
+results in undefined behavior.
+.P
+The
+.BR pthread_spin_trylock ()
+function is like
+.BR pthread_spin_lock (),
+except that if the spin lock referred to by
+.I lock
+is currently locked,
+then, instead of spinning, the call returns immediately with the error
+.BR EBUSY .
+.P
+The
+.BR pthread_spin_unlock ()
+function unlocks the spin lock referred to
+.IR lock .
+If any threads are spinning on the lock,
+one of those threads will then acquire the lock.
+.P
+Calling
+.BR pthread_spin_unlock ()
+on a lock that is not held by the caller results in undefined behavior.
+.SH RETURN VALUE
+On success, these functions return zero.
+On failure, they return an error number.
+.SH ERRORS
+.BR pthread_spin_lock ()
+may fail with the following errors:
+.TP
+.B EDEADLOCK
+.\" Not detected in glibc
+The system detected a deadlock condition.
+.P
+.BR pthread_spin_trylock ()
+fails with the following errors:
+.TP
+.B EBUSY
+The spin lock is currently locked by another thread.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.2.
+POSIX.1-2001.
+.SH CAVEATS
+Applying any of the functions described on this page to
+an uninitialized spin lock results in undefined behavior.
+.P
+Carefully read NOTES in
+.BR pthread_spin_init (3).
+.SH SEE ALSO
+.ad l
+.nh
+.\" FIXME . .BR pthread_mutex_lock (3),
+.BR pthread_spin_destroy (3),
+.BR pthread_spin_init (3),
+.BR pthreads (7)