summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--share/man/man9/spinlock.971
1 files changed, 71 insertions, 0 deletions
diff --git a/share/man/man9/spinlock.9 b/share/man/man9/spinlock.9
new file mode 100644
index 0000000..26cdc31
--- /dev/null
+++ b/share/man/man9/spinlock.9
@@ -0,0 +1,71 @@
+.\" Copyright (c) 2023-2024 Ian Marco Moffett and the Osmora Team.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are met:
+.\"
+.\" 1. Redistributions of source code must retain the above copyright notice,
+.\" this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of Hyra nor the names of its
+.\" contributors may be used to endorse or promote products derived from
+.\" this software without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+.\" POSSIBILITY OF SUCH DAMAGE.
+.Dd Dec 16 2024
+.Dt SPINLOCK 9
+.Os Hyra
+.Sh NAME
+.Nm spinlock - generic spinlock for syncronization
+.Sh SYNOPSIS
+.In sys/spinlock.h
+
+.Ft void
+.Fn spinlock_acquire "struct spinlock *lock"
+.Ft void
+.Fn spinlock_release "struct spinlock *lock"
+.Ft int
+.Fn spinlock_usleep "struct spinlock *lock" "size_t usec_max"
+.Sh DESCRIPTION
+
+The set of functions provide a simple spin-based locking mechanism
+to ensure mutual exclusion between threads.
+
+The
+.Ft spinlock_acquire
+function is used to acquire a spinlock pointed to by
+.Fa lock .
+If the lock is unavailable (being held by another thread), it
+will wait until the lock owner releases it.
+
+The
+.Ft spinlock_release
+function is used to release a spinlock pointed to by
+.Fa lock .
+This allows other threads to hold it.
+
+The
+.Ft spinlock_usleep
+function attempts to acquire a spinlock pointed to by
+.Fa lock .
+If the lock is unavailable, it waits up to a maximum
+duration of
+.Fa usec_max
+microseconds. If the lock is still being held, it will return
+a non-zero value indicating a timeout. If the lock is successfully
+acquired, a value of 0 is returned.
+
+.Sh AUTHORS
+.An Ian Moffett Aq Mt ian@osmora.org