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.