]>
git.saurik.com Git - apple/xnu.git/blob - bsd/sys/kdebug.h
   2  * Copyright (c) 2000-2019 Apple Inc. All rights reserved. 
   4  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 
   6  * This file contains Original Code and/or Modifications of Original Code 
   7  * as defined in and that are subject to the Apple Public Source License 
   8  * Version 2.0 (the 'License'). You may not use this file except in 
   9  * compliance with the License. The rights granted to you under the License 
  10  * may not be used to create, or enable the creation or redistribution of, 
  11  * unlawful or unlicensed copies of an Apple operating system, or to 
  12  * circumvent, violate, or enable the circumvention or violation of, any 
  13  * terms of an Apple operating system software license agreement. 
  15  * Please obtain a copy of the License at 
  16  * http://www.opensource.apple.com/apsl/ and read it before using this file. 
  18  * The Original Code and all software distributed under the License are 
  19  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  20  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  21  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 
  22  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  23  * Please see the License for the specific language governing rights and 
  24  * limitations under the License. 
  26  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 
  29 #ifndef BSD_SYS_KDEBUG_H 
  30 #define BSD_SYS_KDEBUG_H 
  32 #include <sys/appleapiopts.h> 
  33 #include <sys/cdefs.h> 
  37 #ifdef __APPLE_API_UNSTABLE 
  40  * Kdebug is a kernel facility for tracing events occurring on a system.  User 
  41  * space processes should prefer os_signpost, instead. 
  43  * This header defines reserved debugids, which are 32-bit values that describe 
  46  * +----------------+----------------+----------------------------+----+ 
  47  * |   Class (8)    |  Subclass (8)  |          Code (14)         |Func| 
  49  * +----------------+----------------+----------------------------+----+ 
  50  * \_________________________________/ 
  52  * \________________________________________________________________00_/ 
  54  * \___________________________________________________________________/ 
  57  * The eventid is a hierarchical ID, indicating which components an event is 
  58  * referring to.  The debugid includes an eventid and two function qualifier 
  59  * bits, to determine the structural significance of an event (whether it 
  60  * starts or ends an interval). 
  63 #define KDBG_CLASS_MASK   (0xff000000) 
  64 #define KDBG_CLASS_OFFSET (24) 
  65 #define KDBG_CLASS_MAX    (0xff) 
  67 #define KDBG_SUBCLASS_MASK   (0x00ff0000) 
  68 #define KDBG_SUBCLASS_OFFSET (16) 
  69 #define KDBG_SUBCLASS_MAX    (0xff) 
  71 /* class and subclass mask */ 
  72 #define KDBG_CSC_MASK   (0xffff0000) 
  73 #define KDBG_CSC_OFFSET (KDBG_SUBCLASS_OFFSET) 
  74 #define KDBG_CSC_MAX    (0xffff) 
  76 #define KDBG_CODE_MASK   (0x0000fffc) 
  77 #define KDBG_CODE_OFFSET (2) 
  78 #define KDBG_CODE_MAX    (0x3fff) 
  80 #define KDBG_EVENTID_MASK (0xfffffffc) 
  81 #define KDBG_FUNC_MASK    (0x00000003) 
  83 /* Generate an eventid corresponding to Class, SubClass, and Code. */ 
  84 #define KDBG_EVENTID(Class, SubClass, Code)                \ 
  85         (((unsigned)((Class)    &   0xff) << KDBG_CLASS_OFFSET)    | \ 
  86          ((unsigned)((SubClass) &   0xff) << KDBG_SUBCLASS_OFFSET) | \ 
  87          ((unsigned)((Code)     & 0x3fff) << KDBG_CODE_OFFSET)) 
  88 /* Deprecated macro using old naming convention. */ 
  89 #define KDBG_CODE(Class, SubClass, Code) \ 
  90         KDBG_EVENTID(Class, SubClass, Code) 
  92 /* Extract pieces of the debug code. */ 
  93 #define KDBG_EXTRACT_CLASS(Debugid) \ 
  94         ((uint8_t)(((Debugid) & KDBG_CLASS_MASK) >> KDBG_CLASS_OFFSET)) 
  95 #define KDBG_EXTRACT_SUBCLASS(Debugid) \ 
  96         ((uint8_t)(((Debugid) & KDBG_SUBCLASS_MASK) >> KDBG_SUBCLASS_OFFSET)) 
  97 #define KDBG_EXTRACT_CSC(Debugid) \ 
  98         ((uint16_t)(((Debugid) & KDBG_CSC_MASK) >> KDBG_CSC_OFFSET)) 
  99 #define KDBG_EXTRACT_CODE(Debugid) \ 
 100         ((uint16_t)(((Debugid) & KDBG_CODE_MASK) >> KDBG_CODE_OFFSET)) 
 101 #define KDBG_CLASS_ENCODE(Class, SubClass) KDBG_EVENTID(Class, SubClass, 0) 
 102 #define KDBG_CLASS_DECODE(Debugid) (Debugid & KDBG_CSC_MASK) 
 104 /* function qualifiers  */ 
 105 #define DBG_FUNC_START 1U 
 106 #define DBG_FUNC_END   2U 
 107 #define DBG_FUNC_NONE  0U 
 109 /* The Kernel Debug Classes  */ 
 112 #define DBG_NETWORK     2 
 113 #define DBG_FSYSTEM     3 
 116 #define DBG_DRIVERS     6 
 119 #define DBG_PTHREAD     9 
 120 #define DBG_CORESTORAGE 10 
 122 #define DBG_MONOTONIC   12 
 124 #define DBG_SECURITY    30 
 128 #define DBG_LAUNCHD     34 
 129 #define DBG_SILICON     35 
 131 #define DBG_IMPORTANCE  38 
 135 #define DBG_ARIADNE     43 
 136 #define DBG_DAEMON      44 
 137 #define DBG_ENERGYTRACE 45 
 138 #define DBG_DISPATCH    46 
 140 #define DBG_UMALLOC     51 
 141 #define DBG_TURNSTILE   53 
 145 /* **** The Kernel Debug Sub Classes for Mach (DBG_MACH) **** */ 
 146 #define DBG_MACH_EXCP_KTRAP_x86 0x02 /* Kernel Traps on x86 */ 
 147 #define DBG_MACH_EXCP_DFLT      0x03 /* Data Translation Fault */ 
 148 #define DBG_MACH_EXCP_IFLT      0x04 /* Inst Translation Fault */ 
 149 #define DBG_MACH_EXCP_INTR      0x05 /* Interrupts */ 
 150 #define DBG_MACH_EXCP_ALNG      0x06 /* Alignment Exception */ 
 151 #define DBG_MACH_EXCP_UTRAP_x86 0x07 /* User Traps on x86 */ 
 152 #define DBG_MACH_EXCP_FP        0x08 /* FP Unavail */ 
 153 #define DBG_MACH_EXCP_DECI      0x09 /* Decrementer Interrupt */ 
 154 #define DBG_MACH_CHUD           0x0A /* deprecated name */ 
 155 #define DBG_MACH_SIGNPOST       0x0A /* kernel signposts */ 
 156 #define DBG_MACH_EXCP_SC        0x0C /* System Calls */ 
 157 #define DBG_MACH_EXCP_TRACE     0x0D /* Trace exception */ 
 158 #define DBG_MACH_EXCP_EMUL      0x0E /* Instruction emulated */ 
 159 #define DBG_MACH_IHDLR          0x10 /* Interrupt Handlers */ 
 160 #define DBG_MACH_IPC            0x20 /* Inter Process Comm */ 
 161 #define DBG_MACH_RESOURCE       0x25 /* tracing limits, etc */ 
 162 #define DBG_MACH_VM             0x30 /* Virtual Memory */ 
 163 #define DBG_MACH_LEAKS          0x31 /* alloc/free */ 
 164 #define DBG_MACH_WORKINGSET     0x32 /* private subclass for working set related debugging */ 
 165 #define DBG_MACH_SCHED          0x40 /* Scheduler */ 
 166 #define DBG_MACH_MSGID_INVALID  0x50 /* Messages - invalid */ 
 167 #define DBG_MACH_LOCKS          0x60 /* new lock APIs */ 
 168 #define DBG_MACH_PMAP           0x70 /* pmap */ 
 169 #define DBG_MACH_CLOCK          0x80 /* clock */ 
 170 #define DBG_MACH_MP             0x90 /* MP related */ 
 171 #define DBG_MACH_VM_PRESSURE    0xA0 /* Memory Pressure Events */ 
 172 #define DBG_MACH_STACKSHOT      0xA1 /* Stackshot/Microstackshot subsystem */ 
 173 #define DBG_MACH_SFI            0xA2 /* Selective Forced Idle (SFI) */ 
 174 #define DBG_MACH_ENERGY_PERF    0xA3 /* Energy/performance resource stats */ 
 175 #define DBG_MACH_SYSDIAGNOSE    0xA4 /* sysdiagnose */ 
 176 #define DBG_MACH_ZALLOC         0xA5 /* Zone allocator */ 
 177 #define DBG_MACH_THREAD_GROUP   0xA6 /* Thread groups */ 
 178 #define DBG_MACH_COALITION      0xA7 /* Coalitions */ 
 179 #define DBG_MACH_SHAREDREGION   0xA8 /* Shared region */ 
 180 #define DBG_MACH_SCHED_CLUTCH   0xA9 /* Clutch scheduler */ 
 181 #define DBG_MACH_IO             0xAA /* I/O */ 
 183 /* Codes for DBG_MACH_IO */ 
 184 #define DBC_MACH_IO_MMIO_READ           0x1 
 185 #define DBC_MACH_IO_MMIO_WRITE          0x2 
 186 #define DBC_MACH_IO_PHYS_READ           0x3 
 187 #define DBC_MACH_IO_PHYS_WRITE          0x4 
 188 #define DBC_MACH_IO_PORTIO_READ         0x5 
 189 #define DBC_MACH_IO_PORTIO_WRITE        0x6 
 191 /* Interrupt type bits for DBG_MACH_EXCP_INTR */ 
 192 #define DBG_INTR_TYPE_UNKNOWN   0x0     /* default/unknown interrupt */ 
 193 #define DBG_INTR_TYPE_IPI       0x1     /* interprocessor interrupt */ 
 194 #define DBG_INTR_TYPE_TIMER     0x2     /* timer interrupt */ 
 195 #define DBG_INTR_TYPE_OTHER     0x3     /* other (usually external) interrupt */ 
 196 #define DBG_INTR_TYPE_PMI       0x4     /* performance monitor interrupt */ 
 198 /* Codes for Scheduler (DBG_MACH_SCHED) */ 
 199 #define MACH_SCHED              0x0     /* Scheduler */ 
 200 #define MACH_STACK_ATTACH       0x1     /* stack_attach() */ 
 201 #define MACH_STACK_HANDOFF      0x2     /* stack_handoff() */ 
 202 #define MACH_CALL_CONT          0x3     /* call_continuation() */ 
 203 #define MACH_CALLOUT            0x4     /* callouts */ 
 204 #define MACH_STACK_DETACH       0x5 
 205 #define MACH_MAKE_RUNNABLE      0x6     /* make thread runnable */ 
 206 #define MACH_PROMOTE            0x7     /* promoted due to resource (replaced by MACH_PROMOTED) */ 
 207 #define MACH_DEMOTE             0x8     /* promotion undone (replaced by MACH_UNPROMOTED) */ 
 208 #define MACH_IDLE               0x9     /* processor idling */ 
 209 #define MACH_STACK_DEPTH        0xa     /* stack depth at switch */ 
 210 #define MACH_MOVED              0xb     /* did not use original scheduling decision */ 
 211 #define MACH_PSET_LOAD_AVERAGE  0xc 
 212 #define MACH_AMP_DEBUG          0xd 
 213 #define MACH_FAILSAFE           0xe     /* tripped fixed-pri/RT failsafe */ 
 214 #define MACH_BLOCK              0xf     /* thread block */ 
 215 #define MACH_WAIT               0x10    /* thread wait assertion */ 
 216 #define MACH_GET_URGENCY        0x14    /* Urgency queried by platform */ 
 217 #define MACH_URGENCY            0x15    /* Urgency (RT/BG/NORMAL) communicated 
 220 #define MACH_REDISPATCH         0x16    /* "next thread" thread redispatched */ 
 221 #define MACH_REMOTE_AST         0x17    /* AST signal issued to remote processor */ 
 222 #define MACH_SCHED_CHOOSE_PROCESSOR     0x18    /* Result of choose_processor */ 
 223 #define MACH_DEEP_IDLE          0x19    /* deep idle on master processor */ 
 224 /* unused                       0x1a    was MACH_SCHED_DECAY_PRIORITY */ 
 225 #define MACH_CPU_THROTTLE_DISABLE       0x1b    /* Global CPU Throttle Disable */ 
 226 #define MACH_RW_PROMOTE            0x1c /* promoted due to RW lock promotion */ 
 227 #define MACH_RW_DEMOTE             0x1d /* promotion due to RW lock undone */ 
 228 #define MACH_SCHED_MAINTENANCE     0x1f /* periodic maintenance thread */ 
 229 #define MACH_DISPATCH              0x20 /* context switch completed */ 
 230 #define MACH_QUANTUM_HANDOFF       0x21 /* quantum handoff occurred */ 
 231 #define MACH_MULTIQ_DEQUEUE        0x22 /* Result of multiq dequeue */ 
 232 #define MACH_SCHED_THREAD_SWITCH   0x23 /* attempt direct context switch to hinted thread */ 
 233 #define MACH_SCHED_SMT_BALANCE     0x24 /* SMT load balancing ASTs */ 
 234 #define MACH_REMOTE_DEFERRED_AST   0x25 /* Deferred AST started against remote processor */ 
 235 #define MACH_REMOTE_CANCEL_AST     0x26 /* Canceled deferred AST for remote processor */ 
 236 #define MACH_SCHED_CHANGE_PRIORITY 0x27 /* thread sched priority changed */ 
 237 #define MACH_SCHED_UPDATE_REC_CORES     0x28    /* Change to recommended processor bitmask */ 
 238 #define MACH_STACK_WAIT            0x29 /* Thread could not be switched-to because of kernel stack shortage */ 
 239 #define MACH_THREAD_BIND           0x2a /* Thread was bound (or unbound) to a processor */ 
 240 #define MACH_WAITQ_PROMOTE         0x2b /* Thread promoted by waitq boost */ 
 241 #define MACH_WAITQ_DEMOTE          0x2c /* Thread demoted from waitq boost */ 
 242 #define MACH_SCHED_LOAD            0x2d /* load update */ 
 243 #define MACH_REC_CORES_FAILSAFE    0x2e /* recommended processor failsafe kicked in */ 
 244 #define MACH_SCHED_QUANTUM_EXPIRED 0x2f /* thread quantum expired */ 
 245 #define MACH_EXEC_PROMOTE          0x30 /* Thread promoted by exec boost */ 
 246 #define MACH_EXEC_DEMOTE           0x31 /* Thread demoted from exec boost */ 
 247 #define MACH_AMP_SIGNAL_SPILL      0x32 /* AMP spill signal sent to cpuid */ 
 248 #define MACH_AMP_STEAL             0x33 /* AMP thread stolen or spilled */ 
 249 #define MACH_SCHED_LOAD_EFFECTIVE  0x34 /* Effective scheduler load */ 
 250 /* unused  MACH_PROMOTED              0x35 was: thread promoted due to mutex priority promotion */ 
 251 /* unused  MACH_UNPROMOTED            0x36 was: thread unpromoted due to mutex priority promotion */ 
 252 /* unused  MACH_PROMOTED_UPDATE       0x37 was: thread already promoted, but promotion priority changed */ 
 253 #define MACH_QUIESCENT_COUNTER     0x38 /* quiescent counter tick */ 
 254 #define MACH_TURNSTILE_USER_CHANGE 0x39 /* base priority change because of turnstile */ 
 255 #define MACH_AMP_RECOMMENDATION_CHANGE 0x3a /* Thread group recommendation change */ 
 256 #define MACH_TURNSTILE_KERNEL_CHANGE 0x40 /* sched priority change because of turnstile */ 
 258 /* Codes for Clutch Scheduler (DBG_MACH_SCHED_CLUTCH) */ 
 259 #define MACH_SCHED_CLUTCH_ROOT_BUCKET_STATE     0x0 
 260 #define MACH_SCHED_CLUTCH_TG_BUCKET_STATE       0x1 
 261 #define MACH_SCHED_CLUTCH_THREAD_SELECT         0x2 
 262 #define MACH_SCHED_CLUTCH_THREAD_STATE          0x3 
 263 #define MACH_SCHED_CLUTCH_TG_BUCKET_PRI         0x4 
 265 /* Variants for MACH_MULTIQ_DEQUEUE */ 
 266 #define MACH_MULTIQ_BOUND     1 
 267 #define MACH_MULTIQ_GROUP     2 
 268 #define MACH_MULTIQ_GLOBAL    3 
 270 /* Arguments for vm_fault (DBG_MACH_VM) */ 
 271 #define DBG_ZERO_FILL_FAULT   1 
 272 #define DBG_PAGEIN_FAULT      2 
 273 #define DBG_COW_FAULT         3 
 274 #define DBG_CACHE_HIT_FAULT   4 
 275 #define DBG_NZF_PAGE_FAULT    5 
 276 #define DBG_GUARD_FAULT       6 
 277 #define DBG_PAGEINV_FAULT     7 
 278 #define DBG_PAGEIND_FAULT     8 
 279 #define DBG_COMPRESSOR_FAULT  9 
 280 #define DBG_COMPRESSOR_SWAPIN_FAULT  10 
 282 /* Codes for IPC (DBG_MACH_IPC) */ 
 283 #define MACH_TASK_SUSPEND                       0x0     /* Suspended a task */ 
 284 #define MACH_TASK_RESUME                        0x1     /* Resumed a task */ 
 285 #define MACH_THREAD_SET_VOUCHER                 0x2 
 286 #define MACH_IPC_MSG_SEND                       0x3     /* mach msg send, uniq msg info */ 
 287 #define MACH_IPC_MSG_RECV                       0x4     /* mach_msg receive */ 
 288 #define MACH_IPC_MSG_RECV_VOUCHER_REFUSED       0x5     /* mach_msg receive, voucher refused */ 
 289 #define MACH_IPC_KMSG_FREE                      0x6     /* kernel free of kmsg data */ 
 290 #define MACH_IPC_VOUCHER_CREATE                 0x7     /* Voucher added to global voucher hashtable */ 
 291 #define MACH_IPC_VOUCHER_CREATE_ATTR_DATA       0x8     /* Attr data for newly created voucher */ 
 292 #define MACH_IPC_VOUCHER_DESTROY                0x9     /* Voucher removed from global voucher hashtable */ 
 293 #define MACH_IPC_KMSG_INFO                      0xa     /* Send/Receive info for a kmsg */ 
 294 #define MACH_IPC_KMSG_LINK                      0xb     /* link a kernel kmsg pointer to user mach_msg_header_t */ 
 295 #define MACH_IPC_PORT_ENTRY_MODIFY              0xc     /* A port space gained or lost a port right (reference) */ 
 296 #define MACH_IPC_DESTROY_GUARDED_DESC           0xd     /* Unable to receive a guarded descriptor */ 
 298 /* Codes for thread groups (DBG_MACH_THREAD_GROUP) */ 
 299 #define MACH_THREAD_GROUP_NEW           0x0 
 300 #define MACH_THREAD_GROUP_FREE          0x1 
 301 #define MACH_THREAD_GROUP_SET           0x2 
 302 #define MACH_THREAD_GROUP_NAME          0x3 
 303 #define MACH_THREAD_GROUP_NAME_FREE     0x4 
 304 #define MACH_THREAD_GROUP_FLAGS         0x5 
 306 /* Codes for coalitions (DBG_MACH_COALITION) */ 
 307 #define MACH_COALITION_NEW                      0x0 
 308 #define MACH_COALITION_FREE                     0x1 
 309 #define MACH_COALITION_ADOPT                    0x2 
 310 #define MACH_COALITION_REMOVE                   0x3 
 311 #define MACH_COALITION_THREAD_GROUP_SET         0x4 
 313 /* Codes for pmap (DBG_MACH_PMAP) */ 
 314 #define PMAP__CREATE            0x0 
 315 #define PMAP__DESTROY           0x1 
 316 #define PMAP__PROTECT           0x2 
 317 #define PMAP__PAGE_PROTECT      0x3 
 318 #define PMAP__ENTER             0x4 
 319 #define PMAP__REMOVE            0x5 
 320 #define PMAP__NEST              0x6 
 321 #define PMAP__UNNEST            0x7 
 322 #define PMAP__FLUSH_TLBS        0x8 
 323 #define PMAP__UPDATE_INTERRUPT  0x9 
 324 #define PMAP__ATTRIBUTE_CLEAR   0xa 
 325 #define PMAP__REUSABLE          0xb     /* This appears to be unused */ 
 326 #define PMAP__QUERY_RESIDENT    0xc 
 327 #define PMAP__FLUSH_KERN_TLBS   0xd 
 328 #define PMAP__FLUSH_DELAYED_TLBS        0xe 
 329 #define PMAP__FLUSH_TLBS_TO     0xf 
 330 #define PMAP__FLUSH_EPT         0x10 
 331 #define PMAP__FAST_FAULT        0x11 
 332 #define PMAP__SWITCH            0x12 
 333 #define PMAP__TTE               0x13 
 334 #define PMAP__SWITCH_USER_TTB   0x14 
 335 #define PMAP__UPDATE_CACHING    0x15 
 337 /* Codes for clock (DBG_MACH_CLOCK) */ 
 338 #define MACH_EPOCH_CHANGE       0x0     /* wake epoch change */ 
 339 #define MACH_BRIDGE_RCV_TS      0x1     /* receive timestamp pair from interrupt handler */ 
 340 #define MACH_BRIDGE_REMOTE_TIME 0x2     /* calculate remote timestamp */ 
 341 #define MACH_BRIDGE_RESET_TS    0x3     /* reset timestamp conversion parameters */ 
 342 #define MACH_BRIDGE_TS_PARAMS   0x4     /* recompute timestamp conversion parameters */ 
 343 #define MACH_BRIDGE_SKIP_TS     0x5     /* skip timestamp */ 
 344 #define MACH_BRIDGE_TS_MISMATCH 0x6     /* mismatch between predicted and received remote timestamp */ 
 345 #define MACH_BRIDGE_OBSV_RATE   0x7     /* out of range observed rates */ 
 347 /* Codes for Stackshot/Microstackshot (DBG_MACH_STACKSHOT) */ 
 348 #define MICROSTACKSHOT_RECORD   0x0 
 349 #define MICROSTACKSHOT_GATHER   0x1 
 351 /* Codes for sysdiagnose (DBG_MACH_SYSDIAGNOSE) */ 
 352 #define SYSDIAGNOSE_NOTIFY_USER 0x0 
 353 #define SYSDIAGNOSE_FULL        0x1 
 354 #define SYSDIAGNOSE_STACKSHOT   0x2 
 355 #define SYSDIAGNOSE_TAILSPIN    0x3 
 357 /* Codes for Selective Forced Idle (DBG_MACH_SFI) */ 
 358 #define SFI_SET_WINDOW                  0x0 
 359 #define SFI_CANCEL_WINDOW               0x1 
 360 #define SFI_SET_CLASS_OFFTIME           0x2 
 361 #define SFI_CANCEL_CLASS_OFFTIME        0x3 
 362 #define SFI_THREAD_DEFER                0x4 
 363 #define SFI_OFF_TIMER                   0x5 
 364 #define SFI_ON_TIMER                    0x6 
 365 #define SFI_WAIT_CANCELED               0x7 
 366 #define SFI_PID_SET_MANAGED             0x8 
 367 #define SFI_PID_CLEAR_MANAGED           0x9 
 368 #define SFI_GLOBAL_DEFER                0xa 
 370 /* Codes for Zone Allocator (DBG_MACH_ZALLOC) */ 
 371 #define ZALLOC_ZCRAM                    0x0 
 373 /* Codes for Mach resource management (DBG_MACH_RESOURCE) */ 
 374 /* _K32A/B codes start at double the low nibble */ 
 375 #define RMON_ENABLE_CPUUSAGE_MONITOR    0x001 
 376 #define RMON_CPUUSAGE_VIOLATED          0x002 
 377 #define RMON_CPUUSAGE_SUSPENDED         0x003 
 378 #define RMON_CPUUSAGE_VIOLATED_K32A     0x004 
 379 #define RMON_CPUUSAGE_VIOLATED_K32B     0x005 
 380 #define RMON_CPUUSAGE_RESUMED           0x006 
 381 #define RMON_DISABLE_CPUUSAGE_MONITOR   0x00f 
 383 #define RMON_ENABLE_CPUWAKES_MONITOR    0x011 
 384 #define RMON_CPUWAKES_VIOLATED          0x012 
 385 #define RMON_CPUWAKES_VIOLATED_K32A     0x014 
 386 #define RMON_CPUWAKES_VIOLATED_K32B     0x015 
 387 #define RMON_DISABLE_CPUWAKES_MONITOR   0x01f 
 389 #define RMON_ENABLE_IO_MONITOR          0x021 
 390 #define RMON_LOGWRITES_VIOLATED         0x022 
 391 #define RMON_PHYSWRITES_VIOLATED        0x023 
 392 #define RMON_LOGWRITES_VIOLATED_K32A    0x024 
 393 #define RMON_LOGWRITES_VIOLATED_K32B    0x025 
 394 #define RMON_DISABLE_IO_MONITOR         0x02f 
 396 /* **** The Kernel Debug Sub Classes for Network (DBG_NETWORK) **** */ 
 397 #define DBG_NETIP       1       /* Internet Protocol */ 
 398 #define DBG_NETARP      2       /* Address Resolution Protocol */ 
 399 #define DBG_NETUDP      3       /* User Datagram Protocol */ 
 400 #define DBG_NETTCP      4       /* Transmission Control Protocol */ 
 401 #define DBG_NETICMP     5       /* Internet Control Message Protocol */ 
 402 #define DBG_NETIGMP     6       /* Internet Group Management Protocol */ 
 403 #define DBG_NETRIP      7       /* Routing Information Protocol */ 
 404 #define DBG_NETOSPF     8       /* Open Shortest Path First */ 
 405 #define DBG_NETISIS     9       /* Intermediate System to Intermediate System */ 
 406 #define DBG_NETSNMP     10      /* Simple Network Management Protocol */ 
 407 #define DBG_NETSOCK     11      /* Socket Layer */ 
 410 #define DBG_NETAARP     100     /* Apple ARP */ 
 411 #define DBG_NETDDP      101     /* Datagram Delivery Protocol */ 
 412 #define DBG_NETNBP      102     /* Name Binding Protocol */ 
 413 #define DBG_NETZIP      103     /* Zone Information Protocol */ 
 414 #define DBG_NETADSP     104     /* Name Binding Protocol */ 
 415 #define DBG_NETATP      105     /* Apple Transaction Protocol */ 
 416 #define DBG_NETASP      106     /* Apple Session Protocol */ 
 417 #define DBG_NETAFP      107     /* Apple Filing Protocol */ 
 418 #define DBG_NETRTMP     108     /* Routing Table Maintenance Protocol */ 
 419 #define DBG_NETAURP     109     /* Apple Update Routing Protocol */ 
 421 #define DBG_NETIPSEC    128     /* IPsec Protocol  */ 
 422 #define DBG_NETVMNET    129     /* VMNet */ 
 424 /* **** The Kernel Debug Sub Classes for IOKIT (DBG_IOKIT) **** */ 
 425 #define DBG_IOINTC                      0       /* Interrupt controller */ 
 426 #define DBG_IOWORKLOOP                  1       /* Work from work loop */ 
 427 #define DBG_IOINTES                     2       /* Interrupt event source */ 
 428 #define DBG_IOCLKES                     3       /* Clock event source */ 
 429 #define DBG_IOCMDQ                      4       /* Command queue latencies */ 
 430 #define DBG_IOMCURS                     5       /* Memory Cursor */ 
 431 #define DBG_IOMDESC                     6       /* Memory Descriptors */ 
 432 #define DBG_IOPOWER                     7       /* Power Managerment */ 
 433 #define DBG_IOSERVICE                   8       /* Matching etc. */ 
 434 #define DBG_IOREGISTRY                  9       /* Registry */ 
 436 /* **** 9-32 reserved for internal IOKit usage **** */ 
 438 #define DBG_IOSTORAGE           32      /* Storage layers */ 
 439 #define DBG_IONETWORK           33      /* Network layers */ 
 440 #define DBG_IOKEYBOARD          34      /* Keyboard */ 
 441 #define DBG_IOHID               35      /* HID Devices */ 
 442 #define DBG_IOAUDIO             36      /* Audio */ 
 443 #define DBG_IOSERIAL            37      /* Serial */ 
 444 #define DBG_IOTTY               38      /* TTY layers */ 
 445 #define DBG_IOSAM               39      /* SCSI Architecture Model layers */ 
 446 #define DBG_IOPARALLELATA       40      /* Parallel ATA */ 
 447 #define DBG_IOPARALLELSCSI      41      /* Parallel SCSI */ 
 448 #define DBG_IOSATA              42      /* Serial-ATA */ 
 449 #define DBG_IOSAS               43      /* SAS */ 
 450 #define DBG_IOFIBRECHANNEL      44      /* FiberChannel */ 
 451 #define DBG_IOUSB               45      /* USB */ 
 452 #define DBG_IOBLUETOOTH         46      /* Bluetooth */ 
 453 #define DBG_IOFIREWIRE          47      /* FireWire */ 
 454 #define DBG_IOINFINIBAND        48      /* Infiniband */ 
 455 #define DBG_IOCPUPM             49      /* CPU Power Management */ 
 456 #define DBG_IOGRAPHICS          50      /* Graphics */ 
 457 #define DBG_HIBERNATE           51      /* hibernation related events */ 
 458 #define DBG_IOTHUNDERBOLT       52      /* Thunderbolt */ 
 459 #define DBG_BOOTER              53      /* booter related events */ 
 460 #define DBG_IOAUDIO2            54      /* Audio (extended) */ 
 462 #define DBG_IOSURFACEPA         64      /* IOSurface page mappings */ 
 463 #define DBG_IOMDPA              65      /* IOMemoryDescriptor page mappings */ 
 464 #define DBG_IODARTPA            66      /* DART page mappings */ 
 465 /* **** 67-79 reserved for physical address mapping information **** */ 
 467 /* Backwards compatibility */ 
 468 #define DBG_IOPOINTING          DBG_IOHID                       /* OBSOLETE: Use DBG_IOHID instead */ 
 469 #define DBG_IODISK                      DBG_IOSTORAGE           /* OBSOLETE: Use DBG_IOSTORAGE instead */ 
 471 /* **** The Kernel Debug Sub Classes for Device Drivers (DBG_DRIVERS) **** */ 
 472 #define DBG_DRVSTORAGE        1 /* Storage layers */ 
 473 #define DBG_DRVNETWORK        2 /* Network layers */ 
 474 #define DBG_DRVKEYBOARD       3 /* Keyboard */ 
 475 #define DBG_DRVHID            4 /* HID Devices */ 
 476 #define DBG_DRVAUDIO          5 /* Audio */ 
 477 #define DBG_DRVSERIAL         7 /* Serial */ 
 478 #define DBG_DRVSAM            8 /* SCSI Architecture Model layers */ 
 479 #define DBG_DRVPARALLELATA    9 /* Parallel ATA */ 
 480 #define DBG_DRVPARALLELSCSI  10 /* Parallel SCSI */ 
 481 #define DBG_DRVSATA          11 /* Serial ATA */ 
 482 #define DBG_DRVSAS           12 /* SAS */ 
 483 #define DBG_DRVFIBRECHANNEL  13 /* FiberChannel */ 
 484 #define DBG_DRVUSB           14 /* USB */ 
 485 #define DBG_DRVBLUETOOTH     15 /* Bluetooth */ 
 486 #define DBG_DRVFIREWIRE      16 /* FireWire */ 
 487 #define DBG_DRVINFINIBAND    17 /* Infiniband */ 
 488 #define DBG_DRVGRAPHICS      18 /* Graphics */ 
 489 #define DBG_DRVSD            19 /* Secure Digital */ 
 490 #define DBG_DRVNAND          20 /* NAND drivers and layers */ 
 491 #define DBG_SSD              21 /* SSD */ 
 492 #define DBG_DRVSPI           22 /* SPI */ 
 493 #define DBG_DRVWLAN_802_11   23 /* WLAN 802.11 */ 
 494 #define DBG_DRVSSM           24 /* System State Manager(AppleSSM) */ 
 495 #define DBG_DRVSMC           25 /* System Management Controller */ 
 496 #define DBG_DRVMACEFIMANAGER 26 /* Mac EFI Manager */ 
 497 #define DBG_DRVANE           27 /* ANE */ 
 498 #define DBG_DRVETHERNET      28 /* Ethernet */ 
 499 #define DBG_DRVMCC           29 /* Memory Cache Controller */ 
 500 #define DBG_DRVACCESSORY     30 /* Accessories */ 
 502 /* Backwards compatibility */ 
 503 #define DBG_DRVPOINTING         DBG_DRVHID      /* OBSOLETE: Use DBG_DRVHID instead */ 
 504 #define DBG_DRVDISK             DBG_DRVSTORAGE  /* OBSOLETE: Use DBG_DRVSTORAGE instead */ 
 506 /* **** The Kernel Debug Sub Classes for the DLIL Layer (DBG_DLIL) **** */ 
 507 #define DBG_DLIL_STATIC 1       /* Static DLIL code */ 
 508 #define DBG_DLIL_PR_MOD 2       /* DLIL Protocol Module */ 
 509 #define DBG_DLIL_IF_MOD 3       /* DLIL Interface Module */ 
 510 #define DBG_DLIL_PR_FLT 4       /* DLIL Protocol Filter */ 
 511 #define DBG_DLIL_IF_FLT 5       /* DLIL Interface FIlter */ 
 513 /* The Kernel Debug Sub Classes for File System (DBG_FSYSTEM) */ 
 514 #define DBG_FSRW      0x1     /* reads and writes to the filesystem */ 
 515 #define DBG_DKRW      0x2     /* reads and writes to the disk */ 
 516 #define DBG_FSVN      0x3     /* vnode operations (inc. locking/unlocking) */ 
 517 #define DBG_FSLOOOKUP 0x4     /* namei and other lookup-related operations */ 
 518 #define DBG_JOURNAL   0x5     /* journaling operations */ 
 519 #define DBG_IOCTL     0x6     /* ioctl to the disk */ 
 520 #define DBG_BOOTCACHE 0x7     /* bootcache operations */ 
 521 #define DBG_HFS       0x8     /* HFS-specific events; see the hfs project */ 
 522 #define DBG_APFS      0x9     /* APFS-specific events; see the apfs project */ 
 523 #define DBG_SMB       0xA     /* SMB-specific events; see the smb project */ 
 524 #define DBG_MOUNT     0xB     /* Mounting/unmounting operations */ 
 525 #define DBG_EXFAT     0xE     /* ExFAT-specific events; see the exfat project */ 
 526 #define DBG_MSDOS     0xF     /* FAT-specific events; see the msdosfs project */ 
 527 #define DBG_ACFS      0x10    /* Xsan-specific events; see the XsanFS project */ 
 528 #define DBG_THROTTLE  0x11    /* I/O Throttling events */ 
 529 #define DBG_DECMP     0x12    /* Decmpfs-specific events */ 
 530 #define DBG_VFS       0x13    /* VFS layer events */ 
 531 #define DBG_LIVEFS    0x14    /* LiveFS events; see the UserFS project */ 
 532 #define DBG_CONTENT_PROT 0xCF /* Content Protection Events: see bsd/sys/cprotect.h */ 
 535  * For Kernel Debug Sub Class DBG_HFS, state bits for hfs_update event 
 537 #define DBG_HFS_UPDATE_ACCTIME   0x01 
 538 #define DBG_HFS_UPDATE_MODTIME   0x02 
 539 #define DBG_HFS_UPDATE_CHGTIME   0x04 
 540 #define DBG_HFS_UPDATE_MODIFIED  0x08 
 541 #define DBG_HFS_UPDATE_FORCE     0x10 
 542 #define DBG_HFS_UPDATE_DATEADDED 0x20 
 543 #define DBG_HFS_UPDATE_MINOR     0x40 
 544 #define DBG_HFS_UPDATE_SKIPPED   0x80 
 546 /* The Kernel Debug Sub Classes for BSD */ 
 547 #define DBG_BSD_PROC              0x01 /* process/signals related */ 
 548 #define DBG_BSD_MEMSTAT           0x02 /* memorystatus / jetsam operations */ 
 549 #define DBG_BSD_KEVENT            0x03 /* kqueue / kevent related */ 
 550 #define DBG_BSD_EXCP_SC           0x0C /* System Calls */ 
 551 #define DBG_BSD_AIO               0x0D /* aio (POSIX async IO) */ 
 552 #define DBG_BSD_SC_EXTENDED_INFO  0x0E /* System Calls, extended info */ 
 553 #define DBG_BSD_SC_EXTENDED_INFO2 0x0F /* System Calls, extended info */ 
 554 #define DBG_BSD_KDEBUG_TEST       0xFF /* for testing kdebug */ 
 556 /* The Codes for BSD subcode class DBG_BSD_PROC */ 
 557 #define BSD_PROC_EXIT              1  /* process exit */ 
 558 #define BSD_PROC_FRCEXIT           2  /* Kernel force termination */ 
 559 #define BSD_PROC_EXEC              3  /* process spawn / exec */ 
 560 #define BSD_PROC_EXITREASON_CREATE 4  /* exit reason creation */ 
 561 #define BSD_PROC_EXITREASON_COMMIT 5  /* exit reason commited to a proc */ 
 563 /* Codes for BSD subcode class DBG_BSD_MEMSTAT */ 
 564 #define BSD_MEMSTAT_SCAN             1  /* memorystatus thread awake */ 
 565 #define BSD_MEMSTAT_JETSAM           2  /* LRU jetsam */ 
 566 #define BSD_MEMSTAT_JETSAM_HIWAT     3  /* highwater jetsam */ 
 567 #define BSD_MEMSTAT_FREEZE           4  /* freeze process */ 
 568 #define BSD_MEMSTAT_FREEZE_SCAN      5  /* select a process to freeze and freeze it */ 
 569 #define BSD_MEMSTAT_UPDATE           6  /* priority update */ 
 570 #define BSD_MEMSTAT_IDLE_DEMOTE      7  /* idle demotion fired */ 
 571 #define BSD_MEMSTAT_CLEAR_ERRORS     8  /* reset termination error state */ 
 572 #define BSD_MEMSTAT_DIRTY_TRACK      9  /* track the process state */ 
 573 #define BSD_MEMSTAT_DIRTY_SET       10  /* set the process state */ 
 574 #define BSD_MEMSTAT_DIRTY_CLEAR     11  /* clear the process state */ 
 576 #define BSD_MEMSTAT_GRP_SET_PROP    12  /* set group properties */ 
 577 #define BSD_MEMSTAT_DO_KILL         13  /* memorystatus kills */ 
 578 #define BSD_MEMSTAT_CHANGE_PRIORITY 14  /* priority changed */ 
 580 #define BSD_MEMSTAT_FAST_JETSAM     15  /* Aggressive jetsam ("clear-the-deck") */ 
 581 #define BSD_MEMSTAT_COMPACTOR_RUN   16  /* run VM compactor after process kill */ 
 582 #define BSD_MEMSTAT_FREEZE_DISABLE  17  /* disable freeze and kill frozen processes */ 
 583 #define BSD_MEMSTAT_RELAUNCH_FLAGS  18  /* flags representing jetsam behavior; based on launchd data */ 
 585 /* Codes for BSD subcode class DBG_BSD_KEVENT */ 
 586 #define BSD_KEVENT_KQ_PROCESS_BEGIN   1 
 587 #define BSD_KEVENT_KQ_PROCESS_END     2 
 588 #define BSD_KEVENT_KQWQ_PROCESS_BEGIN 3 
 589 #define BSD_KEVENT_KQWQ_PROCESS_END   4 
 590 #define BSD_KEVENT_KQWQ_BIND          5 
 591 #define BSD_KEVENT_KQWQ_UNBIND        6 
 592 #define BSD_KEVENT_KQWQ_THREQUEST     7 
 593 #define BSD_KEVENT_KQWL_PROCESS_BEGIN 8 
 594 #define BSD_KEVENT_KQWL_PROCESS_END   9 
 595 #define BSD_KEVENT_KQWL_THREQUEST     10 
 596 #define BSD_KEVENT_KQWL_THADJUST      11 
 597 #define BSD_KEVENT_KQ_REGISTER        12 
 598 #define BSD_KEVENT_KQWQ_REGISTER      13 
 599 #define BSD_KEVENT_KQWL_REGISTER      14 
 600 #define BSD_KEVENT_KNOTE_ACTIVATE     15 
 601 #define BSD_KEVENT_KQ_PROCESS         16 
 602 #define BSD_KEVENT_KQWQ_PROCESS       17 
 603 #define BSD_KEVENT_KQWL_PROCESS       18 
 604 #define BSD_KEVENT_KQWL_BIND          19 
 605 #define BSD_KEVENT_KQWL_UNBIND        20 
 606 #define BSD_KEVENT_KNOTE_ENABLE       21 
 607 #define BSD_KEVENT_KNOTE_VANISHED     22 
 609 /* The Kernel Debug Sub Classes for DBG_TRACE */ 
 610 #define DBG_TRACE_DATA      0 
 611 #define DBG_TRACE_STRING    1 
 612 #define DBG_TRACE_INFO      2 
 614 /* The Kernel Debug events: */ 
 615 #define TRACE_DATA_NEWTHREAD            (TRACEDBG_CODE(DBG_TRACE_DATA, 1)) 
 616 #define TRACE_DATA_EXEC                 (TRACEDBG_CODE(DBG_TRACE_DATA, 2)) 
 617 #define TRACE_DATA_THREAD_TERMINATE     (TRACEDBG_CODE(DBG_TRACE_DATA, 3)) 
 618 #define TRACE_DATA_THREAD_TERMINATE_PID (TRACEDBG_CODE(DBG_TRACE_DATA, 4)) 
 619 #define TRACE_STRING_GLOBAL             (TRACEDBG_CODE(DBG_TRACE_STRING, 0)) 
 620 #define TRACE_STRING_NEWTHREAD          (TRACEDBG_CODE(DBG_TRACE_STRING, 1)) 
 621 #define TRACE_STRING_EXEC               (TRACEDBG_CODE(DBG_TRACE_STRING, 2)) 
 622 #define TRACE_STRING_PROC_EXIT          (TRACEDBG_CODE(DBG_TRACE_STRING, 3)) 
 623 #define TRACE_STRING_THREADNAME         (TRACEDBG_CODE(DBG_TRACE_STRING, 4)) 
 624 #define TRACE_STRING_THREADNAME_PREV    (TRACEDBG_CODE(DBG_TRACE_STRING, 5)) 
 625 #define TRACE_PANIC                     (TRACEDBG_CODE(DBG_TRACE_INFO, 0)) 
 626 #define TRACE_TIMESTAMPS                (TRACEDBG_CODE(DBG_TRACE_INFO, 1)) 
 627 #define TRACE_LOST_EVENTS               (TRACEDBG_CODE(DBG_TRACE_INFO, 2)) 
 628 #define TRACE_WRITING_EVENTS            (TRACEDBG_CODE(DBG_TRACE_INFO, 3)) 
 629 #define TRACE_INFO_STRING               (TRACEDBG_CODE(DBG_TRACE_INFO, 4)) 
 630 #define TRACE_RETROGRADE_EVENTS         (TRACEDBG_CODE(DBG_TRACE_INFO, 5)) 
 632 /* The Kernel Debug Sub Classes for DBG_CORESTORAGE */ 
 635 /* The Kernel Debug Sub Classes for DBG_SECURITY */ 
 636 #define DBG_SEC_KERNEL  0 /* raw entropy collected by the kernel */ 
 637 #define DBG_SEC_SANDBOX 1 
 639 /* Sub-class codes for CoreGraphics (DBG_CG) are defined in its component. */ 
 641 /* The Kernel Debug Sub Classes for DBG_MONOTONIC */ 
 642 #define DBG_MT_INSTRS_CYCLES 1 
 643 #define DBG_MT_DEBUG 2 
 644 #define DBG_MT_TMPTH 0xfe 
 645 #define DBG_MT_TMPCPU 0xff 
 647 /* The Kernel Debug Sub Classes for DBG_MISC */ 
 648 #define DBG_MISC_COREBRIGHTNESS 0x01 
 649 #define DBG_MISC_VIDEOENG       0x02 
 650 #define DBG_EVENT               0x10 
 651 #define DBG_MISC_INSTRUMENTS    0x11 
 652 #define DBG_MISC_INSTRUMENTSBT  0x12 
 653 #define DBG_MISC_LAYOUT         0x1a 
 654 #define DBG_BUFFER              0x20 
 656 /* The Kernel Debug Sub Classes for DBG_DYLD */ 
 657 #define DBG_DYLD_UUID (5) 
 659 /* Kernel Debug codes for the DBG_DYLD_UUID subclass */ 
 660 #define DBG_DYLD_UUID_MAP_A             (0) 
 661 #define DBG_DYLD_UUID_MAP_B             (1) 
 662 #define DBG_DYLD_UUID_MAP_32_A          (2) 
 663 #define DBG_DYLD_UUID_MAP_32_B          (3) 
 664 #define DBG_DYLD_UUID_MAP_32_C          (4) 
 665 #define DBG_DYLD_UUID_UNMAP_A           (5) 
 666 #define DBG_DYLD_UUID_UNMAP_B           (6) 
 667 #define DBG_DYLD_UUID_UNMAP_32_A        (7) 
 668 #define DBG_DYLD_UUID_UNMAP_32_B        (8) 
 669 #define DBG_DYLD_UUID_UNMAP_32_C        (9) 
 670 #define DBG_DYLD_UUID_SHARED_CACHE_A    (10) 
 671 #define DBG_DYLD_UUID_SHARED_CACHE_B    (11) 
 672 #define DBG_DYLD_UUID_SHARED_CACHE_32_A (12) 
 673 #define DBG_DYLD_UUID_SHARED_CACHE_32_B (13) 
 674 #define DBG_DYLD_UUID_SHARED_CACHE_32_C (14) 
 676 /* The Kernel Debug modifiers for the DBG_DKRW sub class */ 
 677 #define DKIO_DONE       0x01 
 678 #define DKIO_READ       0x02 
 679 #define DKIO_ASYNC      0x04 
 680 #define DKIO_META       0x08 
 681 #define DKIO_PAGING     0x10 
 682 #define DKIO_THROTTLE   0x20 /* Deprecated, still provided so fs_usage doesn't break */ 
 683 #define DKIO_PASSIVE    0x40 
 684 #define DKIO_NOCACHE    0x80 
 685 #define DKIO_TIER_MASK  0xF00 
 686 #define DKIO_TIER_SHIFT 8 
 687 #define DKIO_TIER_UPGRADE 0x1000 
 689 /* Kernel Debug Sub Classes for Applications (DBG_APPS) */ 
 690 #define DBG_APP_LOGINWINDOW     0x03 
 691 #define DBG_APP_AUDIO           0x04 
 692 #define DBG_APP_SYSTEMUI        0x05 
 693 #define DBG_APP_SIGNPOST        0x0A 
 694 #define DBG_APP_APPKIT          0x0C 
 695 #define DBG_APP_UIKIT           0x0D 
 696 #define DBG_APP_DFR             0x0E 
 697 #define DBG_APP_LAYOUT          0x0F 
 698 #define DBG_APP_COREDATA        0x10 
 699 #define DBG_APP_SAMBA           0x80 
 700 #define DBG_APP_EOSSUPPORT      0x81 
 701 #define DBG_APP_MACEFIMANAGER   0x82 
 703 /* Kernel Debug codes for Throttling (DBG_THROTTLE) */ 
 704 #define OPEN_THROTTLE_WINDOW    0x1 
 705 #define PROCESS_THROTTLED       0x2 
 706 #define IO_THROTTLE_DISABLE     0x3 
 707 #define IO_TIER_UPL_MISMATCH    0x4 
 709 /* Subclasses for MACH Importance Policies (DBG_IMPORTANCE) */ 
 710 /* TODO: Split up boost and task policy? */ 
 711 #define IMP_ASSERTION                       0x10    /* Task takes/drops a boost assertion */ 
 712 #define IMP_BOOST                           0x11    /* Task boost level changed */ 
 713 #define IMP_MSG                             0x12    /* boosting message sent by donating task on donating port */ 
 714 #define IMP_WATCHPORT                       0x13    /* port marked as watchport, and boost was transferred to the watched task */ 
 715 #define IMP_TASK_SUPPRESSION                0x17    /* Task changed suppression behaviors */ 
 716 #define IMP_TASK_APPTYPE                    0x18    /* Task launched with apptype */ 
 717 #define IMP_UPDATE                          0x19    /* Requested -> effective calculation */ 
 718 #define IMP_USYNCH_QOS_OVERRIDE             0x1A    /* Userspace synchronization applied QoS override to resource owning thread */ 
 719 #define IMP_DONOR_CHANGE                    0x1B    /* The iit_donor bit changed */ 
 720 #define IMP_MAIN_THREAD_QOS                 0x1C    /* The task's main thread QoS was set */ 
 721 #define IMP_SYNC_IPC_QOS                    0x1D    /* Sync IPC QOS override */ 
 722 /* DBG_IMPORTANCE subclasses  0x20 - 0x3F are reserved for task policy flavors */ 
 724 /* thread and task attributes */ 
 725 #define IMP_TASK_POLICY_DARWIN_BG           0x21 
 726 #define IMP_TASK_POLICY_IOPOL               0x22 
 727 #define IMP_TASK_POLICY_IO                  0x23 
 728 #define IMP_TASK_POLICY_PASSIVE_IO          0x24 
 730 /* task only attributes */ 
 731 #define IMP_TASK_POLICY_DARWIN_BG_IOPOL     0x27 
 732 #define IMP_TASK_POLICY_TAL                 0x28 
 733 #define IMP_TASK_POLICY_BOOST               0x29 
 734 #define IMP_TASK_POLICY_ROLE                0x2A 
 736 #define IMP_TASK_POLICY_TERMINATED          0x2C 
 737 #define IMP_TASK_POLICY_NEW_SOCKETS_BG      0x2D 
 738 #define IMP_TASK_POLICY_SUP_ACTIVE          0x2E 
 739 #define IMP_TASK_POLICY_LATENCY_QOS         0x2F 
 740 #define IMP_TASK_POLICY_THROUGH_QOS         0x30 
 741 #define IMP_TASK_POLICY_WATCHERS_BG         0x31 
 743 #define IMP_TASK_POLICY_SFI_MANAGED         0x34 
 744 #define IMP_TASK_POLICY_ALL_SOCKETS_BG      0x37 
 746 #define IMP_TASK_POLICY_BASE_LATENCY_AND_THROUGHPUT_QOS  0x39 /* latency as value1, throughput as value2 */ 
 747 #define IMP_TASK_POLICY_OVERRIDE_LATENCY_AND_THROUGHPUT_QOS  0x3A /* latency as value1, throughput as value2 */ 
 749 /* thread only attributes */ 
 750 #define IMP_TASK_POLICY_PIDBIND_BG          0x32 
 753 #define IMP_TASK_POLICY_QOS_OVERRIDE        0x36 
 754 #define IMP_TASK_POLICY_QOS_AND_RELPRIO     0x38 /* QoS as value1, relative priority as value2 */ 
 755 #define IMP_TASK_POLICY_QOS_WORKQ_OVERRIDE  0x3B 
 756 #define IMP_TASK_POLICY_QOS_PROMOTE         0x3C 
 757 #define IMP_TASK_POLICY_QOS_KEVENT_OVERRIDE 0x3D 
 758 #define IMP_TASK_POLICY_QOS_IPC_OVERRIDE    IMP_TASK_POLICY_QOS_KEVENT_OVERRIDE /* legacy name */ 
 759 #define IMP_TASK_POLICY_QOS_SERVICER_OVERRIDE 0x3E 
 761 /* Codes for IMP_ASSERTION */ 
 762 #define IMP_HOLD                0x2     /* Task holds a boost assertion */ 
 763 #define IMP_DROP                0x4     /* Task drops a boost assertion */ 
 764 #define IMP_EXTERN              0x8     /* boost assertion moved from kernel to userspace responsibility (externalized) */ 
 766 /* Codes for IMP_BOOST */ 
 767 #define IMP_BOOSTED             0x1 
 768 #define IMP_UNBOOSTED           0x2     /* Task drops a boost assertion */ 
 770 /* Codes for IMP_MSG */ 
 771 #define IMP_MSG_SEND            0x1     /* boosting message sent by donating task on donating port */ 
 772 #define IMP_MSG_DELV            0x2     /* boosting message delivered to task */ 
 774 /* Codes for IMP_UPDATE */ 
 775 #define IMP_UPDATE_TASK_CREATE  0x1 
 777 /* Codes for IMP_USYNCH_QOS_OVERRIDE */ 
 778 #define IMP_USYNCH_ADD_OVERRIDE         0x0             /* add override for a contended resource */ 
 779 #define IMP_USYNCH_REMOVE_OVERRIDE      0x1             /* remove override for a contended resource */ 
 781 /* Codes for IMP_DONOR_CHANGE */ 
 782 #define IMP_DONOR_UPDATE_LIVE_DONOR_STATE       0x0 
 783 #define IMP_DONOR_INIT_DONOR_STATE              0x1 
 785 /* Code for IMP_SYNC_IPC_QOS */ 
 786 #define IMP_SYNC_IPC_QOS_APPLIED                0x0 
 787 #define IMP_SYNC_IPC_QOS_REMOVED                0x1 
 788 #define IMP_SYNC_IPC_QOS_OVERFLOW               0x2 
 789 #define IMP_SYNC_IPC_QOS_UNDERFLOW              0x3 
 791 /* Subclasses for Turnstiles (DBG_TURNSTILE) */ 
 792 #define TURNSTILE_HEAP_OPERATIONS               0x10 
 793 #define TURNSTILE_PRIORITY_OPERATIONS           0x20 
 794 #define TURNSTILE_FREELIST_OPERATIONS           0x30 
 796 /* Codes for TURNSTILE_HEAP_OPERATIONS */ 
 797 #define THREAD_ADDED_TO_TURNSTILE_WAITQ         0x1 
 798 #define THREAD_REMOVED_FROM_TURNSTILE_WAITQ     0x2 
 799 #define THREAD_MOVED_IN_TURNSTILE_WAITQ         0x3 
 800 #define TURNSTILE_ADDED_TO_TURNSTILE_HEAP       0x4 
 801 #define TURNSTILE_REMOVED_FROM_TURNSTILE_HEAP   0x5 
 802 #define TURNSTILE_MOVED_IN_TURNSTILE_HEAP       0x6 
 803 #define TURNSTILE_ADDED_TO_THREAD_HEAP          0x7 
 804 #define TURNSTILE_REMOVED_FROM_THREAD_HEAP      0x8 
 805 #define TURNSTILE_MOVED_IN_THREAD_HEAP          0x9 
 806 #define TURNSTILE_UPDATE_STOPPED_BY_LIMIT       0xa 
 807 #define THREAD_NOT_WAITING_ON_TURNSTILE         0xb 
 809 /* Codes for TURNSTILE_PRIORITY_OPERATIONS */ 
 810 #define TURNSTILE_PRIORITY_CHANGE               0x1 
 811 #define THREAD_USER_PROMOTION_CHANGE            0x2 
 813 /* Codes for TURNSTILE_FREELIST_OPERATIONS */ 
 814 #define TURNSTILE_PREPARE                       0x1 
 815 #define TURNSTILE_COMPLETE                      0x2 
 817 /* Subclasses for MACH Bank Voucher Attribute Manager (DBG_BANK) */ 
 818 #define BANK_ACCOUNT_INFO               0x10    /* Trace points related to bank account struct */ 
 819 #define BANK_TASK_INFO                  0x11    /* Trace points related to bank task struct */ 
 821 /* Subclasses for MACH ATM Voucher Attribute Manager (ATM) */ 
 822 #define ATM_SUBAID_INFO                 0x10 
 823 #define ATM_GETVALUE_INFO               0x20 
 824 #define ATM_UNREGISTER_INFO             0x30 
 826 /* Codes for BANK_ACCOUNT_INFO */ 
 827 #define BANK_SETTLE_CPU_TIME            0x1     /* Bank ledger(chit) rolled up to tasks. */ 
 828 #define BANK_SECURE_ORIGINATOR_CHANGED  0x2     /* Secure Originator changed. */ 
 829 #define BANK_SETTLE_ENERGY              0x3     /* Bank ledger(energy field) rolled up to tasks. */ 
 831 /* Codes for ATM_SUBAID_INFO */ 
 832 #define ATM_MIN_CALLED                          0x1 
 833 #define ATM_LINK_LIST_TRIM                      0x2 
 835 /* Codes for ATM_GETVALUE_INFO */ 
 836 #define ATM_VALUE_REPLACED                      0x1 
 837 #define ATM_VALUE_ADDED                         0x2 
 839 /* Codes for ATM_UNREGISTER_INFO */ 
 840 #define ATM_VALUE_UNREGISTERED                  0x1 
 841 #define ATM_VALUE_DIFF_MAILBOX                  0x2 
 843 /* Kernel Debug Sub Classes for daemons (DBG_DAEMON) */ 
 844 #define DBG_DAEMON_COREDUET 0x1 
 845 #define DBG_DAEMON_POWERD   0x2 
 847 /* Subclasses for the user space allocator */ 
 848 #define DBG_UMALLOC_EXTERNAL                    0x1 
 849 #define DBG_UMALLOC_INTERNAL                    0x2 
 851 /**********************************************************************/ 
 853 #define KDBG_MIGCODE(msgid) (((unsigned)DBG_MIG << KDBG_CLASS_OFFSET) | \ 
 854                              ((unsigned)((msgid) & 0x3fffff) << KDBG_CODE_OFFSET)) 
 856 #define MACHDBG_CODE(SubClass, code) KDBG_CODE(DBG_MACH, SubClass, code) 
 857 #define NETDBG_CODE(SubClass, code) KDBG_CODE(DBG_NETWORK, SubClass, code) 
 858 #define FSDBG_CODE(SubClass, code) KDBG_CODE(DBG_FSYSTEM, SubClass, code) 
 859 #define BSDDBG_CODE(SubClass, code) KDBG_CODE(DBG_BSD, SubClass, code) 
 860 #define IOKDBG_CODE(SubClass, code) KDBG_CODE(DBG_IOKIT, SubClass, code) 
 861 #define DRVDBG_CODE(SubClass, code) KDBG_CODE(DBG_DRIVERS, SubClass, code) 
 862 #define TRACEDBG_CODE(SubClass, code) KDBG_CODE(DBG_TRACE, SubClass, code) 
 863 #define SILICONDBG_CODE(SubClass, code) KDBG_CODE(DBG_SILICON, SubClass, code) 
 864 #define MISCDBG_CODE(SubClass, code) KDBG_CODE(DBG_MISC, SubClass, code) 
 865 #define DLILDBG_CODE(SubClass, code) KDBG_CODE(DBG_DLIL, SubClass, code) 
 866 #define SECURITYDBG_CODE(SubClass, code) KDBG_CODE(DBG_SECURITY, SubClass, code) 
 867 #define DYLDDBG_CODE(SubClass, code) KDBG_CODE(DBG_DYLD, SubClass, code) 
 868 #define QTDBG_CODE(SubClass, code) KDBG_CODE(DBG_QT, SubClass, code) 
 869 #define APPSDBG_CODE(SubClass, code) KDBG_CODE(DBG_APPS, SubClass, code) 
 870 #define ARIADNEDBG_CODE(SubClass, code) KDBG_CODE(DBG_ARIADNE, SubClass, code) 
 871 #define DAEMONDBG_CODE(SubClass, code) KDBG_CODE(DBG_DAEMON, SubClass, code) 
 872 #define CPUPM_CODE(code) IOKDBG_CODE(DBG_IOCPUPM, code) 
 874 #define KMEM_ALLOC_CODE MACHDBG_CODE(DBG_MACH_LEAKS, 0) 
 875 #define KMEM_ALLOC_CODE_2 MACHDBG_CODE(DBG_MACH_LEAKS, 1) 
 876 #define KMEM_FREE_CODE MACHDBG_CODE(DBG_MACH_LEAKS, 2) 
 877 #define KMEM_FREE_CODE_2 MACHDBG_CODE(DBG_MACH_LEAKS, 3) 
 878 #define ZALLOC_CODE MACHDBG_CODE(DBG_MACH_LEAKS, 4) 
 879 #define ZALLOC_CODE_2 MACHDBG_CODE(DBG_MACH_LEAKS, 5) 
 880 #define ZFREE_CODE MACHDBG_CODE(DBG_MACH_LEAKS, 6) 
 881 #define ZFREE_CODE_2 MACHDBG_CODE(DBG_MACH_LEAKS, 7) 
 883 #define PMAP_CODE(code) MACHDBG_CODE(DBG_MACH_PMAP, code) 
 885 #define IMPORTANCE_CODE(SubClass, code) KDBG_CODE(DBG_IMPORTANCE, (SubClass), (code)) 
 886 #define BANK_CODE(SubClass, code) KDBG_CODE(DBG_BANK, (SubClass), (code)) 
 887 #define ATM_CODE(SubClass, code) KDBG_CODE(DBG_ATM, (SubClass), (code)) 
 888 #define TURNSTILE_CODE(SubClass, code) KDBG_CODE(DBG_TURNSTILE, (SubClass), (code)) 
 890 /* Kernel Debug Macros for specific daemons */ 
 891 #define COREDUETDBG_CODE(code) DAEMONDBG_CODE(DBG_DAEMON_COREDUET, code) 
 892 #define POWERDDBG_CODE(code) DAEMONDBG_CODE(DBG_DAEMON_POWERD, code) 
 894 /* VFS lookup events for serial traces */ 
 895 #define VFS_LOOKUP      (FSDBG_CODE(DBG_FSRW,36)) 
 896 #define VFS_LOOKUP_DONE (FSDBG_CODE(DBG_FSRW,39)) 
 898 #endif /* __APPLE_API_UNSTABLE */ 
 902 #if defined(__has_include) && __has_include(<sys/kdebug_private.h>) 
 903 #include <sys/kdebug_private.h> 
 904 #endif /* __has_include(<sys/kdebug_private.h>) */ 
 907 #include <sys/kdebug_kernel.h> 
 908 #endif /* defined(KERNEL) */ 
 910 #endif /* !defined(BSD_SYS_KDEBUG_H) */