DT(4)

NAME
dt - dynamic tracer

SYNOPSIS
pseudo-device dt

DESCRIPTION
System and application tracing can happen in the kernel. It has to be configured and enabled through the ioctl(2) interface exposed by the pseudo-device /dev/dt.

This device can only be opened when the kern.allowdt sysctl(2) variable is set.

IOCTL INTERFACE
The ioctl(2) command codes below are defined in <dev/dt/dtvar.h>.

DTIOCGPLIST struct dtioc_probe *dtpr
    Get available probe entries.

        struct dtioc_probe {
        	size_t		 	 dtpr_size;
        	struct dtioc_probe_info	*dtpr_probes;
        };

    If 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, dtpr_size is always set to the total size required to hold all probe entries (i.e., it is set to sizeof(struct dtioc_probe_info) * dt_nprobes).

DTIOCGSTATS struct dtioc_stat *dtst
    Get statistics for current recording.

        struct dtioc_stat {
        	uint64_t		 dtst_readevt;
        	uint64_t		 dtst_dropevt;
        };

DTIOCRECORD int on
    Start or stop recording.

DTIOCPRBENABLE struct dtioc_req *dtrq
    Enable the given probe for recording.

        struct dtioc_req {
        	uint32_t		 dtrq_pbn;
        	struct dt_filter	 dtrq_filter;
        	uint32_t		 dtrq_rate;
        	uint64_t		 dtrq_evtflags;
        };

FILES
/dev/dt
    dynamic tracing device.

ERRORS
An open of /dev/dt will fail if:

[EPERM]
    the kern.allowdt sysctl(2) variable wasn't set.

[ENOMEM]
    not enough memory space was available.

SEE ALSO
ioctl(2), bt(5), btrace(8)

HISTORY
The dt dynamic tracing mechanism first appeared in OpenBSD 6.7.