summaryrefslogtreecommitdiffstats
path: root/share/man/man4/dt.4
blob: b7a2814f11707e2c52b89299aff106e780d3e814 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
.\"	$OpenBSD: dt.4,v 1.7 2020/12/02 07:00:42 anton Exp $
.\"
.\" Copyright (c) 2019 Martin Pieuchot <mpi@openbsd.org>
.\"
.\" Permission to use, copy, modify, and distribute this software for any
.\" purpose with or without fee is hereby granted, provided that the above
.\" copyright notice and this permission notice appear in all copies.
.\"
.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
.Dd $Mdocdate: December 2 2020 $
.Dt DT 4
.Os
.Sh NAME
.Nm dt
.Nd dynamic tracer
.Sh SYNOPSIS
.Cd "pseudo-device dt"
.Sh DESCRIPTION
System and application tracing can happen in the kernel.
It has to be configured and enabled through the
.Xr ioctl 2
interface exposed by the pseudo-device
.Pa /dev/dt .
.Pp
This device can only be opened when the
.Va kern.allowdt
.Xr sysctl 2
variable is set.
.Sh IOCTL INTERFACE
The
.Xr ioctl 2
command codes below are defined in
.In dev/dt/dtvar.h .
.Bl -tag -width xxxxxx
.It Dv DTIOCGPLIST Fa "struct dtioc_probe *dtpr"
Get available probe entries.
.Bd -literal
struct dtioc_probe {
	size_t		 	 dtpr_size;
	struct dtioc_probe_info	*dtpr_probes;
};
.Ed
.Pp
If
.Va dtpr_size
is non-zero, as many probes as possible that can fit into this size
will be copied into the supplied buffer.
On exit,
.Va dtpr_size
is always set to the total size required to hold all probe entries
(i.e., it is set to
.Li sizeof(struct dtioc_probe_info) * dt_nprobes ) .
.It Dv DTIOCGSTATS Fa "struct dtioc_stat *dtst"
Get statistics for current recording.
.Bd -literal
struct dtioc_stat {
	uint64_t		 dtst_readevt;
	uint64_t		 dtst_dropevt;
};
.Ed
.It Dv DTIOCRECORD Fa "int on"
Start or stop recording.
.It Dv DTIOCPRBENABLE Fa "struct dtioc_req *dtrq"
Enable the given probe for recording.
.Bd -literal
struct dtioc_req {
	uint32_t		 dtrq_pbn;
	struct dt_filter	 dtrq_filter;
	uint32_t		 dtrq_rate;
	uint64_t		 dtrq_evtflags;
};
.Ed
.El
.Sh FILES
.Bl -tag -width /dev/dt -compact
.It Pa /dev/dt
dynamic tracing device.
.El
.Sh ERRORS
An open of
.Pa /dev/dt
will fail if:
.Bl -tag -width Er
.It Bq Er EPERM
the
.Va kern.allowdt
.Xr sysctl 2
variable wasn't set.
.It Bq Er ENOMEM
not enough memory space was available.
.El
.Sh SEE ALSO
.Xr ioctl 2 ,
.Xr bt 5 ,
.Xr btrace 8
.Sh HISTORY
The
.Nm
dynamic tracing mechanism first appeared in
.Ox 6.7 .