An operation is atomic if all of its effects are visible to other CPUs together when the proper access protocol is followed. In the degenerate case are atomic instructions provided directly by machine architectures. At a higher level, if several members of a structure are protected by a lock, then a set of operations are atomic if they are all performed while holding the lock without releasing the lock in between any of the operations.
See Also: operation.
A thread is blocked when it is waiting on a lock, resource, or condition. Unfortunately this term is a bit overloaded as a result.
See Also: sleep.
A section of code that is not allowed to be preempted. A critical section is entered and exited using the critical_enter(9) API.
Machine dependent.
See Also: MI.
A memory operation reads and/or writes to a memory location.
Machine independent.
See Also: MD.
Primary interrupt context refers to the code that runs when an interrupt occurs. This code can either run an interrupt handler directly or schedule an asynchronous interrupt thread to execute the interrupt handlers for a given interrupt source.
A high priority kernel thread. Currently, the only realtime priority kernel threads are interrupt threads.
See Also: thread.
A thread is asleep when it is blocked on a condition variable or a sleep queue via
msleep
or tsleep
.
See Also: block.
A sleepable lock is a lock that can be held by a thread which is asleep. Lockmgr locks and sx locks are currently the only sleepable locks in FreeBSD. Eventually, some sx locks such as the allproc and proctree locks may become non-sleepable locks.
See Also: sleep.
A kernel thread represented by a struct thread. Threads own locks and hold a single execution context.
A kernel virtual address that threads may sleep on.