Lines Matching +full:shared +full:- +full:interrupt

1 .\" Copyright (c) 2007 Julian Elischer  (julian -  freebsd org )
40 A thread acquires (locks) a mutex before accessing data shared with other
41 threads (including interrupt threads), and releases (unlocks) it afterwards.
61 e.g. to protect data shared
62 with interrupt filter code (see
78 Reader/writer locks allow shared access to protected data by multiple threads
80 The threads with shared access are known as
89 with shared/exclusive semantics.
92 This limitation comes from the fact that shared owners
98 .Ss Read-Mostly Locks
99 Read-mostly locks are similar to
102 .Em Read-mostly
103 locks implement full priority propagation by tracking shared owners
104 using a caller-supplied
111 .Ss Sleepable Read-Mostly Locks
112 Sleepable read-mostly locks are a variation on read-mostly locks.
114 but threads holding a shared lock may not.
115 Priority is propagated to shared owners but not to exclusive owners.
116 .Ss Shared/exclusive locks
117 Shared/exclusive locks are similar to reader/writer locks; the main difference
118 between them is that shared/exclusive locks may be held during unbounded sleep.
119 Acquiring a contested shared/exclusive lock can perform an unbounded sleep.
126 Lockmanager locks are sleepable shared/exclusive locks used mostly in
146 .Ss Non-blocking synchronization
151 which can be used to provide read-only access to a data structure while one or
160 Thus, they are a useful building block in the construction of lock-free
164 in preference to traditional mutual exclusion-based synchronization,
165 except when performance or non-blocking guarantees are a major concern.
193 reader/writer locks, read-mostly locks, and shared/exclusive locks.
207 also handle event-based thread blocking.
233 .Pq often called from inside an interrupt routine
280 .Bl -enum
286 Note that infrastructure to do this is slowly going away as non-MPSAFE
289 Giant must be locked before other non-sleepable locks.
330 mutexes, reader/writer locks and read-mostly locks.
333 sleepable read-mostly locks, shared/exclusive locks, lockmanager locks,
336 .Bl -bullet
343 For example, it is an error to try to acquire a shared/exclusive lock while
355 the processor when running inside an interrupt filter.
358 running inside an interrupt thread.
374 .Bl -column ".Ic xxxxxxxxxxxxxxxx" ".Xr XXXXXXXXX" ".Xr XXXXXXXXX" ".Xr XXXXXXX" ".Xr XXXXXXXXX" ".…
376 .It Em "You have: " Ta -------- Ta -------- Ta ------ Ta -------- Ta ------ Ta ------
377 .It spin mtx Ta \&ok Ta \&no Ta \&no Ta \&no Ta \&no Ta \&no-1
378 .It mutex/rw Ta \&ok Ta \&ok Ta \&ok Ta \&no Ta \&no Ta \&no-1
379 .It rmlock Ta \&ok Ta \&ok Ta \&ok Ta \&no Ta \&no Ta \&no-1
380 .It sleep rm Ta \&ok Ta \&ok Ta \&ok Ta \&ok-2 Ta \&ok-2 Ta \&ok-2/3
381 .It sx Ta \&ok Ta \&ok Ta \&ok Ta \&ok Ta \&ok Ta \&ok-3
397 read-mostly lock.
406 Note that non-blocking try operations on locks are always permitted.
410 .Bl -column ".Ic Xxxxxxxxxxxxxxxxxxx" ".Xr XXXXXXXXX" ".Xr XXXXXXXXX" ".Xr XXXXXXX" ".Xr XXXXXXXXX"…
412 .It interrupt filter: Ta \&ok Ta \&no Ta \&no Ta \&no Ta \&no Ta \&no
413 .It interrupt thread: Ta \&ok Ta \&ok Ta \&ok Ta \&no Ta \&no Ta \&no