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/bsd/sys/kdebug.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) 2000 Apple Computer, Inc. All rights reserved.
    3  *
    4  * @APPLE_LICENSE_HEADER_START@
    5  * 
    6  * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
    7  * 
    8  * This file contains Original Code and/or Modifications of Original Code
    9  * as defined in and that are subject to the Apple Public Source License
   10  * Version 2.0 (the 'License'). You may not use this file except in
   11  * compliance with the License. Please obtain a copy of the License at
   12  * http://www.opensource.apple.com/apsl/ and read it before using this
   13  * file.
   14  * 
   15  * The Original Code and all software distributed under the License are
   16  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
   17  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
   18  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
   19  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
   20  * Please see the License for the specific language governing rights and
   21  * limitations under the License.
   22  * 
   23  * @APPLE_LICENSE_HEADER_END@
   24  */
   25 
   26 /*      Copyright (c) 1997 Apple Computer, Inc.  All rights reserved. 
   27  *
   28  * kdebug.h -   kernel_debug definitions
   29  *
   30  */
   31 
   32 #ifndef BSD_SYS_KDEBUG_H
   33 #define BSD_SYS_KDEBUG_H
   34 
   35 #include <sys/appleapiopts.h>
   36 #include <sys/cdefs.h>
   37 __BEGIN_DECLS
   38 
   39 #ifdef __APPLE_API_UNSTABLE
   40 
   41 #include <mach/clock_types.h>
   42 #include <stdint.h>
   43 #if     defined(KERNEL_BUILD)
   44 #include <kdebug.h>
   45 #endif /* KERNEL_BUILD */
   46 
   47 /*
   48  * types of faults that vm_fault handles
   49  * and creates trace entries for
   50  */
   51 #define DBG_ZERO_FILL_FAULT   1
   52 #define DBG_PAGEIN_FAULT      2
   53 #define DBG_COW_FAULT         3
   54 #define DBG_CACHE_HIT_FAULT   4
   55 
   56 
   57 /* The debug code consists of the following 
   58 *
   59 * ----------------------------------------------------------------------
   60 *|              |               |                               |Func   |
   61 *| Class (8)    | SubClass (8)  |          Code (14)            |Qual(2)|
   62 * ----------------------------------------------------------------------
   63 * The class specifies the higher level 
   64 */
   65 
   66 /* The Function qualifiers  */
   67 #define DBG_FUNC_START          1
   68 #define DBG_FUNC_END            2
   69 #define DBG_FUNC_NONE           0
   70 
   71 
   72 /* The Kernel Debug Classes  */
   73 #define DBG_MACH                1
   74 #define DBG_NETWORK             2       
   75 #define DBG_FSYSTEM             3
   76 #define DBG_BSD                 4
   77 #define DBG_IOKIT               5
   78 #define DBG_DRIVERS             6
   79 #define DBG_TRACE               7
   80 #define DBG_DLIL                8
   81 #define DBG_MISC                20
   82 #define DBG_DYLD                31
   83 #define DBG_QT                  32
   84 #define DBG_MIG                 255
   85 
   86 /* **** The Kernel Debug Sub Classes for Mach (DBG_MACH) **** */
   87 #define DBG_MACH_EXCP_DFLT      0x03    /* Data Translation Fault */
   88 #define DBG_MACH_EXCP_IFLT      0x04    /* Inst Translation Fault */
   89 #define DBG_MACH_EXCP_INTR      0x05    /* Interrupts */
   90 #define DBG_MACH_EXCP_ALNG      0x06    /* Alignment Exception */
   91 #define DBG_MACH_EXCP_TRAP      0x07    /* Traps */
   92 #define DBG_MACH_EXCP_FP        0x08    /* FP Unavail */
   93 #define DBG_MACH_EXCP_DECI      0x09    /* Decrementer Interrupt */
   94 #define DBG_MACH_EXCP_SC        0x0C    /* System Calls */
   95 #define DBG_MACH_EXCP_TRACE     0x0D    /* Trace exception */
   96 #define DBG_MACH_EXCP_EMUL      0x0E    /* Instruction emulated */
   97 #define DBG_MACH_IHDLR          0x10    /* Interrupt Handlers */
   98 #define DBG_MACH_IPC            0x20    /* Inter Process Comm */
   99 #define DBG_MACH_VM             0x30    /* Virtual Memory */
  100 #define DBG_MACH_SCHED          0x40    /* Scheduler */
  101 #define DBG_MACH_MSGID_INVALID  0x50    /* Messages - invalid */
  102 
  103 /* Codes for Scheduler (DBG_MACH_SCHED) */     
  104 #define MACH_SCHED              0x0     /* Scheduler */
  105 #define MACH_STACK_ATTACH       0x1     /* stack_attach() */
  106 #define MACH_STACK_HANDOFF      0x2     /* stack_handoff() */
  107 #define MACH_CALL_CONT          0x3     /* call_continuation() */
  108 #define MACH_CALLOUT            0x4     /* callouts */
  109 #define MACH_STACK_DETACH       0x5
  110 #define MACH_MAKE_RUNNABLE      0x6     /* make thread runnable */
  111 #define MACH_PROMOTE                    0x7             /* promoted due to resource */
  112 #define MACH_DEMOTE                             0x8             /* promotion undone */
  113 #define MACH_PREBLOCK_MUTEX             0x9             /* preblocking on mutex */
  114 
  115 /* **** The Kernel Debug Sub Classes for Network (DBG_NETWORK) **** */
  116 #define DBG_NETIP       1       /* Internet Protocol */
  117 #define DBG_NETARP      2       /* Address Resolution Protocol */
  118 #define DBG_NETUDP      3       /* User Datagram Protocol */
  119 #define DBG_NETTCP      4       /* Transmission Control Protocol */
  120 #define DBG_NETICMP     5       /* Internet Control Message Protocol */
  121 #define DBG_NETIGMP     6       /* Internet Group Management Protocol */
  122 #define DBG_NETRIP      7       /* Routing Information Protocol */
  123 #define DBG_NETOSPF     8       /* Open Shortest Path First */
  124 #define DBG_NETISIS     9       /* Intermediate System to Intermediate System */
  125 #define DBG_NETSNMP     10      /* Simple Network Management Protocol */
  126 #define DBG_NETSOCK     11      /* Socket Layer */
  127 
  128 /* For Apple talk */
  129 #define DBG_NETAARP     100     /* Apple ARP */
  130 #define DBG_NETDDP      101     /* Datagram Delivery Protocol */
  131 #define DBG_NETNBP      102     /* Name Binding Protocol */
  132 #define DBG_NETZIP      103     /* Zone Information Protocol */
  133 #define DBG_NETADSP     104     /* Name Binding Protocol */
  134 #define DBG_NETATP      105     /* Apple Transaction Protocol */
  135 #define DBG_NETASP      106     /* Apple Session Protocol */
  136 #define DBG_NETAFP      107     /* Apple Filing Protocol */
  137 #define DBG_NETRTMP     108     /* Routing Table Maintenance Protocol */
  138 #define DBG_NETAURP     109     /* Apple Update Routing Protocol */
  139 #define DBG_NETIPSEC    128     /* IPsec Protocol  */
  140 
  141 /* **** The Kernel Debug Sub Classes for IOKIT (DBG_IOKIT) **** */
  142 #define DBG_IOSCSI      1       /* SCSI */
  143 #define DBG_IODISK      2       /* Disk layers */
  144 #define DBG_IONETWORK   3       /* Network layers */
  145 #define DBG_IOKEYBOARD  4       /* Keyboard */
  146 #define DBG_IOPOINTING  5       /* Pointing Devices */
  147 #define DBG_IOAUDIO     6       /* Audio */
  148 #define DBG_IOFLOPPY    7       /* Floppy */
  149 #define DBG_IOSERIAL    8       /* Serial */
  150 #define DBG_IOTTY       9       /* TTY layers */
  151 #define DBG_IOWORKLOOP  10      /* Work from work loop */
  152 #define DBG_IOINTES     11      /* Interrupt event source */
  153 #define DBG_IOCLKES     12      /* Clock event source */
  154 #define DBG_IOCMDQ      13      /* Command queue latencies */
  155 #define DBG_IOMCURS     14      /* Memory Cursor */
  156 #define DBG_IOMDESC     15      /* Memory Descriptors */
  157 #define DBG_IOPOWER     16      /* Power Managerment */
  158 
  159 /* **** The Kernel Debug Sub Classes for Device Drivers (DBG_DRIVERS) **** */
  160 #define DBG_DRVSCSI     1       /* SCSI */
  161 #define DBG_DRVDISK     2       /* Disk layers */
  162 #define DBG_DRVNETWORK  3       /* Network layers */
  163 #define DBG_DRVKEYBOARD 4       /* Keyboard */
  164 #define DBG_DRVPOINTING 5       /* Pointing Devices */
  165 #define DBG_DRVAUDIO    6       /* Audio */
  166 #define DBG_DRVFLOPPY   7       /* Floppy */
  167 #define DBG_DRVSERIAL   8       /* Serial */
  168 #define DBG_DRVSPLT     9
  169 
  170 /* **** The Kernel Debug Sub Classes for the DLIL Layer (DBG_DLIL) **** */
  171 #define DBG_DLIL_STATIC 1       /* Static DLIL code */
  172 #define DBG_DLIL_PR_MOD 2       /* DLIL Protocol Module */
  173 #define DBG_DLIL_IF_MOD 3       /* DLIL Interface Module */
  174 #define DBG_DLIL_PR_FLT 4       /* DLIL Protocol Filter */
  175 #define DBG_DLIL_IF_FLT 5       /* DLIL Interface FIlter */
  176 
  177 /* The Kernel Debug Sub Classes for File System */
  178 #define DBG_FSRW      1       /* reads and writes to the filesystem */
  179 #define DBG_DKRW      2       /* reads and writes to the disk */
  180 #define DBG_FSVN      3       /* vnode operations (inc. locking/unlocking) */
  181 #define DBG_FSLOOOKUP 4       /* namei and other lookup-related operations */
  182 
  183 /* The Kernel Debug Sub Classes for BSD */
  184 #define DBG_BSD_EXCP_SC 0x0C    /* System Calls */
  185 #define DBG_BSD_AIO             0x0D    /* aio (POSIX async IO) */
  186 #define DBG_BSD_SC_EXTENDED_INFO 0x0E    /* System Calls, extended info */
  187 
  188 /* The Kernel Debug Sub Classes for DBG_TRACE */
  189 #define DBG_TRACE_DATA      0
  190 #define DBG_TRACE_STRING    1
  191 
  192 /* The Kernel Debug Sub Classes for DBG_DYLD */
  193 #define DBG_DYLD_STRING   5
  194 
  195 /* The Kernel Debug modifiers for the DBG_DKRW sub class */
  196 #define DKIO_DONE       0x01
  197 #define DKIO_READ       0x02
  198 #define DKIO_ASYNC      0x04
  199 #define DKIO_META       0x08
  200 #define DKIO_PAGING     0x10
  201 
  202 /**********************************************************************/
  203 
  204 #define KDBG_CODE(Class, SubClass, code) (((Class & 0xff) << 24) | ((SubClass & 0xff) << 16) | ((code & 0x3fff)  << 2))
  205 
  206 #define KDBG_MIGCODE(msgid) ((DBG_MIG << 24) | (((msgid) & 0x3fffff)  << 2))
  207 
  208 #define MACHDBG_CODE(SubClass, code) KDBG_CODE(DBG_MACH, SubClass, code)
  209 #define NETDBG_CODE(SubClass, code) KDBG_CODE(DBG_NETWORK, SubClass, code)
  210 #define FSDBG_CODE(SubClass, code) KDBG_CODE(DBG_FSYSTEM, SubClass, code)
  211 #define BSDDBG_CODE(SubClass, code) KDBG_CODE(DBG_BSD, SubClass, code)
  212 #define IOKDBG_CODE(SubClass, code) KDBG_CODE(DBG_IOKIT, SubClass, code)
  213 #define DRVDBG_CODE(SubClass, code) KDBG_CODE(DBG_DRIVERS, SubClass, code)
  214 #define TRACEDBG_CODE(SubClass,code) KDBG_CODE(DBG_TRACE, SubClass, code)
  215 #define MISCDBG_CODE(SubClass,code) KDBG_CODE(DBG_MISC, SubClass, code)
  216 #define DLILDBG_CODE(SubClass,code) KDBG_CODE(DBG_DLIL, SubClass, code)
  217 #define DYLDDBG_CODE(SubClass,code) KDBG_CODE(DBG_DYLD, SubClass, code)
  218 #define QTDBG_CODE(SubClass,code) KDBG_CODE(DBG_QT, SubClass, code)
  219 
  220 /*   Usage:
  221 * kernel_debug((KDBG_CODE(DBG_NETWORK, DNET_PROTOCOL, 51) | DBG_FUNC_START), 
  222 *       offset, 0, 0, 0,0) 
  223 * 
  224 * For ex, 
  225 * 
  226 * #include <sys/kdebug.h>
  227 * 
  228 * #define DBG_NETIPINIT NETDBG_CODE(DBG_NETIP,1)
  229 * 
  230 * 
  231 * void
  232 * ip_init()
  233 * {
  234 *       register struct protosw *pr;
  235 *       register int i;
  236 *       
  237 *       KERNEL_DEBUG(DBG_NETIPINIT | DBG_FUNC_START, 0,0,0,0,0)
  238 *       --------
  239 *       KERNEL_DEBUG(DBG_NETIPINIT, 0,0,0,0,0)
  240 *       --------
  241 *       KERNEL_DEBUG(DBG_NETIPINIT | DBG_FUNC_END, 0,0,0,0,0)
  242 * }
  243 *
  244 
  245 */
  246 
  247 extern unsigned int kdebug_enable;
  248 #define KDEBUG_ENABLE_TRACE   0x1
  249 #define KDEBUG_ENABLE_ENTROPY 0x2
  250 #define KDEBUG_ENABLE_CHUD    0x4
  251 
  252 #define KERNEL_DEBUG_CONSTANT(x,a,b,c,d,e)    \
  253 do {                                    \
  254     if (kdebug_enable)                  \
  255         kernel_debug(x,a,b,c,d,e);      \
  256 } while(0)
  257 
  258 #define KERNEL_DEBUG_CONSTANT1(x,a,b,c,d,e)    \
  259 do {                                    \
  260     if (kdebug_enable)                  \
  261         kernel_debug1(x,a,b,c,d,e);     \
  262 } while(0)
  263 
  264 extern void kernel_debug(unsigned int debugid, unsigned int arg1, unsigned int arg2, unsigned int arg3,  unsigned int arg4, unsigned int arg5);
  265 
  266 extern void kernel_debug1(unsigned int debugid, unsigned int arg1, unsigned int arg2, unsigned int arg3,  unsigned int arg4, unsigned int arg5);
  267 
  268 #if     KDEBUG
  269 
  270 #define KERNEL_DEBUG(x,a,b,c,d,e)       \
  271 do {                                    \
  272     if (kdebug_enable)                  \
  273         kernel_debug(x,a,b,c,d,e);      \
  274 } while(0)
  275 
  276 #define KERNEL_DEBUG1(x,a,b,c,d,e)      \
  277 do {                                    \
  278     if (kdebug_enable)                  \
  279         kernel_debug1(x,a,b,c,d,e);     \
  280 } while(0)
  281 
  282 #else
  283 
  284 #define KERNEL_DEBUG(x,a,b,c,d,e)
  285 #define KERNEL_DEBUG1(x,a,b,c,d,e)
  286 
  287 #endif
  288 
  289 #endif /* __APPLE_API_UNSTABLE */
  290 __END_DECLS
  291 
  292 
  293 #ifdef KERNEL_PRIVATE
  294 #ifdef __APPLE_API_PRIVATE
  295 /*
  296  * private kernel_debug definitions
  297  */
  298 
  299 typedef struct {
  300 uint64_t        timestamp;
  301 unsigned int    arg1;
  302 unsigned int    arg2;
  303 unsigned int    arg3;
  304 unsigned int    arg4;
  305 unsigned int    arg5;       /* will hold current thread */
  306 unsigned int    debugid;
  307 } kd_buf;
  308 
  309 #define KDBG_THREAD_MASK 0x7fffffff
  310 #define KDBG_CPU_MASK    0x80000000
  311 
  312 /* Debug Flags */
  313 #define KDBG_INIT       0x1
  314 #define KDBG_NOWRAP     0x2
  315 #define KDBG_FREERUN    0x4
  316 #define KDBG_WRAPPED    0x8
  317 #define KDBG_USERFLAGS  (KDBG_FREERUN|KDBG_NOWRAP|KDBG_INIT)
  318 #define KDBG_PIDCHECK   0x10
  319 #define KDBG_MAPINIT    0x20
  320 #define KDBG_PIDEXCLUDE 0x40
  321 
  322 typedef struct {
  323         unsigned int    type;
  324         unsigned int    value1;
  325         unsigned int    value2;
  326         unsigned int    value3;
  327         unsigned int    value4;
  328         
  329 } kd_regtype;
  330 
  331 typedef struct
  332 {
  333     int nkdbufs;
  334     int nolog;
  335     int flags;
  336     int nkdthreads;
  337     int bufid;
  338 } kbufinfo_t;
  339 
  340 typedef struct
  341 {
  342   unsigned int thread;
  343   int          valid;
  344   char         command[20];
  345 } kd_threadmap;
  346 
  347 #define KDBG_CLASSTYPE          0x10000
  348 #define KDBG_SUBCLSTYPE         0x20000
  349 #define KDBG_RANGETYPE          0x40000
  350 #define KDBG_TYPENONE           0x80000
  351 #define KDBG_CKTYPES            0xF0000
  352 
  353 #define KDBG_RANGECHECK 0x100000
  354 #define KDBG_VALCHECK   0x200000        /* Check up to 4 individual values */
  355 
  356 #define KDBG_BUFINIT    0x80000000
  357 
  358 /* Control operations */
  359 #define KDBG_EFLAGS     1
  360 #define KDBG_DFLAGS     2
  361 #define KDBG_ENABLE     3
  362 #define KDBG_SETNUMBUF  4
  363 #define KDBG_GETNUMBUF  5
  364 #define KDBG_SETUP      6
  365 #define KDBG_REMOVE     7
  366 #define KDBG_SETREGCODE 8
  367 #define KDBG_GETREGCODE 9
  368 #define KDBG_READTRACE  10
  369 #define KDBG_PIDTR      11
  370 #define KDBG_THRMAP     12
  371 #define KDBG_PIDEX      14
  372 #define KDBG_SETRTCDEC  15
  373 #define KDBG_KDGETENTROPY 16
  374 
  375 /* Minimum value allowed when setting decrementer ticks */
  376 #define KDBG_MINRTCDEC  2500
  377 
  378 
  379 /* PCSAMPLES control operations */
  380 #define PCSAMPLE_DISABLE   1
  381 #define PCSAMPLE_SETNUMBUF 2
  382 #define PCSAMPLE_GETNUMBUF 3
  383 #define PCSAMPLE_SETUP     4
  384 #define PCSAMPLE_REMOVE    5
  385 #define PCSAMPLE_READBUF   6
  386 #define PCSAMPLE_SETREG    7
  387 #define PCSAMPLE_COMM      8
  388 
  389 #define MAX_PCSAMPLES    1000000     /* Maximum number of pc's in a single buffer */
  390 
  391 
  392 extern unsigned int pcsample_enable;
  393 
  394 typedef struct
  395 {
  396     int npcbufs;
  397     int bufsize;
  398     int enable;
  399     unsigned long pcsample_beg;
  400     unsigned long pcsample_end;
  401 } pcinfo_t;
  402 
  403 #endif /* __APPLE_API_PRIVATE */
  404 #endif /* KERNEL_PRIVATE */
  405 
  406 #endif /* !BSD_SYS_KDEBUG_H */

Cache object: 4562444899cfcd15e79aec12f51fe133


[ 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.