pget
— locate a
process by number
This function takes a pid as its argument,
which can be either a process or thread id, and fills a pointer to the
proc structure in *pp. In the
latter case, a process owning the specified thread is looked for. The
operation is performed by invoking the
pfind(9)
function. The found process is returned locked. For the
PGET_HOLD
case, it is returned unlocked (but held).
The
pget
()
function can perform additional manipulations, depending on a
flags argument.
The flags argument is the logical OR of some
subset of:
PGET_HOLD
- If set, the found process will be held and unlocked.
PGET_CANSEE
- If set, the found process will be checked for its visibility. See
p_cansee(9).
PGET_CANDEBUG
- If set, the found process will be checked for its debuggability. See
p_candebug(9).
PGET_ISCURRENT
- If set, the found process will be checked that it matches the current
process context.
PGET_NOTWEXIT
- If set, the found process will be checked that it does not have the
process flag
P_WEXIT
set.
PGET_NOTINEXEC
- If set, the found process will be checked that it does not have the
process flag
P_INEXEC
set.
PGET_NOTID
- If set, pid is not assumed as a thread id for values
larger than
PID_MAX
.
PGET_WANTREAD
- If set, the found process will be checked that the caller may get a read
access to its structure. A shorthand for
(
PGET_HOLD
| PGET_CANDEBUG
| PGET_NOTWEXIT
).
If the process is found in the specified way, then zero is
returned, otherwise an appropriate error code is returned.