summaryrefslogtreecommitdiff
path: root/usr/src/man/man5/mutex.5
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/man/man5/mutex.5')
-rw-r--r--usr/src/man/man5/mutex.5177
1 files changed, 0 insertions, 177 deletions
diff --git a/usr/src/man/man5/mutex.5 b/usr/src/man/man5/mutex.5
deleted file mode 100644
index aafa52aa7a..0000000000
--- a/usr/src/man/man5/mutex.5
+++ /dev/null
@@ -1,177 +0,0 @@
-.\"
-.\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for
-.\" permission to reproduce portions of its copyrighted documentation.
-.\" Original documentation from The Open Group can be obtained online at
-.\" http://www.opengroup.org/bookstore/.
-.\"
-.\" The Institute of Electrical and Electronics Engineers and The Open
-.\" Group, have given us permission to reprint portions of their
-.\" documentation.
-.\"
-.\" In the following statement, the phrase ``this text'' refers to portions
-.\" of the system documentation.
-.\"
-.\" Portions of this text are reprinted and reproduced in electronic form
-.\" in the SunOS Reference Manual, from IEEE Std 1003.1, 2004 Edition,
-.\" Standard for Information Technology -- Portable Operating System
-.\" Interface (POSIX), The Open Group Base Specifications Issue 6,
-.\" Copyright (C) 2001-2004 by the Institute of Electrical and Electronics
-.\" Engineers, Inc and The Open Group. In the event of any discrepancy
-.\" between these versions and the original IEEE and The Open Group
-.\" Standard, the original IEEE and The Open Group Standard is the referee
-.\" document. The original Standard can be obtained online at
-.\" http://www.opengroup.org/unix/online.html.
-.\"
-.\" This notice shall appear on any product containing this material.
-.\"
-.\" The contents of this file are subject to the terms of the
-.\" Common Development and Distribution License (the "License").
-.\" You may not use this file except in compliance with the License.
-.\"
-.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-.\" or http://www.opensolaris.org/os/licensing.
-.\" See the License for the specific language governing permissions
-.\" and limitations under the License.
-.\"
-.\" When distributing Covered Code, include this CDDL HEADER in each
-.\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-.\" If applicable, add the following below this CDDL HEADER, with the
-.\" fields enclosed by brackets "[]" replaced with your own identifying
-.\" information: Portions Copyright [yyyy] [name of copyright owner]
-.\"
-.\"
-.\" Portions Copyright (c) 1995 IEEE All Rights Reserved.
-.\" Copyright (c) 1998 Sun Microsystems, Inc. All Rights Reserved.
-.\" Copyright (c) 2001, The IEEE and The Open Group. All Rights Reserved.
-.\"
-.TH MUTEX 5 "Jun 5, 2007"
-.SH NAME
-mutex \- concepts relating to mutual exclusion locks
-.SH DESCRIPTION
-.sp
-.LP
-Mutual exclusion locks (mutexes) prevent multiple threads from simultaneously
-executing critical sections of code which access shared data (that is, mutexes
-are used to serialize the execution of threads). All mutexes must be global. A
-successful call to acquire a mutex will cause another thread that is also
-trying to lock the same mutex to block until the owner thread unlocks the
-mutex.
-.sp
-.LP
-Mutexes can synchronize threads within the same process or in other processes.
-Mutexes can be used to synchronize threads between processes if the mutexes are
-allocated in writable memory and shared among the cooperating processes (see
-\fBmmap\fR(2)), and have been initialized for this task.
-.sp
-.LP
-The following table lists mutex functions and the actions they perform.
-.sp
-
-.sp
-.TS
-box;
-c | c
-l | l .
-FUNCTION ACTION
-_
-\fBmutex_init\fR Initialize a mutex.
-\fBmutex_destroy\fR Destroy a mutex.
-\fBmutex_lock\fR Lock a mutex.
-\fBmutex_trylock\fR Attempt to lock a mutex.
-\fBmutex_unlock\fR Unlock a mutex.
-\fBpthread_mutex_init\fR Initialize a mutex.
-\fBpthread_mutex_destroy\fR Destroy a mutex.
-\fBpthread_mutex_lock\fR Lock a mutex.
-\fBpthread_mutex_trylock\fR Attempt to lock a mutex.
-\fBpthread_mutex_unlock\fR Unlock a mutex.
-.TE
-
-.SS "Initialization"
-.sp
-.LP
-Mutexes are either intra-process or inter-process, depending upon the argument
-passed implicitly or explicitly to the initialization of that mutex. A
-statically allocated mutex does not need to be explicitly initialized; by
-default, a statically allocated mutex is initialized with all zeros and its
-scope is set to be within the calling process.
-.sp
-.LP
-For inter-process synchronization, a mutex needs to be allocated in memory
-shared between these processes. Since the memory for such a mutex must be
-allocated dynamically, the mutex needs to be explicitly initialized with the
-appropriate attribute that indicates inter-process use.
-.SS "Locking and Unlocking"
-.sp
-.LP
-A critical section of code is enclosed by a call to lock the mutex and the call
-to unlock the mutex to protect it from simultaneous access by multiple threads.
-Only one thread at a time may possess mutually exclusive access to the critical
-section of code that is enclosed by the mutex-locking call and the
-mutex-unlocking call, whether the mutex's scope is intra-process or
-inter-process. A thread calling to lock the mutex either gets exclusive access
-to the code starting from the successful locking until its call to unlock the
-mutex, or it waits until the mutex is unlocked by the thread that locked it.
-.sp
-.LP
-Mutexes have ownership, unlike semaphores. Only the thread that locked a mutex,
-(that is, the owner of the mutex), should unlock it.
-.sp
-.LP
-If a thread waiting for a mutex receives a signal, upon return from the signal
-handler, the thread resumes waiting for the mutex as if there was no interrupt.
-.SS "Caveats"
-.sp
-.LP
-Mutexes are almost like data - they can be embedded in data structures, files,
-dynamic or static memory, and so forth. Hence, they are easy to introduce into
-a program. However, too many mutexes can degrade performance and scalability of
-the application. Because too few mutexes can hinder the concurrency of the
-application, they should be introduced with care. Also, incorrect usage (such
-as recursive calls, or violation of locking order, and so forth) can lead to
-deadlocks, or worse, data inconsistencies.
-.SH ATTRIBUTES
-.sp
-.LP
-See \fBattributes\fR(5) for descriptions of the following attributes:
-.sp
-
-.sp
-.TS
-box;
-c | c
-l | l .
-ATTRIBUTE TYPE ATTRIBUTE VALUE
-_
-MT-Level MT-Safe
-.TE
-
-.SH SEE ALSO
-.sp
-.LP
-\fBmmap\fR(2), \fBshmop\fR(2), \fBmutex_destroy\fR(3C), \fBmutex_init\fR(3C),
-\fBmutex_lock\fR(3C), \fBmutex_trylock\fR(3C), \fBmutex_unlock\fR(3C),
-\fBpthread_create\fR(3C), \fBpthread_mutex_destroy\fR(3C),
-\fBpthread_mutex_init\fR(3C), \fBpthread_mutex_lock\fR(3C),
-\fBpthread_mutex_trylock\fR(3C), \fBpthread_mutex_unlock\fR(3C),
-\fBpthread_mutexattr_init\fR(3C), \fBattributes\fR(5), \fBstandards\fR(5)
-.SH NOTES
-.sp
-.LP
-In the current implementation of threads, \fBpthread_mutex_lock()\fR,
-\fBpthread_mutex_unlock()\fR, \fBmutex_lock()\fR \fBmutex_unlock()\fR,
-\fBpthread_mutex_trylock()\fR, and \fBmutex_trylock()\fR do not validate the
-mutex type. Therefore, an uninitialized mutex or a mutex with an invalid type
-does not return \fBEINVAL\fR. Interfaces for mutexes with an invalid type have
-unspecified behavior.
-.sp
-.LP
-By default, if multiple threads are waiting for a mutex, the order of
-acquisition is undefined.
-.sp
-.LP
-The system does not support multiple mappings to the same logical synch object
-if it is initialized as process-private (\fBUSYNC_THREAD\fR for Solaris,
-\fBPTHREAD_PROCESS_PRIVATE\fR for POSIX). If you need to \fBmmap\fR(2)a synch
-object to different locations within the same address space, then the synch
-object should be initialized as a shared object (\fBUSYNC_PROCESS\fR for
-Solaris, \fBPTHREAD_PROCESS_SHARED\fR for POSIX).