xref: /freebsd/share/man/man9/pget.9 (revision 62cfcf62f627e5093fb37026a6d8c98e4d2ef04c)
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.\" $FreeBSD$
26.\"
27.Dd May 3, 2014
28.Dt PGET 9
29.Os
30.Sh NAME
31.Nm pget
32.Nd locate a process by number
33.Sh SYNOPSIS
34.In sys/param.h
35.In sys/proc.h
36.Ft int
37.Fn pget "pid_t pid" "int flags" "struct proc **pp"
38.Sh DESCRIPTION
39This function
40takes a
41.Fa pid
42as its argument,
43which can be either a process or thread id,
44and fills a pointer to the
45.Vt proc
46structure in
47.Fa *pp .
48In the latter case, a process owning the specified thread is looked for.
49The operation is performed by invoking the
50.Xr pfind 9
51function.
52The found process is returned locked.
53For the
54.Dv PGET_HOLD
55case, it is returned unlocked (but held).
56The
57.Fn pget
58function can
59perform additional manipulations, depending on a
60.Fa flags
61argument.
62.Pp
63The
64.Fa flags
65argument is the logical OR of some subset of:
66.Bl -tag -width ".Dv PGET_NOTINEXEC"
67.It Dv PGET_HOLD
68If set, the found process will be held and unlocked.
69.It Dv PGET_CANSEE
70If set, the found process will be checked for its visibility.
71See
72.Xr p_cansee 9 .
73.It Dv PGET_CANDEBUG
74If set, the found process will be checked for its debuggability.
75See
76.Xr p_candebug 9 .
77.It Dv PGET_ISCURRENT
78If set, the found process will be checked that it matches the current
79process context.
80.It Dv PGET_NOTWEXIT
81If set, the found process will be checked that it does not have the process
82flag
83.Dv P_WEXIT
84set.
85.It Dv PGET_NOTINEXEC
86If set, the found process will be checked that it does not have the process
87flag
88.Dv P_INEXEC
89set.
90.It Dv PGET_NOTID
91If set,
92.Fa pid
93is not assumed as a thread id for values larger than
94.Dv PID_MAX .
95.It Dv PGET_WANTREAD
96If set, the found process will be checked that the caller may get
97a read access to its structure.
98A shorthand for
99.Pq Dv PGET_HOLD | PGET_CANDEBUG | PGET_NOTWEXIT .
100.El
101.Sh RETURN VALUES
102If the process is found in the specified way, then zero is returned,
103otherwise an appropriate error code is returned.
104.Sh SEE ALSO
105.Xr p_candebug 9 ,
106.Xr p_cansee 9 ,
107.Xr pfind 9
108