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