Tighten up some of the comments describing turnstiles and sleepqueues.
No code changes. Reviewed by: John Baldwin
This commit is contained in:
parent
7c472105ac
commit
b4dac21d68
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=216421
@ -49,7 +49,7 @@
|
||||
* call sleepq_set_timeout() after sleepq_add() to setup a timeout. It
|
||||
* should then use one of the sleepq_timedwait() functions to block.
|
||||
*
|
||||
* If the thread wants to the sleep to be interruptible by signals, it can
|
||||
* If the thread wants the sleep to be interruptible by signals, it can
|
||||
* call sleepq_catch_signals() after sleepq_add(). It should then use
|
||||
* one of the sleepq_wait_sig() functions to block. After the thread has
|
||||
* been resumed, it should call sleepq_calc_signal_retval() to determine
|
||||
@ -68,7 +68,7 @@
|
||||
* sleepq_signal(). These routines each return a boolean that will be true
|
||||
* if at least one swapped-out thread was resumed. In that case, the caller
|
||||
* is responsible for waking up the swapper by calling kick_proc0() after
|
||||
* releasing the sleep queeu chain lock.
|
||||
* releasing the sleep queue chain lock.
|
||||
*
|
||||
* Each thread allocates a sleep queue at thread creation via sleepq_alloc()
|
||||
* and releases it at thread destruction via sleepq_free(). Note that
|
||||
|
@ -39,13 +39,14 @@
|
||||
* shared, or eread, lock, and one for threads waiting for an
|
||||
* exclusive, or write, lock.
|
||||
*
|
||||
* A thread calls turnstile_lock() to lock the turnstile chain associated
|
||||
* with a given lock. A thread calls turnstile_wait() when the lock is
|
||||
* contested to be put on the queue and block. If a thread needs to retry
|
||||
* a lock operation instead of blocking, it should call turnstile_release()
|
||||
* to unlock the associated turnstile chain lock.
|
||||
* A thread calls turnstile_chain_lock() to lock the turnstile chain
|
||||
* associated with a given lock. A thread calls turnstile_wait() when
|
||||
* the lock is contested to be put on the queue and block. If a thread
|
||||
* calls turnstile_trywait() and decides to retry a lock operation instead
|
||||
* of blocking, it should call turnstile_cancel() to unlock the associated
|
||||
* turnstile chain lock.
|
||||
*
|
||||
* When a lock is released, the thread calls turnstile_lookup() to loop
|
||||
* When a lock is released, the thread calls turnstile_lookup() to look
|
||||
* up the turnstile associated with the given lock in the hash table. Then
|
||||
* it calls either turnstile_signal() or turnstile_broadcast() to mark
|
||||
* blocked threads for a pending wakeup. turnstile_signal() marks the
|
||||
@ -55,7 +56,7 @@
|
||||
* releasing the lock, turnstile_unpend() must be called to wake up the
|
||||
* pending thread(s) and give up ownership of the turnstile.
|
||||
*
|
||||
* Alternatively, if a thread wishes to relinquish ownership of a thread
|
||||
* Alternatively, if a thread wishes to relinquish ownership of a lock
|
||||
* without waking up any waiters, it may call turnstile_disown().
|
||||
*
|
||||
* When a lock is acquired that already has at least one thread contested
|
||||
|
Loading…
Reference in New Issue
Block a user