The
PHOLD()
macro increments the hold count of a process, and the
PRELE()
macro decrements the hold count of a process.
If a process with a non-zero hold count attempts to exit, it will sleep until
its hold count has reached zero before the kernel begins releasing resources
associated with the process.
Once a process has started exiting, it is invalid to increase its hold count.
Thus, callers must not attempt to hold a process that has the
P_WEXIT
flag set.
The VM daemon will not swap out the kernel stack of a thread belonging to a
process with a non-zero hold count.
The
_PHOLD()
and
_PRELE()
macros are identical to
PHOLD()
and
PRELE(),
except that they must be called with the process lock held.