MirOS Manual: ktrace(9), ktrcsw(9), ktremul(9), ktrgenio(9), ktrnamei(9), KTRPOINT(9), ktrpsig(9), ktrsyscall(9), ktrsysret(9)

KTRACE(9)                     BSD Kernel Manual                      KTRACE(9)


     ktrcsw, ktremul, ktrgenio, ktrnamei, ktrpsig, ktrsyscall, ktrsysret,
     KTRPOINT - process tracing kernel interface


     #include <sys/param.h>
     #include <sys/proc.h>
     #include <sys/ktrace.h>

     KTRPOINT(struct proc *p, int type);

     ktrcsw(struct proc *p, int out, int user);

     ktremul(struct proc *p, char *emul);

     ktrgenio(struct proc *p, int fd, enum uio_rw rw, struct iovec *iov,
             int len, int error);

     ktrnamei(struct proc *p, char *path);

     ktrpsig(struct proc *p, int sig, sig_t action, int mask, int code,
             siginfo_t *si);

     ktrsyscall(struct proc *p, register_t code, size_t argsize,
             register_t args[]);

     ktrsysret(struct proc *p, register_t code, int error, register_t retval);


     This interface is meant for kernel subsystems and machine dependent code
     to inform the user about the events occurring to the process should trac-
     ing of such be enabled using the ktrace(2) system call. Each of the func-
     tions (except for KTRPOINT) is meant for a particular type of event and
     is described below.

     The KTRPOINT() macro should be used before calling any of the other trac-
     ing functions to verify that tracing for that particular type of events
     has been enabled. Possible values for the type argument are a mask of the
     KTRFAC_ values described in ktrace(2).

     ktrcsw() is called during the context switching. The user argument is a
     boolean value specifying whether the process has been put into a waiting
     state (true) or placed onto a running queue (false). Furthermore the user
     argument indicates whether a voluntary (false) or an involuntary (true)
     switching has happened.

     ktremul() should be called every time emulation for the execution en-
     vironment is changed and thus the name of which is given in the name ar-

     ktrgenio() should be called for each generic input/output transaction
     that is described by the fd file descriptor, rw transaction type (consult
     sys/sys/uio.h for the enum uio_rw definition), iov input/output data vec-
     tor, len size of the iov vector, and, lastly, error status of the tran-

     ktrnamei() should be called every time a namei(9) operation is performed
     over the path name.

     ktrpsig() should be called for each signal sig posted for the traced pro-
     cess. The action taken is one of SIG_DFL, SIG_IGN, or SIG_ERR as
     described in the sigaction(2) document. mask is the current traced pro-
     cess' signal mask. Signal-specific code and siginfo_t structure as
     described in <sys/siginfo.h> are given in the code and si arguments

     ktrsyscall() should be called for each system call number code executed
     with arguments in args of total count of argsize.

     ktrsysret() should be called for a return from each system call number
     code and error number of error as described in errno(2) and a return
     value in retval that is syscall dependent.


     The process tracing facility is implemented in sys/kern/kern_ktrace.c.


     errno(2), ktrace(2), syscall(2), namei(9), syscall(9)


     The process tracing facility first appeared in 4.4BSD.

     The ktrace section manual page appeared in OpenBSD 3.4.

MirOS BSD #10-current           July 21, 2003                                1

Generated on 2017-04-03 16:26:17 by $MirOS: src/scripts/roff2htm,v 1.88 2017/01/29 00:51:06 tg Exp $

These manual pages and other documentation are copyrighted by their respective writers; their source is available at our CVSweb, AnonCVS, and other mirrors. The rest is Copyright © 2002–2017 The MirOS Project, Germany.
This product includes material provided by mirabilos.

This manual page’s HTML representation is supposed to be valid XHTML/1.1; if not, please send a bug report — diffs preferred.