summaryrefslogtreecommitdiff
path: root/static/openbsd/man3/pthread_mutex_init.3
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:54:44 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:54:44 -0400
commita9157ce950dfe2fc30795d43b9d79b9d1bffc48b (patch)
tree9df484304b560466d145e662c1c254ff0e9ae0ba /static/openbsd/man3/pthread_mutex_init.3
parent160aa82b2d39c46ad33723d7d909cb4972efbb03 (diff)
docs: Added All OpenBSD Manuals
Diffstat (limited to 'static/openbsd/man3/pthread_mutex_init.3')
-rw-r--r--static/openbsd/man3/pthread_mutex_init.3235
1 files changed, 235 insertions, 0 deletions
diff --git a/static/openbsd/man3/pthread_mutex_init.3 b/static/openbsd/man3/pthread_mutex_init.3
new file mode 100644
index 00000000..22bf16e4
--- /dev/null
+++ b/static/openbsd/man3/pthread_mutex_init.3
@@ -0,0 +1,235 @@
+.\" $OpenBSD: pthread_mutex_init.3,v 1.16 2025/07/25 20:01:28 tedu Exp $
+.\"
+.\" Copyright (c) 1997 Brian Cully <shmit@kublai.com>
+.\" 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 the author nor the names of any co-contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY JOHN BIRRELL 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 REGENTS 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.
+.\"
+.\" $FreeBSD: pthread_mutex_init.3,v 1.6 1999/08/28 00:03:07 peter Exp $
+.\" $FreeBSD: pthread_mutex_destroy.3,v 1.5 1999/08/28 00:03:07 peter Exp $
+.\" $FreeBSD: pthread_mutex_lock.3,v 1.5 1999/08/28 00:03:07 peter Exp $
+.\" $FreeBSD: pthread_mutex_unlock.3,v 1.5 1999/08/28 00:03:08 peter Exp $
+.\"
+.Dd $Mdocdate: July 25 2025 $
+.Dt PTHREAD_MUTEX_INIT 3
+.Os
+.Sh NAME
+.Nm pthread_mutex_init ,
+.Nm pthread_mutex_destroy ,
+.Nm pthread_mutex_lock ,
+.Nm pthread_mutex_timedlock ,
+.Nm pthread_mutex_trylock ,
+.Nm pthread_mutex_unlock
+.Nd operations on mutex variables
+.Sh SYNOPSIS
+.Lb libpthread
+.In pthread.h
+.Ft int
+.Fo pthread_mutex_init
+.Fa "pthread_mutex_t *mutex"
+.Fa "const pthread_mutexattr_t *attr"
+.Fc
+.Ft int
+.Fo pthread_mutex_destroy
+.Fa "pthread_mutex_t *mutex"
+.Fc
+.Ft int
+.Fo pthread_mutex_lock
+.Fa "pthread_mutex_t *mutex"
+.Fc
+.Ft int
+.Fo pthread_mutex_timedlock
+.Fa "pthread_mutex_t *mutex"
+.Fa "const struct timespec *abstime"
+.Fc
+.Ft int
+.Fo pthread_mutex_trylock
+.Fa "pthread_mutex_t *mutex"
+.Fc
+.Ft int
+.Fo pthread_mutex_unlock
+.Fa "pthread_mutex_t *mutex"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn pthread_mutex_init
+function creates a new mutex, with attributes specified with
+.Fa attr .
+If
+.Fa attr
+is
+.Dv NULL
+the default attributes are used, otherwise
+.Fa attr
+should be initialized by calling
+.Xr pthread_mutexattr_init 3 .
+.Pp
+A mutex may also be initialized by assignment with the macro
+PTHREAD_MUTEX_INITIALIZER.
+.Pp
+The
+.Fn pthread_mutex_destroy
+function frees the resources allocated for
+.Fa mutex .
+.Pp
+The
+.Fn pthread_mutex_lock
+function locks
+.Fa mutex .
+If the mutex is currently locked by another thread,
+the calling thread will block until the
+mutex becomes available.
+.Pp
+If the mutex is currently locked by the calling thread,
+then the behavior depends on the type of the mutex.
+If
+.Fa mutex
+is of type
+.Dv PTHREAD_MUTEX_NORMAL ,
+then the calling thread will deadlock and never return from
+.Fn pthread_mutex_lock .
+If
+.Fa mutex
+is of type
+.Dv PTHREAD_MUTEX_ERRORCHECK ,
+then
+.Er EDEADLK
+is immediately returned.
+If
+.Fa mutex
+is of type
+.Dv PTHREAD_MUTEX_RECURSIVE ,
+then the recursion count on the mutex is incremented.
+.Pp
+The
+.Fn pthread_mutex_timedlock
+function locks
+.Fa mutex
+like
+.Fn pthread_mutex_lock
+except that it will not block or deadlock past the system time
+specified in
+.Fa abstime .
+.Pp
+The
+.Fn pthread_mutex_trylock
+function locks
+.Fa mutex
+like
+.Fn pthread_mutex_lock
+except that if
+.Fa mutex
+is locked by another thread,
+or is locked by the calling thread and is not of type
+.Dv PTHREAD_MUTEX_RECURSIVE ,
+then it will immediately return
+.Er EBUSY .
+.Pp
+The
+.Fn pthread_mutex_unlock
+function unlocks the previously locked
+.Fa mutex .
+.Sh RETURN VALUES
+These functions return zero for success and positive error numbers
+for failure.
+.Sh ERRORS
+.Fn pthread_mutex_init
+fails if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The value specified by
+.Fa attr
+is invalid.
+.It Bq Er ENOMEM
+The process cannot allocate enough memory to create another mutex.
+.El
+.Pp
+The other functions fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The value specified by
+.Fa mutex
+is invalid.
+.El
+.Pp
+.Fn pthread_mutex_destroy
+fails if:
+.Bl -tag -width Er
+.It Bq Er EBUSY
+.Fa mutex
+is locked or referenced by another thread.
+.El
+.Pp
+.Fn pthread_mutex_lock ,
+.Fn pthread_mutex_timedlock ,
+and
+.Fn pthread_mutex_trylock
+fail if:
+.Bl -tag -width Er
+.It Bq Er EAGAIN
+The mutex is of type
+.Dv PTHREAD_MUTEX_RECURSIVE
+and the maximum recursion count has been reached.
+.El
+.Pp
+.Fn pthread_mutex_lock
+and
+.Fn pthread_mutex_timedlock
+fail if:
+.Bl -tag -width Er
+.It Bq Er EDEADLK
+The mutex is of type
+.Dv PTHREAD_MUTEX_ERRORCHECK
+and is already locked by the calling thread.
+.El
+.Pp
+.Fn pthread_mutex_timedlock
+fails if:
+.Bl -tag -width Er
+.It Bq Er ETIMEDOUT
+The mutex could not be locked and the specified time was reached.
+.El
+.Pp
+.Fn pthread_mutex_trylock
+fails if:
+.Bl -tag -width Er
+.It Bq Er EBUSY
+The mutex could not be locked because it was already locked.
+.El
+.Pp
+.Fn pthread_mutex_unlock
+fails if:
+.Bl -tag -width Er
+.It Bq Er EPERM
+The current thread does not hold a lock on
+.Fa mutex .
+.El
+.Sh SEE ALSO
+.Xr pthread_mutexattr_init 3 ,
+.Xr pthreads 3
+.Sh STANDARDS
+These functions conform to
+.St -p1003.1-2024 .
+Raising an error for invalid arguments is an extension.