The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/sys/ktrace.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright (c) 1988, 1993
    3  *      The Regents of the University of California.  All rights reserved.
    4  *
    5  * Redistribution and use in source and binary forms, with or without
    6  * modification, are permitted provided that the following conditions
    7  * are met:
    8  * 1. Redistributions of source code must retain the above copyright
    9  *    notice, this list of conditions and the following disclaimer.
   10  * 2. Redistributions in binary form must reproduce the above copyright
   11  *    notice, this list of conditions and the following disclaimer in the
   12  *    documentation and/or other materials provided with the distribution.
   13  * 3. All advertising materials mentioning features or use of this software
   14  *    must display the following acknowledgement:
   15  *      This product includes software developed by the University of
   16  *      California, Berkeley and its contributors.
   17  * 4. Neither the name of the University nor the names of its contributors
   18  *    may be used to endorse or promote products derived from this software
   19  *    without specific prior written permission.
   20  *
   21  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
   22  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   24  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   25  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   26  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   27  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   28  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   29  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   30  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   31  * SUCH DAMAGE.
   32  *
   33  *      @(#)ktrace.h    8.1 (Berkeley) 6/2/93
   34  * $FreeBSD: src/sys/sys/ktrace.h,v 1.19.2.3 2001/01/06 09:58:23 alfred Exp $
   35  * $DragonFly: src/sys/sys/ktrace.h,v 1.10 2008/04/14 12:01:53 dillon Exp $
   36  */
   37 
   38 #ifndef _SYS_KTRACE_H_
   39 #define _SYS_KTRACE_H_
   40 
   41 #ifndef _SYS_TYPES_H_
   42 #include <sys/types.h>
   43 #endif
   44 #ifndef _SYS_TIME_H_
   45 #include <sys/time.h>
   46 #endif
   47 #ifndef _SYS_UIO_H_
   48 #include <sys/uio.h>
   49 #endif
   50 #ifndef _SYS_SIGNAL_H_
   51 #include <sys/signal.h>
   52 #endif
   53 
   54 struct proc;
   55 
   56 struct ktrace_node {
   57         struct vnode    *kn_vp;
   58         int             kn_refs;
   59 };
   60 
   61 typedef struct ktrace_node *ktrace_node_t;
   62 
   63 
   64 /*
   65  * operations to ktrace system call  (KTROP(op))
   66  */
   67 #define KTROP_SET               0       /* set trace points */
   68 #define KTROP_CLEAR             1       /* clear trace points */
   69 #define KTROP_CLEARFILE         2       /* stop all tracing to file */
   70 #define KTROP(o)                ((o)&3) /* macro to extract operation */
   71 /*
   72  * flags (ORed in with operation)
   73  */
   74 #define KTRFLAG_DESCEND         4       /* perform op on all children too */
   75 
   76 /*
   77  * ktrace record header
   78  */
   79 struct ktr_header {
   80         int     ktr_len;                /* length of buf */
   81         short   ktr_type;               /* trace record type */
   82         short   ktr_flags;              /* reserved for future use */
   83         pid_t   ktr_pid;                /* process id */
   84         lwpid_t ktr_tid;                /* lwp id */
   85         char    ktr_comm[MAXCOMLEN+1];  /* command name */
   86         struct  timeval ktr_time;       /* timestamp */
   87         caddr_t ktr_buf;
   88 };
   89 
   90 #define KTRH_THREADED   0x0001          /* multiple threads present */
   91 
   92 #define KTRH_CPUID_ENCODE(cpuid)        (((cpuid) & 0xFF) << 8)
   93 #define KTRH_CPUID_DECODE(flags)        (((flags) >> 8) & 0xFF)
   94 
   95 /*
   96  * Test for kernel trace point (MP SAFE)
   97  */
   98 #define KTRPOINT(td, type)      \
   99         ((td)->td_proc && ((td)->td_proc->p_traceflag & (1<<(type))) && \
  100         (((td)->td_proc->p_traceflag | (td)->td_lwp->lwp_traceflag) & \
  101           KTRFAC_ACTIVE) == 0)
  102 
  103 
  104 /*
  105  * ktrace record types
  106  */
  107 
  108 /*
  109  * KTR_SYSCALL - system call record
  110  */
  111 #define KTR_SYSCALL     1
  112 struct ktr_syscall {
  113         short   ktr_code;               /* syscall number */
  114         short   ktr_narg;               /* number of arguments */
  115         /*
  116          * Followed by ktr_narg register_t (can be more than 8)
  117          */
  118         register_t      ktr_args[8];
  119 };
  120 
  121 /*
  122  * KTR_SYSRET - return from system call record
  123  */
  124 #define KTR_SYSRET      2
  125 struct ktr_sysret {
  126         short   ktr_code;
  127         short   ktr_eosys;
  128         int     ktr_error;
  129         register_t      ktr_retval;
  130 };
  131 
  132 /*
  133  * KTR_NAMEI - namei record
  134  */
  135 #define KTR_NAMEI       3
  136         /* record contains pathname */
  137 
  138 /*
  139  * KTR_GENIO - trace generic process i/o
  140  */
  141 #define KTR_GENIO       4
  142 struct ktr_genio {
  143         int     ktr_fd;
  144         enum    uio_rw ktr_rw;
  145         /*
  146          * followed by data successfully read/written
  147          */
  148 };
  149 
  150 /*
  151  * KTR_PSIG - trace processed signal
  152  */
  153 #define KTR_PSIG        5
  154 struct ktr_psig {
  155         int     signo;
  156         sig_t   action;
  157         int     code;
  158         sigset_t mask;
  159 };
  160 
  161 /*
  162  * KTR_CSW - trace context switches
  163  */
  164 #define KTR_CSW         6
  165 struct ktr_csw {
  166         int     out;    /* 1 if switch out, 0 if switch in */
  167         int     user;   /* 1 if usermode (ivcsw), 0 if kernel (vcsw) */
  168 };
  169 
  170 /*
  171  * KTR_USER - data comming from userland
  172  */
  173 #define KTR_USER_MAXLEN 2048    /* maximum length of passed data */
  174 #define KTR_USER        7
  175 
  176 /*
  177  * kernel trace points (in p_traceflag)
  178  */
  179 #define KTRFAC_MASK     0x00ffffff
  180 #define KTRFAC_SYSCALL  (1<<KTR_SYSCALL)
  181 #define KTRFAC_SYSRET   (1<<KTR_SYSRET)
  182 #define KTRFAC_NAMEI    (1<<KTR_NAMEI)
  183 #define KTRFAC_GENIO    (1<<KTR_GENIO)
  184 #define KTRFAC_PSIG     (1<<KTR_PSIG)
  185 #define KTRFAC_CSW      (1<<KTR_CSW)
  186 #define KTRFAC_USER     (1<<KTR_USER)
  187 /*
  188  * trace flags (also in p_traceflags)
  189  */
  190 #define KTRFAC_ROOT     0x80000000      /* root set this trace */
  191 #define KTRFAC_INHERIT  0x40000000      /* pass trace flags to children */
  192 #define KTRFAC_ACTIVE   0x20000000      /* ktrace logging in progress, ignore */
  193 
  194 #ifdef  _KERNEL
  195 void    ktrnamei (struct lwp *,char *);
  196 void    ktrcsw (struct lwp *,int,int);
  197 void    ktrpsig (struct lwp *, int, sig_t, sigset_t *, int);
  198 void    ktrgenio (struct lwp *, int, enum uio_rw, struct uio *, int);
  199 void    ktrsyscall (struct lwp *, int, int narg, register_t args[]);
  200 void    ktrsysret (struct lwp *, int, int, register_t);
  201 void    ktrdestroy (struct ktrace_node **);
  202 struct ktrace_node *ktrinherit (struct ktrace_node *);
  203 
  204 #else
  205 
  206 #include <sys/cdefs.h>
  207 
  208 __BEGIN_DECLS
  209 int     ktrace (const char *, int, int, pid_t);
  210 int     utrace (const void *, size_t);
  211 __END_DECLS
  212 
  213 #endif
  214 
  215 #endif

Cache object: 162d74f8f76a19daf610825bba7dda3e


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.