xref: /freebsd-src/share/man/man4/dtrace_proc.4 (revision fa9896e082a1046ff4fbc75fcba4d18d1f2efc19)
14b4ad3a2SMark Johnston.\" Copyright (c) 2015 Mark Johnston <markj@FreeBSD.org>
24b4ad3a2SMark Johnston.\" All rights reserved.
34b4ad3a2SMark Johnston.\"
44b4ad3a2SMark Johnston.\" Redistribution and use in source and binary forms, with or without
54b4ad3a2SMark Johnston.\" modification, are permitted provided that the following conditions
64b4ad3a2SMark Johnston.\" are met:
74b4ad3a2SMark Johnston.\" 1. Redistributions of source code must retain the above copyright
84b4ad3a2SMark Johnston.\"    notice, this list of conditions and the following disclaimer.
94b4ad3a2SMark Johnston.\" 2. Redistributions in binary form must reproduce the above copyright
104b4ad3a2SMark Johnston.\"    notice, this list of conditions and the following disclaimer in the
114b4ad3a2SMark Johnston.\"    documentation and/or other materials provided with the distribution.
124b4ad3a2SMark Johnston.\"
134b4ad3a2SMark Johnston.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
144b4ad3a2SMark Johnston.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
154b4ad3a2SMark Johnston.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
164b4ad3a2SMark Johnston.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
174b4ad3a2SMark Johnston.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
184b4ad3a2SMark Johnston.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
194b4ad3a2SMark Johnston.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
204b4ad3a2SMark Johnston.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
214b4ad3a2SMark Johnston.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
224b4ad3a2SMark Johnston.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
234b4ad3a2SMark Johnston.\" SUCH DAMAGE.
244b4ad3a2SMark Johnston.\"
25*0ea0a371SMateusz Piotrowski.Dd March 3, 2023
264b4ad3a2SMark Johnston.Dt DTRACE_PROC 4
274b4ad3a2SMark Johnston.Os
284b4ad3a2SMark Johnston.Sh NAME
294b4ad3a2SMark Johnston.Nm dtrace_proc
304b4ad3a2SMark Johnston.Nd a DTrace provider for tracing events related to user processes
314b4ad3a2SMark Johnston.Sh SYNOPSIS
324b4ad3a2SMark Johnston.Fn proc:::create "struct proc *" "struct proc *" "int"
334b4ad3a2SMark Johnston.Fn proc:::exec "char *"
344b4ad3a2SMark Johnston.Fn proc:::exec-failure "int"
354b4ad3a2SMark Johnston.Fn proc:::exec-success "char *"
364b4ad3a2SMark Johnston.Fn proc:::exit "int"
374b4ad3a2SMark Johnston.Fn proc:::signal-clear "int" "ksiginfo_t *"
384b4ad3a2SMark Johnston.Fn proc:::signal-discard "struct thread *" "struct proc *" "int"
394b4ad3a2SMark Johnston.Fn proc:::signal-send "struct thread *" "struct proc *" "int"
404b4ad3a2SMark Johnston.Sh DESCRIPTION
414b4ad3a2SMark JohnstonThe DTrace
424b4ad3a2SMark Johnston.Nm proc
434b4ad3a2SMark Johnstonprovider provides insight into events related to user processes: process and
444b4ad3a2SMark Johnstonthread creation and termination events, and process signalling.
454b4ad3a2SMark Johnston.Pp
464b4ad3a2SMark JohnstonThe
474b4ad3a2SMark Johnston.Fn proc:::create
484b4ad3a2SMark Johnstonprobe fires when a user process is created via the
494b4ad3a2SMark Johnston.Xr fork 2 ,
504b4ad3a2SMark Johnston.Xr vfork 2 ,
514b4ad3a2SMark Johnston.Xr pdfork 2 ,
524b4ad3a2SMark Johnstonor
534b4ad3a2SMark Johnston.Xr rfork 2
544b4ad3a2SMark Johnstonsystem calls.
554b4ad3a2SMark JohnstonIn particular, kernel processes created with the
564b4ad3a2SMark Johnston.Xr kproc 9
574b4ad3a2SMark JohnstonKPI will not trigger this probe.
584b4ad3a2SMark JohnstonThe
594b4ad3a2SMark Johnston.Fn proc:::create
600981cbd5SMark Johnstonprobe's first two arguments are the new child process and its parent,
614b4ad3a2SMark Johnstonrespectively.
624b4ad3a2SMark JohnstonThe third argument is a mask of
634b4ad3a2SMark Johnston.Xr rfork 2
644b4ad3a2SMark Johnstonflags indicating which process resources are to be shared between the parent and
654b4ad3a2SMark Johnstonchild processes.
664b4ad3a2SMark Johnston.Pp
674b4ad3a2SMark JohnstonThe
684b4ad3a2SMark Johnston.Fn proc:::exec
694b4ad3a2SMark Johnstonprobe fires when a process attempts to execute a file.
704b4ad3a2SMark JohnstonIts argument is the specified filename for the file.
714b4ad3a2SMark JohnstonIf the attempt fails because of an error, the
724b4ad3a2SMark Johnston.Fn proc:::exec-failure
734b4ad3a2SMark Johnstonprobe will subsequently fire, providing the corresponding
744b4ad3a2SMark Johnston.Xr errno 2
754b4ad3a2SMark Johnstonvalue in its first argument.
764b4ad3a2SMark JohnstonOtherwise, the
774b4ad3a2SMark Johnston.Fn proc:::exec-success
784b4ad3a2SMark Johnstonprobe will fire.
794b4ad3a2SMark Johnston.Pp
804b4ad3a2SMark JohnstonThe
814b4ad3a2SMark Johnston.Fn proc:::exit
824b4ad3a2SMark Johnstonprobe fires when a process exits or is terminated.
834b4ad3a2SMark JohnstonIts argument is the corresponding
844b4ad3a2SMark Johnston.Dv SIGCHLD
854b4ad3a2SMark Johnstonsignal code; valid values are documented in the
864b4ad3a2SMark Johnston.Xr siginfo 3
874b4ad3a2SMark Johnstonmanual page and defined in
884b4ad3a2SMark Johnston.Pa signal.h .
894b4ad3a2SMark JohnstonFor example, when a process exits normally, the value of
904b4ad3a2SMark Johnston.Dv args[0]
914b4ad3a2SMark Johnstonwill be
924b4ad3a2SMark Johnston.Dv CLD_EXITED .
934b4ad3a2SMark Johnston.Pp
944b4ad3a2SMark JohnstonThe
954b4ad3a2SMark Johnston.Fn proc:::signal-send
964b4ad3a2SMark Johnstonprobe fires when a signal is about to be sent to a process.
974b4ad3a2SMark JohnstonThe
984b4ad3a2SMark Johnston.Fn proc:::signal-discard
994b4ad3a2SMark Johnstonprobe fires when a signal is sent to a process that ignores it.
1004b4ad3a2SMark JohnstonThis probe will fire after the
1014b4ad3a2SMark Johnston.Fn proc:::signal-send
1024b4ad3a2SMark Johnstonprobe for the signal in question.
1034b4ad3a2SMark JohnstonThe arguments to these probes are the thread and process to which the signal
1044b4ad3a2SMark Johnstonwill be sent, and the signal number of the signal.
1054b4ad3a2SMark JohnstonValid signal numbers are defined in the
1064b4ad3a2SMark Johnston.Xr signal 3
1074b4ad3a2SMark Johnstonmanual page.
1084b4ad3a2SMark JohnstonThe
1094b4ad3a2SMark Johnston.Fn proc:::signal-clear
1104b4ad3a2SMark Johnstonprobe fires when a pending signal has been cleared by one of the
1114b4ad3a2SMark Johnston.Xr sigwait 2 ,
1124b4ad3a2SMark Johnston.Xr sigtimedwait 2 ,
1134b4ad3a2SMark Johnstonor
1144b4ad3a2SMark Johnston.Xr sigwaitinfo 2
1154b4ad3a2SMark Johnstonsystem calls.
1164b4ad3a2SMark JohnstonIts arguments are the signal number of the cleared signal, and a pointer to
1174b4ad3a2SMark Johnstonthe corresponding signal information.
1184b4ad3a2SMark JohnstonThe
1194b4ad3a2SMark Johnston.Vt siginfo_t
1204b4ad3a2SMark Johnstonfor the signal can be obtained from
1214b4ad3a2SMark Johnston.Dv args[1]->ksi_info .
1224b4ad3a2SMark Johnston.Sh ARGUMENTS
1234b4ad3a2SMark JohnstonThough the
1244b4ad3a2SMark Johnston.Nm proc
1254b4ad3a2SMark Johnstonprovider probes use native
1264b4ad3a2SMark Johnston.Fx
1274b4ad3a2SMark Johnstonarguments types, standard D types for processes and threads are available.
1284b4ad3a2SMark JohnstonThese are
1294b4ad3a2SMark Johnston.Vt psinfo_t
1304b4ad3a2SMark Johnstonand
1314b4ad3a2SMark Johnston.Vt lwpsinfo_t
1324b4ad3a2SMark Johnstonrespectively, and are defined in
1334b4ad3a2SMark Johnston.Pa /usr/lib/dtrace/psinfo.d .
1344b4ad3a2SMark JohnstonThis file also defines two global variables,
1354b4ad3a2SMark Johnston.Va curpsinfo
1364b4ad3a2SMark Johnstonand
1374b4ad3a2SMark Johnston.Va curlwpsinfo ,
1384b4ad3a2SMark Johnstonwhich provide representations of the current process and thread using these
1394b4ad3a2SMark Johnstontypes.
1404b4ad3a2SMark Johnston.Pp
1414b4ad3a2SMark JohnstonThe fields of
1424b4ad3a2SMark Johnston.Vt psinfo_t
1434b4ad3a2SMark Johnstonare:
1444b4ad3a2SMark Johnston.Bl -tag -width "uintptr_t pr_addr" -offset indent
1454b4ad3a2SMark Johnston.It Vt int pr_nlwp
1464b4ad3a2SMark JohnstonNumber of threads in the process.
1474b4ad3a2SMark Johnston.It Vt pid_t pr_pid
1484b4ad3a2SMark JohnstonProcess ID.
1494b4ad3a2SMark Johnston.It Vt pid_t pr_ppid
1504b4ad3a2SMark JohnstonProcess ID of the parent process, or 0 if the process does not have a parent.
1514b4ad3a2SMark Johnston.It Vt pid_t pr_pgid
1524b4ad3a2SMark JohnstonProcess ID of the process group leader.
1534b4ad3a2SMark Johnston.It Vt pid_t pr_sid
1544b4ad3a2SMark JohnstonSession ID, or 0 if the process does not belong to a session.
1554b4ad3a2SMark Johnston.It Vt pid_t pr_uid
1564b4ad3a2SMark JohnstonReal user ID.
1574b4ad3a2SMark Johnston.It Vt pid_t pr_euid
1584b4ad3a2SMark JohnstonEffective user ID.
1594b4ad3a2SMark Johnston.It Vt pid_t pr_gid
1604b4ad3a2SMark JohnstonReal group ID.
1614b4ad3a2SMark Johnston.It Vt pid_t pr_egid
1624b4ad3a2SMark JohnstonEffective group ID.
1634b4ad3a2SMark Johnston.It Vt uintptr_t pr_addr
1644b4ad3a2SMark JohnstonPointer to the
1654b4ad3a2SMark Johnston.Vt struct proc
1664b4ad3a2SMark Johnstonfor the process.
1674b4ad3a2SMark Johnston.It Vt string pr_psargs
1684b4ad3a2SMark JohnstonProcess arguments.
1694b4ad3a2SMark Johnston.It Vt u_int pr_arglen
1704b4ad3a2SMark JohnstonLength of the process argument string.
1714b4ad3a2SMark Johnston.It Vt u_int pr_jailid
1724b4ad3a2SMark JohnstonJail ID of the process.
1734b4ad3a2SMark Johnston.El
1744b4ad3a2SMark Johnston.Pp
1754b4ad3a2SMark JohnstonThe fields of
1764b4ad3a2SMark Johnston.Vt lwpsinfo_t
1774b4ad3a2SMark Johnstonare:
1784b4ad3a2SMark Johnston.Bl -tag -width "uintptr_t pr_wchar" -offset indent
1794b4ad3a2SMark Johnston.It Vt id_t pr_lwpid
1804b4ad3a2SMark JohnstonThread ID.
1814b4ad3a2SMark Johnston.It Vt int pr_flag
1824b4ad3a2SMark JohnstonThread flags.
1834b4ad3a2SMark Johnston.It Vt int pr_pri
1844b4ad3a2SMark JohnstonReal scheduling priority of the thread.
1854b4ad3a2SMark Johnston.It Vt char pr_state
1864b4ad3a2SMark JohnstonCurrently always 0.
1874b4ad3a2SMark Johnston.It Vt char pr_sname
1884b4ad3a2SMark JohnstonCurrently always
189*0ea0a371SMateusz Piotrowski.Ql \&? .
1904b4ad3a2SMark Johnston.It Vt short pr_syscall
1914b4ad3a2SMark JohnstonCurrently always 0.
1924b4ad3a2SMark Johnston.It Vt uintptr_t pr_addr
1934b4ad3a2SMark JohnstonPointer to the
1944b4ad3a2SMark Johnston.Vt struct thread
1954b4ad3a2SMark Johnstonfor the thread.
1964b4ad3a2SMark Johnston.It Vt uintptr_t pr_wchan
1974b4ad3a2SMark JohnstonCurrent wait address on which the thread is sleeping.
1984b4ad3a2SMark Johnston.El
1994b4ad3a2SMark Johnston.Sh FILES
2004b4ad3a2SMark Johnston.Bl -tag -width "/usr/lib/dtrace/psinfo.d" -compact
2014b4ad3a2SMark Johnston.It Pa /usr/lib/dtrace/psinfo.d
2024b4ad3a2SMark JohnstonDTrace type and translator definitions for the
2034b4ad3a2SMark Johnston.Nm proc
2044b4ad3a2SMark Johnstonprovider.
2054b4ad3a2SMark Johnston.El
2064b4ad3a2SMark Johnston.Sh EXAMPLES
2074b4ad3a2SMark JohnstonThe following script logs process execution events as they occur:
2084b4ad3a2SMark Johnston.Bd -literal -offset indent
2094b4ad3a2SMark Johnston#pragma D option quiet
2104b4ad3a2SMark Johnston
2114b4ad3a2SMark Johnstonproc:::exec-success
2124b4ad3a2SMark Johnston{
2134b4ad3a2SMark Johnston        printf("%s", curpsinfo->pr_psargs);
2144b4ad3a2SMark Johnston}
2154b4ad3a2SMark Johnston.Ed
2164b4ad3a2SMark Johnston.Pp
2174b4ad3a2SMark JohnstonNote that the
2184b4ad3a2SMark Johnston.Dv pr_psargs
2194b4ad3a2SMark Johnstonfield is subject to the limit defined by the
2204b4ad3a2SMark Johnston.Va kern.ps_arg_cache_limit
2214b4ad3a2SMark Johnstonsysctl.
2224b4ad3a2SMark JohnstonIn particular, processes with an argument list longer than the value defined by
2234b4ad3a2SMark Johnstonthis sysctl cannot be logged in this way.
2244b4ad3a2SMark Johnston.Sh COMPATIBILITY
2254b4ad3a2SMark JohnstonThe
2264b4ad3a2SMark Johnston.Nm proc
2274b4ad3a2SMark Johnstonprovider in
2284b4ad3a2SMark Johnston.Fx
2294b4ad3a2SMark Johnstonis not compatible with the
2304b4ad3a2SMark Johnston.Nm proc
2314b4ad3a2SMark Johnstonprovider in Solaris.
2324b4ad3a2SMark JohnstonIn particular,
2334b4ad3a2SMark Johnston.Fx
2344b4ad3a2SMark Johnstonuses the native
2354b4ad3a2SMark Johnston.Vt "struct proc"
2364b4ad3a2SMark Johnstonand
2374b4ad3a2SMark Johnston.Vt "struct thread"
2384b4ad3a2SMark Johnstontypes for probe arguments rather than translated types.
2394b4ad3a2SMark JohnstonAdditionally, a number of
2404b4ad3a2SMark Johnston.Nm proc
2414b4ad3a2SMark Johnstonprovider probes found in Solaris are not currently available on
2424b4ad3a2SMark Johnston.Fx .
2434b4ad3a2SMark Johnston.Sh SEE ALSO
2444b4ad3a2SMark Johnston.Xr dtrace 1 ,
2454b4ad3a2SMark Johnston.Xr errno 2 ,
2464b4ad3a2SMark Johnston.Xr fork 2 ,
2474b4ad3a2SMark Johnston.Xr pdfork 2 ,
2484b4ad3a2SMark Johnston.Xr rfork 2 ,
2494b4ad3a2SMark Johnston.Xr vfork 2 ,
2504b4ad3a2SMark Johnston.Xr siginfo 3 ,
2514b4ad3a2SMark Johnston.Xr signal 3 ,
2524b4ad3a2SMark Johnston.Xr dtrace_sched 4 ,
2534b4ad3a2SMark Johnston.Xr kproc 9
2544b4ad3a2SMark Johnston.Sh HISTORY
2554b4ad3a2SMark JohnstonThe
2564b4ad3a2SMark Johnston.Nm proc
2574b4ad3a2SMark Johnstonprovider first appeared in
2584b4ad3a2SMark Johnston.Fx
2594b4ad3a2SMark Johnston7.1.
2604b4ad3a2SMark Johnston.Sh AUTHORS
2614b4ad3a2SMark JohnstonThis manual page was written by
2624b4ad3a2SMark Johnston.An Mark Johnston Aq Mt markj@FreeBSD.org .
263