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

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
224 .Bd -literal
236 It contains both the flags and counter of the read locks which were
241 .Bl -tag -width indent
247 There are read lock waiters.
249 Returns the count of currently granted read locks.
253 is granted on the
255 and no threads are granted read lock.
258 threads may be granted the read lock simultaneously, but write lock is
266 .Bl -tag -width indent
268 If specified, immediately grant read lock requests when
270 is already read-locked, even in presence of unsatisfied write
272 By default, if there is a write lock waiter, further read requests are
290 .Bd -literal
300 A non-zero value indicates an unlocked (posted) semaphore, while zero
316 issued on the semaphore.
323 .Bl -tag -width indent
328 .Bd -literal
372 .Bl -tag -width indent
390 which is a non-runnable state terminated by the
412 .Em process-shared
428 The size of the variable does not matter, so, for example, sleep on the same
433 on a little-endian 64-bit platform would collide.
437 one for simple wait requests, mutexes, rwlocks, condvars and other
441 the highest priority threads that have been blocked for the longest on
457 The lists are singly-linked.
465 .Bl -dash -offset indent -compact
480 read of the umutex memory faults
489 request is performed on it, but instead of the
517 .Bl -tag -width indent
519 Wait.
521 .Bl -tag -width "obj"
549 The read of the current value of the
560 An unblocked signal delivered during the wait always results in sleep
570 .Bl -tag -width "obj"
584 .Bl -tag -width "obj"
597 .Bl -tag -width "obj"
615 Upon wake up, the lock conditions are re-tested.
627 An unblocked signal delivered during the wait always results in sleep
636 .Bl -tag -width "obj"
668 structure for additional details of the request operation on the
673 .Bl -tag -width "uaddr"
706 Wait for a condition.
708 .Bl -tag -width "uaddr2"
732 argument, is set to an arbitrary non-zero value, after which the
735 the current thread is put to sleep on the sleep queue keyed by
744 sent between mutex unlock and putting the current thread on the sleep queue.
755 .Bl -tag -width "CVWAIT_CLOCKID"
788 the wait always results in sleep interruption and
794 .Bl -tag -width "obj"
800 The request wakes up at most one thread sleeping on the sleep queue keyed
804 If the woken up thread was the last on the sleep queue, the
812 .Bl -tag -width "obj"
818 The request wakes up all threads sleeping on the sleep queue keyed by the
833 .Pq a 32-bit integer .
835 Read-lock a
839 .Bl -tag -width "obj"
843 to be read-locked.
849 .Bl -tag -width indent
854 The request obtains the read lock on the specified
875 the write lock on the same structure does not prevent the current thread
876 from trying to obtain the read lock.
881 the current thread does not attempt to obtain read-lock.
886 word and puts itself to sleep on corresponding sleep queue.
887 Upon wakeup, the locking conditions are re-evaluated.
892 An unblocked signal delivered during the wait always results in sleep
897 Write-lock a
901 .Bl -tag -width "obj"
905 to be write-locked.
908 The request obtains a write lock on the specified
917 bit being set, or there are read lock owners, as indicated
918 by the read-lock counter, the current thread does not attempt to
919 obtain the write-lock.
924 word and puts itself to sleep on corresponding sleep queue.
925 Upon wakeup, the locking conditions are re-evaluated.
930 An unblocked signal delivered during the wait always results in sleep
937 .Bl -tag -width "obj"
944 The unlock type (read or write) is determined by the
971 but unconditionally select the process-private sleep queue.
975 but unconditionally select the process-private sleep queue.
977 Wait for mutex availability.
979 .Bl -tag -width "obj"
1004 An unblocked signal delivered during the wait always results in sleep
1018 .Bl -tag -width "obj"
1028 wakes up all threads waiting on the
1035 .Bl -tag -width "obj"
1069 .Bl -tag -width "obj"
1076 The request does not read the
1089 If there is more than one waiter on the sleep queue, or there is only
1097 Wait until semaphore is available.
1099 .Bl -tag -width "obj"
1123 indicating the semaphore is available (non-zero count due to post),
1126 nor does it consume the semaphore lock on successful return.
1130 A request with non-absolute timeout value is not restartable.
1131 An unblocked signal delivered during such wait results in sleep
1148 Wake up waiters on semaphore lock.
1150 .Bl -tag -width "obj"
1170 The objects are used to implement process-shared locks in
1175 argument specifies the sub-request of the
1178 .Bl -tag -width indent
1199 De-associate the shared object with the specified key
1224 .Bl -tag -width "uaddr"
1235 .Bd -literal
1252 termination of the shared list on fork, in the child.
1259 around the whole operation, since lists can be only changed race-free
1267 than other mutexes on the list.
1290 .Bl -tag -width indent
1296 .Bl -hang -offset indent
1299 arguments that point to a word, point to a 32-bit integer.
1304 argument is a pointer to an array of 32-bit pointers.
1310 is a 32-bit pointer.
1313 uses a 32-bit time_t.
1318 This flag is valid for all architectures, but it is ignored on i386.
1320 Request non-i386, 32-bit ABI compatibility from the native
1324 .Bl -hang -offset indent
1327 arguments that point to a word, point to a 32-bit integer.
1332 argument is a pointer to an array of 32-bit pointers.
1338 is a 32-bit pointer.
1341 uses a 64-bit time_t.
1350 Note that if any 32-bit ABI compatibility is being requested, then care must be
1352 A single thread may not mix 32-bit compatible robust lists with native
1364 sub-requests of the
1371 return a shared memory file descriptor on success.
1372 On error \-1 is returned, and the
1379 .Bl -tag -width "[ETIMEDOUT]"
1429 request, or one or more of the values read from the
1434 Unlock attempted on an object not owned by the current thread.
1436 The lock was requested on an umutex where the
1444 The lock was requested on an umutex which
1453 sub-request of
1462 sub-requests of the
1468 sub-request of the
1480 for read.
1490 A signal was delivered during wait, for a non-restartable operation.
1491 Operations with timeouts are typically non-restartable, but timeouts
1494 A signal was delivered during wait, for a restartable operation.
1515 system call is non-standard and is used by the
1518 .St -p1003.1-2001
1530 implementation is only vulnerable to this race when operating on