Lines Matching +full:wait +full:- +full:on +full:- +full:write

23 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 .St -p1003.1-2001
50 pthread locks, like mutexes, condition variables and so on.
54 syscall, operate on userspace objects which are described
57 All objects require ABI-mandated alignment, but this is not currently
58 enforced consistently on all architectures.
61 .Bl -tag -width indent
63 Allow selection of the process-shared sleep queue for the thread sleep
66 The process-shared or process-private sleep queue is selected based on
70 Otherwise, if the flag is not specified, the process-private sleep queue
75 subsection below for more details on sleep queues.
77 .Bl -hang -offset indent
79 .Bd -literal
93 The highest bit set indicates that there is contention on the lock.
95 .Bl -tag -width indent
104 The robust mutex is in a non-recoverable state.
110 field may contain the following umutex-specific flags, in addition to
112 .Bl -tag -width indent
126 Robust mutex is in a transient non-consistent state.
136 .Pq normal, priority-inherited, and priority-protected
146 .St -p1003.1-2008
161 should contain \-1.
164 .Bd -literal
172 A non-zero
174 value indicates that there are in-kernel waiters for the condition,
195 .Bl -bullet -compact
222 .Bd -literal
239 .Bl -tag -width indent
241 Write lock was granted.
243 There are write lock waiters.
251 is granted on the
256 threads may be granted the read lock simultaneously, but write lock is
264 .Bl -tag -width indent
268 is already read-locked, even in presence of unsatisfied write
270 By default, if there is a write lock waiter, further read requests are
271 not granted, to prevent unfair write lock waiter starvation.
288 .Bd -literal
298 A non-zero value indicates an unlocked (posted) semaphore, while zero
314 issued on the semaphore.
321 .Bl -tag -width indent
326 .Bd -literal
370 .Bl -tag -width indent
388 which is a non-runnable state terminated by the
410 .Em process-shared
426 The size of the variable does not matter, so, for example, sleep on the same
431 on a little-endian 64-bit platform would collide.
435 one for simple wait requests, mutexes, rwlocks, condvars and other
439 the highest priority threads that have been blocked for the longest on
451 On thread termination, the kernel walks two lists of mutexes.
455 The lists are singly-linked.
463 .Bl -dash -offset indent -compact
487 request is performed on it, but instead of the
515 .Bl -tag -width indent
517 Wait.
519 .Bl -tag -width "obj"
558 An unblocked signal delivered during the wait always results in sleep
568 .Bl -tag -width "obj"
582 .Bl -tag -width "obj"
595 .Bl -tag -width "obj"
604 The write is atomic, preserves the
613 Upon wake up, the lock conditions are re-tested.
625 An unblocked signal delivered during the wait always results in sleep
634 .Bl -tag -width "obj"
645 The write is done with a release barrier, to provide lock leave semantic.
651 bit is set together with the write of the
666 structure for additional details of the request operation on the
671 .Bl -tag -width "uaddr"
704 Wait for a condition.
706 .Bl -tag -width "uaddr2"
730 argument, is set to an arbitrary non-zero value, after which the
733 the current thread is put to sleep on the sleep queue keyed by
742 sent between mutex unlock and putting the current thread on the sleep queue.
753 .Bl -tag -width "CVWAIT_CLOCKID"
786 the wait always results in sleep interruption and
792 .Bl -tag -width "obj"
798 The request wakes up at most one thread sleeping on the sleep queue keyed
802 If the woken up thread was the last on the sleep queue, the
810 .Bl -tag -width "obj"
816 The request wakes up all threads sleeping on the sleep queue keyed by the
831 .Pq a 32-bit integer .
833 Read-lock a
837 .Bl -tag -width "obj"
841 to be read-locked.
847 .Bl -tag -width indent
852 The request obtains the read lock on the specified
873 the write lock on the same structure does not prevent the current thread
879 the current thread does not attempt to obtain read-lock.
884 word and puts itself to sleep on corresponding sleep queue.
885 Upon wakeup, the locking conditions are re-evaluated.
890 An unblocked signal delivered during the wait always results in sleep
895 Write-lock a
899 .Bl -tag -width "obj"
903 to be write-locked.
906 The request obtains a write lock on the specified
913 If there is already a write lock owner, as indicated by the
916 by the read-lock counter, the current thread does not attempt to
917 obtain the write-lock.
922 word and puts itself to sleep on corresponding sleep queue.
923 Upon wakeup, the locking conditions are re-evaluated.
928 An unblocked signal delivered during the wait always results in sleep
935 .Bl -tag -width "obj"
942 The unlock type (read or write) is determined by the
969 but unconditionally select the process-private sleep queue.
973 but unconditionally select the process-private sleep queue.
975 Wait for mutex availability.
977 .Bl -tag -width "obj"
1002 An unblocked signal delivered during the wait always results in sleep
1016 .Bl -tag -width "obj"
1026 wakes up all threads waiting on the
1033 .Bl -tag -width "obj"
1067 .Bl -tag -width "obj"
1087 If there is more than one waiter on the sleep queue, or there is only
1095 Wait until semaphore is available.
1097 .Bl -tag -width "obj"
1121 indicating the semaphore is available (non-zero count due to post),
1124 nor does it consume the semaphore lock on successful return.
1128 A request with non-absolute timeout value is not restartable.
1129 An unblocked signal delivered during such wait results in sleep
1146 Wake up waiters on semaphore lock.
1148 .Bl -tag -width "obj"
1168 The objects are used to implement process-shared locks in
1173 argument specifies the sub-request of the
1176 .Bl -tag -width indent
1185 On success, the file descriptor referencing the object is returned.
1197 De-associate the shared object with the specified key
1211 on success.
1222 .Bl -tag -width "uaddr"
1233 .Bd -literal
1250 termination of the shared list on fork, in the child.
1257 around the whole operation, since lists can be only changed race-free
1265 than other mutexes on the list.
1288 .Bl -tag -width indent
1294 .Bl -hang -offset indent
1297 arguments that point to a word, point to a 32-bit integer.
1302 argument is a pointer to an array of 32-bit pointers.
1308 is a 32-bit pointer.
1311 uses a 32-bit time_t.
1316 This flag is valid for all architectures, but it is ignored on i386.
1318 Request non-i386, 32-bit ABI compatibility from the native
1322 .Bl -hang -offset indent
1325 arguments that point to a word, point to a 32-bit integer.
1330 argument is a pointer to an array of 32-bit pointers.
1336 is a 32-bit pointer.
1339 uses a 64-bit time_t.
1348 Note that if any 32-bit ABI compatibility is being requested, then care must be
1350 A single thread may not mix 32-bit compatible robust lists with native
1362 sub-requests of the
1369 return a shared memory file descriptor on success.
1370 On error \-1 is returned, and the
1377 .Bl -tag -width "[ETIMEDOUT]"
1432 Unlock attempted on an object not owned by the current thread.
1434 The lock was requested on an umutex where the
1442 The lock was requested on an umutex which
1451 sub-request of
1460 sub-requests of the
1466 sub-request of the
1488 A signal was delivered during wait, for a non-restartable operation.
1489 Operations with timeouts are typically non-restartable, but timeouts
1492 A signal was delivered during wait, for a restartable operation.
1513 system call is non-standard and is used by the
1516 .St -p1003.1-2001
1528 implementation is only vulnerable to this race when operating on