From b4ea35986c4ccb3f96c23bffe9a5a539b9dec148 Mon Sep 17 00:00:00 2001 From: Ian Moffett Date: Mon, 16 Dec 2024 01:34:34 -0500 Subject: docs: man: Add spinlock(9) Signed-off-by: Ian Moffett --- share/man/man9/spinlock.9 | 71 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 share/man/man9/spinlock.9 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 -- cgit v1.2.3