epoch(9): update man page for r335924
This commit is contained in:
parent
cc535c95ca
commit
68195696a6
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=335929
@ -49,11 +49,11 @@
|
|||||||
.Ft void
|
.Ft void
|
||||||
.Fn epoch_enter "epoch_t epoch"
|
.Fn epoch_enter "epoch_t epoch"
|
||||||
.Ft void
|
.Ft void
|
||||||
.Fn epoch_enter_preempt "epoch_t epoch"
|
.Fn epoch_enter_preempt "epoch_t epoch" "epoch_tracker_t et"
|
||||||
.Ft void
|
.Ft void
|
||||||
.Fn epoch_exit "epoch_t epoch"
|
.Fn epoch_exit "epoch_t epoch"
|
||||||
.Ft void
|
.Ft void
|
||||||
.Fn epoch_exit_preempt "epoch_t epoch"
|
.Fn epoch_exit_preempt "epoch_t epoch" "epoch_tracker_t et"
|
||||||
.Ft void
|
.Ft void
|
||||||
.Fn epoch_wait "epoch_t epoch"
|
.Fn epoch_wait "epoch_t epoch"
|
||||||
.Ft void
|
.Ft void
|
||||||
@ -104,12 +104,16 @@ INVARIANTS can assert that a thread is in an epoch by using
|
|||||||
.Fn in_epoch .
|
.Fn in_epoch .
|
||||||
.Pp
|
.Pp
|
||||||
The epoch API currently does not support sleeping in epoch_preempt sections.
|
The epoch API currently does not support sleeping in epoch_preempt sections.
|
||||||
A caller cannot do epoch_enter recursively on different preemptible epochs.
|
|
||||||
A caller should never call
|
A caller should never call
|
||||||
.Fn epoch_wait
|
.Fn epoch_wait
|
||||||
in the middle of an epoch section as this will lead to a deadlock.
|
in the middle of an epoch section for the same epoch as this will lead to a deadlock.
|
||||||
.Pp
|
.Pp
|
||||||
Note that epochs are not a straight replacement for read locks.
|
Be default mutexes cannot be held across
|
||||||
|
.Fn epoch_wait_preempt .
|
||||||
|
To permit this the epoch must be allocated with
|
||||||
|
.Fn EPOCH_LOCKED .
|
||||||
|
When doing this one must be cautious of creating a situation where a deadlock is
|
||||||
|
possible. Note that epochs are not a straight replacement for read locks.
|
||||||
Callers must use safe list and tailq traversal routines in an epoch (see ck_queue).
|
Callers must use safe list and tailq traversal routines in an epoch (see ck_queue).
|
||||||
When modifying a list referenced from an epoch section safe removal
|
When modifying a list referenced from an epoch section safe removal
|
||||||
routines must be used and the caller can no longer modify a list entry
|
routines must be used and the caller can no longer modify a list entry
|
||||||
|
Loading…
Reference in New Issue
Block a user