xref: /freebsd/share/man/man9/pget.9 (revision 397e83df75e0fcd0d3fcb95ae4d794cb7600fc89)
1.\" Copyright (c) 2011 Sergey Kandaurov
2.\" All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\"    notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\"    notice, this list of conditions and the following disclaimer in the
11.\"    documentation and/or other materials provided with the distribution.
12.\"
13.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23.\" SUCH DAMAGE.
24.\"
25.Dd May 3, 2014
26.Dt PGET 9
27.Os
28.Sh NAME
29.Nm pget
30.Nd locate a process by number
31.Sh SYNOPSIS
32.In sys/param.h
33.In sys/proc.h
34.Ft int
35.Fn pget "pid_t pid" "int flags" "struct proc **pp"
36.Sh DESCRIPTION
37This function
38takes a
39.Fa pid
40as its argument,
41which can be either a process or thread id,
42and fills a pointer to the
43.Vt proc
44structure in
45.Fa *pp .
46In the latter case, a process owning the specified thread is looked for.
47The operation is performed by invoking the
48.Xr pfind 9
49function.
50The found process is returned locked.
51For the
52.Dv PGET_HOLD
53case, it is returned unlocked (but held).
54The
55.Fn pget
56function can
57perform additional manipulations, depending on a
58.Fa flags
59argument.
60.Pp
61The
62.Fa flags
63argument is the logical OR of some subset of:
64.Bl -tag -width ".Dv PGET_NOTINEXEC"
65.It Dv PGET_HOLD
66If set, the found process will be held and unlocked.
67.It Dv PGET_CANSEE
68If set, the found process will be checked for its visibility.
69See
70.Xr p_cansee 9 .
71.It Dv PGET_CANDEBUG
72If set, the found process will be checked for its debuggability.
73See
74.Xr p_candebug 9 .
75.It Dv PGET_ISCURRENT
76If set, the found process will be checked that it matches the current
77process context.
78.It Dv PGET_NOTWEXIT
79If set, the found process will be checked that it does not have the process
80flag
81.Dv P_WEXIT
82set.
83.It Dv PGET_NOTINEXEC
84If set, the found process will be checked that it does not have the process
85flag
86.Dv P_INEXEC
87set.
88.It Dv PGET_NOTID
89If set,
90.Fa pid
91is not assumed as a thread id for values larger than
92.Dv PID_MAX .
93.It Dv PGET_WANTREAD
94If set, the found process will be checked that the caller may get
95a read access to its structure.
96A shorthand for
97.Pq Dv PGET_HOLD | PGET_CANDEBUG | PGET_NOTWEXIT .
98.El
99.Sh RETURN VALUES
100If the process is found in the specified way, then zero is returned,
101otherwise an appropriate error code is returned.
102.Sh SEE ALSO
103.Xr p_candebug 9 ,
104.Xr p_cansee 9 ,
105.Xr pfind 9
106