xref: /freebsd/lib/libkvm/kvm_getprocs.3 (revision dc36d6f9bb1753f3808552f3afd30eda9a7b206a)
158f0484fSRodney W. Grimes.\" Copyright (c) 1992, 1993
258f0484fSRodney W. Grimes.\"	The Regents of the University of California.  All rights reserved.
358f0484fSRodney W. Grimes.\"
458f0484fSRodney W. Grimes.\" This code is derived from software developed by the Computer Systems
558f0484fSRodney W. Grimes.\" Engineering group at Lawrence Berkeley Laboratory under DARPA contract
658f0484fSRodney W. Grimes.\" BG 91-66 and contributed to Berkeley.
758f0484fSRodney W. Grimes.\"
858f0484fSRodney W. Grimes.\" Redistribution and use in source and binary forms, with or without
958f0484fSRodney W. Grimes.\" modification, are permitted provided that the following conditions
1058f0484fSRodney W. Grimes.\" are met:
1158f0484fSRodney W. Grimes.\" 1. Redistributions of source code must retain the above copyright
1258f0484fSRodney W. Grimes.\"    notice, this list of conditions and the following disclaimer.
1358f0484fSRodney W. Grimes.\" 2. Redistributions in binary form must reproduce the above copyright
1458f0484fSRodney W. Grimes.\"    notice, this list of conditions and the following disclaimer in the
1558f0484fSRodney W. Grimes.\"    documentation and/or other materials provided with the distribution.
16*fbbd9655SWarner Losh.\" 3. Neither the name of the University nor the names of its contributors
1758f0484fSRodney W. Grimes.\"    may be used to endorse or promote products derived from this software
1858f0484fSRodney W. Grimes.\"    without specific prior written permission.
1958f0484fSRodney W. Grimes.\"
2058f0484fSRodney W. Grimes.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
2158f0484fSRodney W. Grimes.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2258f0484fSRodney W. Grimes.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2358f0484fSRodney W. Grimes.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
2458f0484fSRodney W. Grimes.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2558f0484fSRodney W. Grimes.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2658f0484fSRodney W. Grimes.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2758f0484fSRodney W. Grimes.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2858f0484fSRodney W. Grimes.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2958f0484fSRodney W. Grimes.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3058f0484fSRodney W. Grimes.\" SUCH DAMAGE.
3158f0484fSRodney W. Grimes.\"
32ee5169dcSMikolaj Golub.Dd November 22, 2011
3358f0484fSRodney W. Grimes.Dt KVM_GETPROCS 3
3458f0484fSRodney W. Grimes.Os
3558f0484fSRodney W. Grimes.Sh NAME
3658f0484fSRodney W. Grimes.Nm kvm_getprocs ,
3758f0484fSRodney W. Grimes.Nm kvm_getargv ,
3858f0484fSRodney W. Grimes.Nm kvm_getenvv
3958f0484fSRodney W. Grimes.Nd access user process state
407f5e8c84SAlexey Zelkin.Sh LIBRARY
417f5e8c84SAlexey Zelkin.Lb libkvm
4258f0484fSRodney W. Grimes.Sh SYNOPSIS
4332eef9aeSRuslan Ermilov.In kvm.h
4432eef9aeSRuslan Ermilov.In sys/param.h
4532eef9aeSRuslan Ermilov.In sys/sysctl.h
46225823c5STom Rhodes.In sys/user.h
4758f0484fSRodney W. Grimes.Ft struct kinfo_proc *
4858f0484fSRodney W. Grimes.Fn kvm_getprocs "kvm_t *kd" "int op" "int arg" "int *cnt"
4958f0484fSRodney W. Grimes.Ft char **
5058f0484fSRodney W. Grimes.Fn kvm_getargv "kvm_t *kd" "const struct kinfo_proc *p" "int nchr"
5158f0484fSRodney W. Grimes.Ft char **
5258f0484fSRodney W. Grimes.Fn kvm_getenvv "kvm_t *kd" "const struct kinfo_proc *p" "int nchr"
5358f0484fSRodney W. Grimes.Sh DESCRIPTION
544cacb618SPhilippe CharnierThe
5558f0484fSRodney W. Grimes.Fn kvm_getprocs
564cacb618SPhilippe Charnierfunction returns a (sub-)set of active processes in the kernel indicated by
5758f0484fSRodney W. Grimes.Fa kd .
5858f0484fSRodney W. GrimesThe
5958f0484fSRodney W. Grimes.Fa op
6058f0484fSRodney W. Grimesand
6158f0484fSRodney W. Grimes.Fa arg
6258f0484fSRodney W. Grimesarguments constitute a predicate which limits the set of processes
631a0a9345SRuslan Ermilovreturned.
641a0a9345SRuslan ErmilovThe value of
6558f0484fSRodney W. Grimes.Fa op
6658f0484fSRodney W. Grimesdescribes the filtering predicate as follows:
6758f0484fSRodney W. Grimes.Pp
6858f0484fSRodney W. Grimes.Bl -tag -width 20n -offset indent -compact
69862b46f6SRuslan Ermilov.It Dv KERN_PROC_ALL
7038e97393STim J. Robbinsall processes and kernel visible threads
71862b46f6SRuslan Ermilov.It Dv KERN_PROC_PROC
7238e97393STim J. Robbinsall processes, without threads
73862b46f6SRuslan Ermilov.It Dv KERN_PROC_PID
74862b46f6SRuslan Ermilovprocesses with process ID
7558f0484fSRodney W. Grimes.Fa arg
76862b46f6SRuslan Ermilov.It Dv KERN_PROC_PGRP
7758f0484fSRodney W. Grimesprocesses with process group
7858f0484fSRodney W. Grimes.Fa arg
79862b46f6SRuslan Ermilov.It Dv KERN_PROC_SESSION
8058f0484fSRodney W. Grimesprocesses with session
8158f0484fSRodney W. Grimes.Fa arg
82862b46f6SRuslan Ermilov.It Dv KERN_PROC_TTY
83862b46f6SRuslan Ermilovprocesses with TTY
8458f0484fSRodney W. Grimes.Fa arg
85862b46f6SRuslan Ermilov.It Dv KERN_PROC_UID
86862b46f6SRuslan Ermilovprocesses with effective user ID
8758f0484fSRodney W. Grimes.Fa arg
88862b46f6SRuslan Ermilov.It Dv KERN_PROC_RUID
89862b46f6SRuslan Ermilovprocesses with real user ID
9058f0484fSRodney W. Grimes.Fa arg
91862b46f6SRuslan Ermilov.It Dv KERN_PROC_INC_THREAD
92f3e170bbSDaniel Eischenmodifier to return all kernel visible threads when filtering
93862b46f6SRuslan Ermilovby process ID, process group, TTY, user ID, and real user ID
9458f0484fSRodney W. Grimes.El
9558f0484fSRodney W. Grimes.Pp
9658f0484fSRodney W. GrimesThe number of processes found is returned in the reference parameter
9758f0484fSRodney W. Grimes.Fa cnt .
9858f0484fSRodney W. GrimesThe processes are returned as a contiguous array of kinfo_proc structures.
9958f0484fSRodney W. GrimesThis memory is locally allocated, and subsequent calls to
10058f0484fSRodney W. Grimes.Fn kvm_getprocs
10158f0484fSRodney W. Grimesand
10258f0484fSRodney W. Grimes.Fn kvm_close
10358f0484fSRodney W. Grimeswill overwrite this storage.
10458f0484fSRodney W. Grimes.Pp
1054cacb618SPhilippe CharnierThe
10658f0484fSRodney W. Grimes.Fn kvm_getargv
1074cacb618SPhilippe Charnierfunction returns a null-terminated argument vector that corresponds to the
10858f0484fSRodney W. Grimescommand line arguments passed to process indicated by
10958f0484fSRodney W. Grimes.Fa p .
11058f0484fSRodney W. GrimesMost likely, these arguments correspond to the values passed to
11158f0484fSRodney W. Grimes.Xr exec 3
1121a0a9345SRuslan Ermilovon process creation.
1131a0a9345SRuslan ErmilovThis information is, however,
11458f0484fSRodney W. Grimesdeliberately under control of the process itself.
11558f0484fSRodney W. GrimesNote that the original command name can be found, unaltered,
11658f0484fSRodney W. Grimesin the p_comm field of the process structure returned by
11758f0484fSRodney W. Grimes.Fn kvm_getprocs .
11858f0484fSRodney W. Grimes.Pp
11958f0484fSRodney W. GrimesThe
12058f0484fSRodney W. Grimes.Fa nchr
12158f0484fSRodney W. Grimesargument indicates the maximum number of characters, including null bytes,
1221a0a9345SRuslan Ermilovto use in building the strings.
1231a0a9345SRuslan ErmilovIf this amount is exceeded, the string
12458f0484fSRodney W. Grimescausing the overflow is truncated and the partial result is returned.
12558f0484fSRodney W. GrimesThis is handy for programs like
12658f0484fSRodney W. Grimes.Xr ps 1
12758f0484fSRodney W. Grimesand
12858f0484fSRodney W. Grimes.Xr w 1
12958f0484fSRodney W. Grimesthat print only a one line summary of a command and should not copy
13058f0484fSRodney W. Grimesout large amounts of text only to ignore it.
13158f0484fSRodney W. GrimesIf
13258f0484fSRodney W. Grimes.Fa nchr
13358f0484fSRodney W. Grimesis zero, no limit is imposed and all argument strings are returned in
13458f0484fSRodney W. Grimestheir entirety.
13558f0484fSRodney W. Grimes.Pp
13658f0484fSRodney W. GrimesThe memory allocated to the argv pointers and string storage
1371a0a9345SRuslan Ermilovis owned by the kvm library.
1381a0a9345SRuslan ErmilovSubsequent
13958f0484fSRodney W. Grimes.Fn kvm_getprocs
14058f0484fSRodney W. Grimesand
14158f0484fSRodney W. Grimes.Xr kvm_close 3
14258f0484fSRodney W. Grimescalls will clobber this storage.
14358f0484fSRodney W. Grimes.Pp
14458f0484fSRodney W. GrimesThe
14558f0484fSRodney W. Grimes.Fn kvm_getenvv
14658f0484fSRodney W. Grimesfunction is similar to
14758f0484fSRodney W. Grimes.Fn kvm_getargv
1481a0a9345SRuslan Ermilovbut returns the vector of environment strings.
1491a0a9345SRuslan ErmilovThis data is
15058f0484fSRodney W. Grimesalso alterable by the process.
15158f0484fSRodney W. Grimes.Sh RETURN VALUES
1524cacb618SPhilippe CharnierThe
15358f0484fSRodney W. Grimes.Fn kvm_getprocs ,
15458f0484fSRodney W. Grimes.Fn kvm_getargv ,
15558f0484fSRodney W. Grimesand
1564cacb618SPhilippe Charnier.Fn kvm_getenvv
1574cacb618SPhilippe Charnierfunctions return
15858f0484fSRodney W. Grimes.Dv NULL
15958f0484fSRodney W. Grimeson failure.
16058f0484fSRodney W. Grimes.Sh SEE ALSO
16158f0484fSRodney W. Grimes.Xr kvm 3 ,
16258f0484fSRodney W. Grimes.Xr kvm_close 3 ,
16358f0484fSRodney W. Grimes.Xr kvm_geterr 3 ,
16458f0484fSRodney W. Grimes.Xr kvm_nlist 3 ,
16558f0484fSRodney W. Grimes.Xr kvm_open 3 ,
16658f0484fSRodney W. Grimes.Xr kvm_openfiles 3 ,
16758f0484fSRodney W. Grimes.Xr kvm_read 3 ,
16858f0484fSRodney W. Grimes.Xr kvm_write 3
16924a0682cSRuslan Ermilov.Sh BUGS
17024a0682cSRuslan ErmilovThese routines do not belong in the kvm interface.
171