1// Copyright (c) 2000-2021 Apple Inc. All rights reserved.
2//
3// @APPLE_OSREFERENCE_LICENSE_HEADER_START@
4//
5// This file contains Original Code and/or Modifications of Original Code
6// as defined in and that are subject to the Apple Public Source License
7// Version 2.0 (the 'License'). You may not use this file except in
8// compliance with the License. The rights granted to you under the License
9// may not be used to create, or enable the creation or redistribution of,
10// unlawful or unlicensed copies of an Apple operating system, or to
11// circumvent, violate, or enable the circumvention or violation of, any
12// terms of an Apple operating system software license agreement.
13//
14// Please obtain a copy of the License at
15// http://www.opensource.apple.com/apsl/ and read it before using this file.
16//
17// The Original Code and all software distributed under the License are
18// distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
19// EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
20// INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
21// FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
22// Please see the License for the specific language governing rights and
23// limitations under the License.
24//
25// @APPLE_OSREFERENCE_LICENSE_HEADER_END@
26
27#ifndef BSD_SYS_KDEBUG_H
28#define BSD_SYS_KDEBUG_H
29
30#include <sys/appleapiopts.h>
31#include <sys/cdefs.h>
32
33__BEGIN_DECLS
34
35#ifdef __APPLE_API_UNSTABLE
36
37// kdebug records events occurring in the system. For user space, it has been
38// replaced by the `os_signpost` interfaces in `<os/signpost.h>`.
39//
40// This header reserves "debug IDs", 32-bit values that classify events recorded
41// by kdebug:
42//
43// class subclass code function
44// ╭──────┬───────┬─────────────┬─╮
45// │ 8 │ 8 │ 14 │2│
46// ╰──────┴───────┴─────────────┴─╯
47// ╰──────────────╯ │
48// class-subclass 00│
49// ╰──────────────────────────────╯
50// │ event ID │
51// ╰──────────────────────────────╯
52// debug ID
53//
54// The event ID is a hierarchical ID, indicating which components an event is
55// referring to. The debug ID includes an event ID and sets the function
56// qualifier bits, to determine the structural significance of an event (whether
57// it starts or ends an interval).
58
59#pragma mark - Debug ID encoding/decoding
60
61#define KDBG_CLASS_MASK (0xff000000)
62#define KDBG_CLASS_OFFSET (24)
63#define KDBG_CLASS_MAX (0xff)
64#define KDBG_SUBCLASS_MASK (0x00ff0000)
65#define KDBG_SUBCLASS_OFFSET (16)
66#define KDBG_SUBCLASS_MAX (0xff)
67#define KDBG_CSC_MASK (0xffff0000)
68#define KDBG_CSC_OFFSET (KDBG_SUBCLASS_OFFSET)
69#define KDBG_CSC_MAX (0xffff)
70#define KDBG_CODE_MASK (0x0000fffc)
71#define KDBG_CODE_OFFSET (2)
72#define KDBG_CODE_MAX (0x3fff)
73#define KDBG_EVENTID_MASK (0xfffffffc)
74#define KDBG_FUNC_MASK (0x00000003)
75
76// Generate an eventid corresponding to Class, SubClass, and Code.
77#define KDBG_EVENTID(Class, SubClass, Code) \
78 (((unsigned)((Class) & 0xff) << KDBG_CLASS_OFFSET) | \
79 ((unsigned)((SubClass) & 0xff) << KDBG_SUBCLASS_OFFSET) | \
80 ((unsigned)((Code) & 0x3fff) << KDBG_CODE_OFFSET))
81
82// Extract pieces of a debug ID.
83#define KDBG_EXTRACT_CLASS(Debugid) \
84 ((uint8_t)(((Debugid) & KDBG_CLASS_MASK) >> KDBG_CLASS_OFFSET))
85#define KDBG_EXTRACT_SUBCLASS(Debugid) \
86 ((uint8_t)(((Debugid) & KDBG_SUBCLASS_MASK) >> KDBG_SUBCLASS_OFFSET))
87#define KDBG_EXTRACT_CSC(Debugid) \
88 ((uint16_t)(((Debugid) & KDBG_CSC_MASK) >> KDBG_CSC_OFFSET))
89#define KDBG_EXTRACT_CODE(Debugid) \
90 ((uint16_t)(((Debugid) & KDBG_CODE_MASK) >> KDBG_CODE_OFFSET))
91#define KDBG_CLASS_ENCODE(Class, SubClass) KDBG_EVENTID(Class, SubClass, 0)
92#define KDBG_CLASS_DECODE(Debugid) (Debugid & KDBG_CSC_MASK)
93
94// Function qualifiers for debug IDs.
95#define DBG_FUNC_START 1U
96#define DBG_FUNC_END 2U
97#define DBG_FUNC_NONE 0U
98
99#pragma mark - Class and subclass definitions
100
101
102#define DBG_MACH 1
103#define DBG_NETWORK 2
104#define DBG_FSYSTEM 3
105#define DBG_BSD 4
106#define DBG_IOKIT 5
107#define DBG_DRIVERS 6
108#define DBG_TRACE 7
109#define DBG_DLIL 8
110#define DBG_PTHREAD 9
111#define DBG_CORESTORAGE 10
112#define DBG_CG 11
113#define DBG_MONOTONIC 12
114#define DBG_MISC 20
115#define DBG_SECURITY 30
116#define DBG_DYLD 31
117#define DBG_QT 32
118#define DBG_APPS 33
119#define DBG_LAUNCHD 34
120#define DBG_SILICON 35
121#define DBG_PERF 37
122#define DBG_IMPORTANCE 38
123#define DBG_BANK 40
124#define DBG_XPC 41
125#define DBG_ATM 42
126#define DBG_ARIADNE 43
127#define DBG_DAEMON 44
128#define DBG_ENERGYTRACE 45
129#define DBG_DISPATCH 46
130#define DBG_IMG 49
131#define DBG_UMALLOC 51
132#define DBG_TURNSTILE 53
133#define DBG_AUDIO 54
134
135#define DBG_MIG 255
136
137#pragma mark DBG_MACH subclasses
138
139#define DBG_MACH_EXCP_KTRAP_x86 0x02 // Kernel Traps on x86
140#define DBG_MACH_EXCP_DFLT 0x03 // deprecated name
141#define DBG_MACH_EXCP_SYNC_ARM 0x03 // arm/arm64 synchronous exception
142#define DBG_MACH_EXCP_IFLT 0x04 // deprecated name
143#define DBG_MACH_EXCP_SERR_ARM 0x04 // arm/arm64 SError (async) exception
144#define DBG_MACH_EXCP_INTR 0x05 // Interrupts
145#define DBG_MACH_EXCP_ALNG 0x06 // Alignment Exception
146#define DBG_MACH_EXCP_UTRAP_x86 0x07 // User Traps on x86
147#define DBG_MACH_EXCP_FP 0x08 // FP Unavail
148#define DBG_MACH_EXCP_DECI 0x09 // Decrementer Interrupt
149#define DBG_MACH_CHUD 0x0A // deprecated name
150#define DBG_MACH_SIGNPOST 0x0A // kernel signposts
151#define DBG_MACH_EXCP_SC 0x0C // System Calls
152#define DBG_MACH_EXCP_TRACE 0x0D // Trace exception
153#define DBG_MACH_EXCP_EMUL 0x0E // Instruction emulated
154#define DBG_MACH_IHDLR 0x10 // Interrupt Handlers
155#define DBG_MACH_IPC 0x20 // Inter Process Comm
156#define DBG_MACH_RESOURCE 0x25 // tracing limits, etc
157#define DBG_MACH_EXCLAVES 0x2A // Exclaves
158#define DBG_MACH_EXCLAVES_SCHEDULER 0x2B // Exclaves Scheduler
159#define DBG_MACH_VM 0x30 // Virtual Memory
160#define DBG_MACH_LEAKS 0x31 // alloc/free
161#define DBG_MACH_WORKINGSET 0x32 // private subclass for working set related debugging
162#define DBG_MACH_SCHED 0x40 // Scheduler
163#define DBG_MACH_MSGID_INVALID 0x50 // Messages - invalid
164#define DBG_MACH_LOCKS 0x60 // new lock APIs
165#define DBG_MACH_PMAP 0x70 // pmap
166#define DBG_MACH_CLOCK 0x80 // clock
167#define DBG_MACH_MP 0x90 // MP related
168#define DBG_MACH_VM_PRESSURE 0xA0 // Memory Pressure Events
169#define DBG_MACH_STACKSHOT 0xA1 // Stackshot/Microstackshot subsystem
170#define DBG_MACH_SFI 0xA2 // Selective Forced Idle (SFI)
171#define DBG_MACH_ENERGY_PERF 0xA3 // Energy/performance resource stats
172#define DBG_MACH_SYSDIAGNOSE 0xA4 // sysdiagnose
173#define DBG_MACH_ZALLOC 0xA5 // Zone allocator
174#define DBG_MACH_THREAD_GROUP 0xA6 // Thread groups
175#define DBG_MACH_COALITION 0xA7 // Coalitions
176#define DBG_MACH_SHAREDREGION 0xA8 // Shared region
177#define DBG_MACH_SCHED_CLUTCH 0xA9 // Clutch scheduler
178#define DBG_MACH_IO 0xAA // I/O
179#define DBG_MACH_WORKGROUP 0xAB // Workgroup subsystem
180#define DBG_MACH_HV 0xAC // Hypervisor subsystem
181#define DBG_MACH_KCOV 0xAD // Kernel coverage sanitizer
182#define DBG_MACH_MACHDEP_EXCP_SC_x86 0xAE // Machine Dependent System Calls on x86
183#define DBG_MACH_MACHDEP_EXCP_SC_ARM 0xAF // Machine Dependent System Calls on arm
184#define DBG_MACH_VM_RECLAIM 0xB0 // Deferred Memory Reclamation
185
186// Codes for DBG_MACH_IO
187#define DBC_MACH_IO_MMIO_READ 0x1
188#define DBC_MACH_IO_MMIO_WRITE 0x2
189#define DBC_MACH_IO_PHYS_READ 0x3
190#define DBC_MACH_IO_PHYS_WRITE 0x4
191#define DBC_MACH_IO_PORTIO_READ 0x5
192#define DBC_MACH_IO_PORTIO_WRITE 0x6
193
194/* Interrupt type bits for DBG_MACH_EXCP_INTR */
195#define DBG_INTR_TYPE_UNKNOWN 0x0 /* default/unknown interrupt */
196#define DBG_INTR_TYPE_IPI 0x1 /* interprocessor interrupt */
197#define DBG_INTR_TYPE_TIMER 0x2 /* timer interrupt */
198#define DBG_INTR_TYPE_OTHER 0x3 /* other (usually external) interrupt */
199#define DBG_INTR_TYPE_PMI 0x4 /* performance monitor interrupt */
200#define DBG_INTR_TYPE_RSVD1 0x5 /* reserved interrupt kind */
201
202/* Codes for Scheduler (DBG_MACH_SCHED) */
203#define MACH_SCHED 0x0 /* Scheduler */
204#define MACH_STACK_ATTACH 0x1 /* stack_attach() */
205#define MACH_STACK_HANDOFF 0x2 /* stack_handoff() */
206#define MACH_CALL_CONT 0x3 /* call_continuation() */
207#define MACH_CALLOUT 0x4 /* callouts */
208#define MACH_STACK_DETACH 0x5
209#define MACH_MAKE_RUNNABLE 0x6 /* make thread runnable */
210#define MACH_PROMOTE 0x7 /* promoted due to resource (replaced by MACH_PROMOTED) */
211#define MACH_DEMOTE 0x8 /* promotion undone (replaced by MACH_UNPROMOTED) */
212#define MACH_IDLE 0x9 /* processor idling */
213#define MACH_STACK_DEPTH 0xa /* stack depth at switch */
214#define MACH_MOVED 0xb /* did not use original scheduling decision */
215#define MACH_PSET_LOAD_AVERAGE 0xc
216#define MACH_AMP_DEBUG 0xd
217#define MACH_FAILSAFE 0xe /* tripped fixed-pri/RT failsafe */
218#define MACH_BLOCK 0xf /* thread block */
219#define MACH_WAIT 0x10 /* thread wait assertion */
220#define MACH_GET_URGENCY 0x14 /* Urgency queried by platform */
221#define MACH_URGENCY 0x15 /* Urgency (RT/BG/NORMAL) communicated
222 * to platform
223 */
224#define MACH_REDISPATCH 0x16 /* "next thread" thread redispatched */
225#define MACH_REMOTE_AST 0x17 /* AST signal issued to remote processor */
226#define MACH_SCHED_CHOOSE_PROCESSOR 0x18 /* Result of choose_processor */
227#define MACH_DEEP_IDLE 0x19 /* deep idle on master processor */
228/* unused 0x1a was MACH_SCHED_DECAY_PRIORITY */
229#define MACH_CPU_THROTTLE_DISABLE 0x1b /* Global CPU Throttle Disable */
230#define MACH_RW_PROMOTE 0x1c /* promoted due to RW lock promotion */
231#define MACH_RW_DEMOTE 0x1d /* promotion due to RW lock undone */
232#define MACH_SCHED_MAINTENANCE 0x1f /* periodic maintenance thread */
233#define MACH_DISPATCH 0x20 /* context switch completed */
234#define MACH_QUANTUM_HANDOFF 0x21 /* quantum handoff occurred */
235#define MACH_MULTIQ_DEQUEUE 0x22 /* Result of multiq dequeue */
236#define MACH_SCHED_THREAD_SWITCH 0x23 /* attempt direct context switch to hinted thread */
237#define MACH_SCHED_SMT_BALANCE 0x24 /* SMT load balancing ASTs */
238#define MACH_REMOTE_DEFERRED_AST 0x25 /* Deferred AST started against remote processor */
239#define MACH_REMOTE_CANCEL_AST 0x26 /* Canceled deferred AST for remote processor */
240#define MACH_SCHED_CHANGE_PRIORITY 0x27 /* thread sched priority changed */
241#define MACH_SCHED_UPDATE_REC_CORES 0x28 /* Change to recommended processor bitmask */
242#define MACH_STACK_WAIT 0x29 /* Thread could not be switched-to because of kernel stack shortage */
243#define MACH_THREAD_BIND 0x2a /* Thread was bound (or unbound) to a processor */
244#define MACH_WAITQ_PROMOTE 0x2b /* Thread promoted by waitq boost */
245#define MACH_WAITQ_DEMOTE 0x2c /* Thread demoted from waitq boost */
246#define MACH_SCHED_LOAD 0x2d /* load update */
247#define MACH_REC_CORES_FAILSAFE 0x2e /* recommended processor failsafe kicked in */
248#define MACH_SCHED_QUANTUM_EXPIRED 0x2f /* thread quantum expired */
249#define MACH_EXEC_PROMOTE 0x30 /* Thread promoted by exec boost */
250#define MACH_EXEC_DEMOTE 0x31 /* Thread demoted from exec boost */
251#define MACH_AMP_SIGNAL_SPILL 0x32 /* AMP spill signal sent to cpuid */
252#define MACH_AMP_STEAL 0x33 /* AMP thread stolen or spilled */
253#define MACH_SCHED_LOAD_EFFECTIVE 0x34 /* Effective scheduler load */
254/* unused MACH_PROMOTED 0x35 was: thread promoted due to mutex priority promotion */
255/* unused MACH_UNPROMOTED 0x36 was: thread unpromoted due to mutex priority promotion */
256/* unused MACH_PROMOTED_UPDATE 0x37 was: thread already promoted, but promotion priority changed */
257#define MACH_QUIESCENT_COUNTER 0x38 /* quiescent counter tick */
258#define MACH_TURNSTILE_USER_CHANGE 0x39 /* base priority change because of turnstile */
259#define MACH_AMP_RECOMMENDATION_CHANGE 0x3a /* Thread group recommendation change */
260#define MACH_AMP_PERFCTL_POLICY_CHANGE 0x3b /* AMP policy for perfctl cluster recommendation */
261#define MACH_TURNSTILE_KERNEL_CHANGE 0x40 /* sched priority change because of turnstile */
262#define MACH_SCHED_WI_AUTO_JOIN 0x41 /* work interval auto join events */
263#define MACH_SCHED_WI_DEFERRED_FINISH 0x42 /* work interval pending finish events for auto-join thread groups */
264#define MACH_SET_RT_DEADLINE 0x43 /* set thread->realtime.deadline */
265#define MACH_CANCEL_RT_DEADLINE 0x44 /* cancel thread->realtime.deadline */
266#define MACH_RT_SIGNAL_SPILL 0x45 /* RT spill signal sent to cpuid */
267#define MACH_RT_STEAL 0x46 /* RT thread stolen or spilled */
268#define MACH_PENDING_AST_URGENT 0x47 /* CPU pending_AST_URGENT set/cleared */
269#define MACH_SCHED_THREAD_SELECT 0x48 /* Result of thread_select */
270#define MACH_SCHED_NEXT_PROCESSOR 0x49 /* Result of choose_next_rt_processor_for_IPI */
271#define MACH_PSET_AVG_EXEC_TIME 0x50
272#define MACH_SUSPEND_USERSPACE 0x51 /* userspace threads are suspended */
273#define MACH_PREEMPTION_EXPIRED 0x52 /* preemption disable threshold crossed */
274#define MACH_FLOOR_PROMOTE 0x53 /* promoted upon request */
275#define MACH_FLOOR_DEMOTE 0x54 /* unpromoted upon request */
276#define MACH_INT_MASKED_EXPIRED 0x55 /* interrupt masked threshold crossed */
277#define MACH_INT_HANDLED_EXPIRED 0x56 /* interrupt handling threshold crossed */
278/* unused MACH_RT_RESTRICT_DENIED 0x57 was: Denied a thread becoming realtime (with -time-constraint-policy-restrict boot-arg)*/
279#define MACH_UPDATE_POWERED_CORES 0x58 /* CLPC requested cores powerup/powerdown */
280#define MACH_MODE_DEMOTE_THROTTLED 0x59 /* Sched mode demotion - throttled */
281#define MACH_MODE_DEMOTE_FAILSAFE 0x5a /* Sched mode demotion - failsafe */
282#define MACH_MODE_DEMOTE_RT_DISALLOWED 0x5b /* Sched mode demotion - rt not allowed */
283#define MACH_MODE_UNDEMOTE_THROTTLED 0x5c /* Sched mode undemotion - throttling */
284#define MACH_MODE_UNDEMOTE_FAILSAFE 0x5d /* Sched mode undemotion - failsafe */
285#define MACH_MODE_UNDEMOTE_RT_DISALLOWED 0x5e /* Sched mode undemotion - rt not allowed */
286#define MACH_INT_MASKED_RESET 0x5f /* interrupt masked threshold reset */
287#define MACH_RT_DISALLOWED_WORK_INTERVAL 0x60 /* RT disallowed due to unmet work interval requirements */
288#define MACH_SCHED_WI_EXTERNAL_WAKEUP 0x61 /* WI thread woken by a thread outside its same work interval */
289#define MACH_SCHED_AST_CHECK 0x62 /* run ast check interrupt handler */
290#define MACH_SCHED_PREEMPT_TIMER_ACTIVE 0x63 /* preempt timer is armed */
291
292/* Codes for Clutch/Edge Scheduler (DBG_MACH_SCHED_CLUTCH) */
293#define MACH_SCHED_CLUTCH_ROOT_BUCKET_STATE 0x0 /* __unused */
294#define MACH_SCHED_CLUTCH_TG_BUCKET_STATE 0x1 /* __unused */
295#define MACH_SCHED_CLUTCH_THREAD_SELECT 0x2 /* Thread selection events for Clutch scheduler */
296#define MACH_SCHED_CLUTCH_THREAD_STATE 0x3 /* __unused */
297#define MACH_SCHED_CLUTCH_TG_BUCKET_PRI 0x4 /* Clutch bucket priority update event */
298/* Edge Scheduler Tracepoints */
299#define MACH_SCHED_EDGE_CLUSTER_OVERLOAD 0x5 /* Cluster experienced overload; migrating threads to other clusters */
300#define MACH_SCHED_EDGE_STEAL 0x6 /* Per-cluster avg. thread execution time */
301#define MACH_SCHED_EDGE_REBAL_RUNNABLE 0x7 /* Rebalance runnable threads on a foreign cluster */
302#define MACH_SCHED_EDGE_REBAL_RUNNING 0x8 /* Rebalance running threads on a foreign cluster */
303#define MACH_SCHED_EDGE_SHOULD_YIELD 0x9 /* Edge decisions for thread yield */
304#define MACH_SCHED_CLUTCH_THR_COUNT 0xa /* Clutch scheduler runnable thread counts */
305#define MACH_SCHED_EDGE_LOAD_AVG 0xb /* Per-cluster load average */
306#define MACH_SCHED_EDGE_CLUSTER_SHARED_LOAD 0xc /* Per-cluster shared resource load */
307#define MACH_SCHED_EDGE_RSRC_HEAVY_THREAD 0xd /* Resource heavy thread state */
308#define MACH_SCHED_EDGE_SHARED_RSRC_MIGRATE 0xe /* Migrating a shared resource thread due to cluster load imbalance */
309
310/* Codes for workgroup interval subsystem (DBG_MACH_WORKGROUP) */
311#define WORKGROUP_INTERVAL_CREATE 0x0 /* work interval creation */
312#define WORKGROUP_INTERVAL_DESTROY 0x1 /* work interval destruction */
313#define WORKGROUP_INTERVAL_CHANGE 0x2 /* thread work interval change */
314#define WORKGROUP_INTERVAL_START 0x3 /* work interval start call */
315#define WORKGROUP_INTERVAL_UPDATE 0x4 /* work interval update call */
316#define WORKGROUP_INTERVAL_FINISH 0x5 /* work interval finish call */
317#define WORKGROUP_INTERVAL_SET_WORKLOAD_ID 0x6 /* work interval set workload id */
318#define WORKGROUP_INTERVAL_SET_WORKLOAD_ID_NAME 0x7 /* work interval set workload id (name) */
319
320/* Codes for coverage sanitizer */
321#define KCOV_STKSZ_THRESHOLD_ABOVE 0x0 /* thread stack is above threshold */
322#define KCOV_STKSZ_THRESHOLD_BELOW 0x1 /* thread stack is below threshold */
323#define KCOV_STKSZ_DELTA 0X2 /* thread stack change is larger than delta. */
324
325/* Variants for MACH_MULTIQ_DEQUEUE */
326#define MACH_MULTIQ_BOUND 1
327#define MACH_MULTIQ_GROUP 2
328#define MACH_MULTIQ_GLOBAL 3
329
330/* Arguments for vm_fault (DBG_MACH_VM) */
331#define DBG_ZERO_FILL_FAULT 1
332#define DBG_PAGEIN_FAULT 2
333#define DBG_COW_FAULT 3
334#define DBG_CACHE_HIT_FAULT 4
335#define DBG_NZF_PAGE_FAULT 5
336#define DBG_GUARD_FAULT 6
337#define DBG_PAGEINV_FAULT 7
338#define DBG_PAGEIND_FAULT 8
339#define DBG_COMPRESSOR_FAULT 9
340#define DBG_COMPRESSOR_SWAPIN_FAULT 10
341#define DBG_COR_FAULT 11
342
343/* Codes for IPC (DBG_MACH_IPC) */
344#define MACH_TASK_SUSPEND 0x0 /* Suspended a task */
345#define MACH_TASK_RESUME 0x1 /* Resumed a task */
346#define MACH_THREAD_SET_VOUCHER 0x2
347#define MACH_IPC_MSG_SEND 0x3 /* mach msg send, uniq msg info */
348#define MACH_IPC_MSG_RECV 0x4 /* mach_msg receive */
349#define MACH_IPC_MSG_RECV_VOUCHER_REFUSED 0x5 /* mach_msg receive, voucher refused */
350#define MACH_IPC_KMSG_FREE 0x6 /* kernel free of kmsg data */
351#define MACH_IPC_VOUCHER_CREATE 0x7 /* Voucher added to global voucher hashtable */
352#define MACH_IPC_VOUCHER_CREATE_ATTR_DATA 0x8 /* Attr data for newly created voucher */
353#define MACH_IPC_VOUCHER_DESTROY 0x9 /* Voucher removed from global voucher hashtable */
354#define MACH_IPC_KMSG_INFO 0xa /* Send/Receive info for a kmsg */
355#define MACH_IPC_KMSG_LINK 0xb /* link a kernel kmsg pointer to user mach_msg_header_t */
356#define MACH_IPC_PORT_ENTRY_MODIFY 0xc /* A port space gained or lost a port right (reference) */
357#define MACH_IPC_DESTROY_GUARDED_DESC 0xd /* Unable to receive a guarded descriptor */
358
359/* Codes for Exclaves (DBG_MACH_EXCLAVES) */
360#define MACH_EXCLAVES_SWITCH 0x0 /* Exclaves world switch (entry/return) */
361#define MACH_EXCLAVES_XNUPROXY 0x1 /* Exclaves xnuproxy request */
362#define MACH_EXCLAVES_RPC 0x2 /* Exclaves endpoint RPC */
363#define MACH_EXCLAVES_UPCALL 0x3 /* Exclaves upcall to an xnu handler */
364#define MACH_EXCLAVES_BOOT_TASK 0x4 /* Exclaves boot task */
365
366/* Codes for Exclaves Scheduler (DBG_MACH_EXCLAVES_SCHEDULER) */
367#define MACH_EXCLAVES_SCHEDULER_YIELD 0x0 /* Exclaves scheduler Yield response */
368#define MACH_EXCLAVES_SCHEDULER_SPAWNED 0x1 /* Exclaves scheduler Spawned response */
369#define MACH_EXCLAVES_SCHEDULER_TERMINATED 0x2 /* Exclaves scheduler Terminated response */
370#define MACH_EXCLAVES_SCHEDULER_WAIT 0x3 /* Exclaves scheduler Wait response */
371#define MACH_EXCLAVES_SCHEDULER_WAKE 0x4 /* Exclaves scheduler Wake response */
372#define MACH_EXCLAVES_SCHEDULER_SUSPENDED 0x5 /* Exclaves scheduler Suspended response */
373#define MACH_EXCLAVES_SCHEDULER_RESUMED 0x6 /* Exclaves scheduler Resumed response */
374#define MACH_EXCLAVES_SCHEDULER_INTERRUPTED 0x7 /* Exclaves scheduler Interrupted response */
375#define MACH_EXCLAVES_SCHEDULER_NOTHING_SCHEDULED 0x8 /* Exclaves scheduler NothingScheduled response */
376#define MACH_EXCLAVES_SCHEDULER_ALL_EXCLAVES_BOOTED 0x9 /* Exclaves scheduler AllExclavesBooted response */
377#define MACH_EXCLAVES_SCHEDULER_EARLY_ALLOC 0xa /* Exclaves scheduler PmmEarlyAlloc response */
378
379/* Codes for thread groups (DBG_MACH_THREAD_GROUP) */
380#define MACH_THREAD_GROUP_NEW 0x0
381#define MACH_THREAD_GROUP_FREE 0x1
382#define MACH_THREAD_GROUP_SET 0x2
383#define MACH_THREAD_GROUP_NAME 0x3
384#define MACH_THREAD_GROUP_NAME_FREE 0x4
385#define MACH_THREAD_GROUP_FLAGS 0x5
386#define MACH_THREAD_GROUP_BLOCK 0x6
387#define MACH_THREAD_GROUP_PREADOPT 0x7
388#define MACH_THREAD_GROUP_PREADOPT_NEXTTIME 0x8
389#define MACH_THREAD_GROUP_PREADOPT_CLEAR 0x9
390#define MACH_THREAD_GROUP_PREADOPT_NA 0xa
391
392/* Codes for coalitions (DBG_MACH_COALITION) */
393#define MACH_COALITION_NEW 0x0
394#define MACH_COALITION_FREE 0x1
395#define MACH_COALITION_ADOPT 0x2
396#define MACH_COALITION_REMOVE 0x3
397#define MACH_COALITION_THREAD_GROUP_SET 0x4
398
399/* Codes for pmap (DBG_MACH_PMAP) */
400#define PMAP__CREATE 0x0
401#define PMAP__DESTROY 0x1
402#define PMAP__PROTECT 0x2
403#define PMAP__PAGE_PROTECT 0x3
404#define PMAP__ENTER 0x4
405#define PMAP__REMOVE 0x5
406#define PMAP__NEST 0x6
407#define PMAP__UNNEST 0x7
408#define PMAP__FLUSH_TLBS 0x8
409#define PMAP__UPDATE_INTERRUPT 0x9
410#define PMAP__ATTRIBUTE_CLEAR 0xa
411#define PMAP__REUSABLE 0xb /* This appears to be unused */
412#define PMAP__QUERY_RESIDENT 0xc
413#define PMAP__FLUSH_KERN_TLBS 0xd
414#define PMAP__FLUSH_DELAYED_TLBS 0xe
415#define PMAP__FLUSH_TLBS_TO 0xf
416#define PMAP__FLUSH_EPT 0x10
417#define PMAP__FAST_FAULT 0x11
418#define PMAP__SWITCH 0x12
419#define PMAP__TTE 0x13
420#define PMAP__SWITCH_USER_TTB 0x14
421#define PMAP__UPDATE_CACHING 0x15
422#define PMAP__ATTRIBUTE_CLEAR_RANGE 0x16
423#define PMAP__CLEAR_USER_TTB 0x17
424#define PMAP__IOMMU_INIT 0x18
425#define PMAP__IOMMU_IOVMALLOC 0x19
426#define PMAP__IOMMU_IOVMFREE 0x1a
427#define PMAP__IOMMU_MAP 0x1b
428#define PMAP__IOMMU_UNMAP 0x1c
429#define PMAP__IOMMU_IOCTL 0x1d
430#define PMAP__IOMMU_GRANT_PAGE 0x1e
431#define PMAP__BATCH_UPDATE_CACHING 0x1f
432#define PMAP__COLLECT_CACHE_OPS 0x20
433
434/* Codes for clock (DBG_MACH_CLOCK) */
435#define MACH_EPOCH_CHANGE 0x0 /* wake epoch change */
436#define MACH_BRIDGE_RCV_TS 0x1 /* receive timestamp pair from interrupt handler */
437#define MACH_BRIDGE_REMOTE_TIME 0x2 /* calculate remote timestamp */
438#define MACH_BRIDGE_RESET_TS 0x3 /* reset timestamp conversion parameters */
439#define MACH_BRIDGE_TS_PARAMS 0x4 /* recompute timestamp conversion parameters */
440#define MACH_BRIDGE_SKIP_TS 0x5 /* skip timestamp */
441#define MACH_BRIDGE_TS_MISMATCH 0x6 /* mismatch between predicted and received remote timestamp */
442#define MACH_BRIDGE_OBSV_RATE 0x7 /* out of range observed rates */
443
444/* Codes for Stackshot/Microstackshot (DBG_MACH_STACKSHOT) */
445#define MICROSTACKSHOT_RECORD 0x0
446#define MICROSTACKSHOT_GATHER 0x1
447#define STACKSHOT_RECORD 0x2 /* START/END, syscall stackshot */
448#define STACKSHOT_RECORD_SHORT 0x3 /* ran out of space inside stackshot, growing buffer */
449#define STACKSHOT_KERN_RECORD 0x4 /* START/END, internal stackshot */
450
451/* Codes for sysdiagnose (DBG_MACH_SYSDIAGNOSE) */
452#define SYSDIAGNOSE_NOTIFY_USER 0x0
453#define SYSDIAGNOSE_FULL 0x1
454#define SYSDIAGNOSE_STACKSHOT 0x2
455#define SYSDIAGNOSE_TAILSPIN 0x3
456
457/* Codes for Selective Forced Idle (DBG_MACH_SFI) */
458#define SFI_SET_WINDOW 0x0
459#define SFI_CANCEL_WINDOW 0x1
460#define SFI_SET_CLASS_OFFTIME 0x2
461#define SFI_CANCEL_CLASS_OFFTIME 0x3
462#define SFI_THREAD_DEFER 0x4
463#define SFI_OFF_TIMER 0x5
464#define SFI_ON_TIMER 0x6
465#define SFI_WAIT_CANCELED 0x7
466#define SFI_PID_SET_MANAGED 0x8
467#define SFI_PID_CLEAR_MANAGED 0x9
468#define SFI_GLOBAL_DEFER 0xa
469
470/* Codes for Zone Allocator (DBG_MACH_ZALLOC) */
471#define ZALLOC_ZCRAM 0x0
472
473/* Codes for Mach resource management (DBG_MACH_RESOURCE) */
474/* _K32A/B codes start at double the low nibble */
475#define RMON_ENABLE_CPUUSAGE_MONITOR 0x001
476#define RMON_CPUUSAGE_VIOLATED 0x002
477#define RMON_CPUUSAGE_SUSPENDED 0x003
478#define RMON_CPUUSAGE_VIOLATED_K32A 0x004
479#define RMON_CPUUSAGE_VIOLATED_K32B 0x005
480#define RMON_CPUUSAGE_RESUMED 0x006
481#define RMON_DISABLE_CPUUSAGE_MONITOR 0x00f
482
483#define RMON_ENABLE_CPUWAKES_MONITOR 0x011
484#define RMON_CPUWAKES_VIOLATED 0x012
485#define RMON_CPUWAKES_VIOLATED_K32A 0x014
486#define RMON_CPUWAKES_VIOLATED_K32B 0x015
487#define RMON_DISABLE_CPUWAKES_MONITOR 0x01f
488
489#define RMON_ENABLE_IO_MONITOR 0x021
490#define RMON_LOGWRITES_VIOLATED 0x022
491#define RMON_PHYSWRITES_VIOLATED 0x023
492#define RMON_LOGWRITES_VIOLATED_K32A 0x024
493#define RMON_LOGWRITES_VIOLATED_K32B 0x025
494#define RMON_DISABLE_IO_MONITOR 0x02f
495
496/* Codes for x86 Hypervisor (DBG_MACH_HV) */
497#define HV_X86_ENTER 0x00
498#define HV_X86_ENTER_ERROR 0x01
499#define HV_X86_TRAP_TASK 0x02
500#define HV_X86_TRAP_THREAD 0x03
501#define HV_X86_INTERRUPT_INJECT 0x04
502#define HV_X86_INTERRUPT_RECV 0x05
503#define HV_X86_INTERRUPT_SEND 0x06
504#define HV_X86_IPI_SEND 0x07
505#define HV_X86_NMI_INJECT 0x08
506#define HV_X86_NMI_SEND 0x09
507#define HV_X86_LSC_HIT 0x0a
508#define HV_X86_LSC_INSERT 0x0b
509#define HV_X86_LSC_INSERT_IMM32 0x0c
510#define HV_X86_LSC_INVALID 0x0d
511#define HV_X86_LSC_INVALIDATE 0x0e
512#define HV_X86_LSC_MISS 0x0f
513#define HV_X86_TIMER_CANCEL 0x10
514#define HV_X86_TIMER_FIRE 0x11
515#define HV_X86_TIMER_SCHEDULE 0x12
516#define HV_X86_APIC_ACCESS_EXIT 0x13
517#define HV_X86_APIC_WRITE_EXIT 0x14
518#define HV_X86_EPT_VIOLATION_EXIT 0x15
519#define HV_X86_EXC_NMI_EXIT 0x16
520#define HV_X86_HLT_EXIT 0x17
521#define HV_X86_IO_EXIT 0x18
522#define HV_X86_IRQ_EXIT 0x19
523#define HV_X86_IRQ_WND_EXIT 0x1a
524#define HV_X86_MOV_DR_EXIT 0x1b
525#define HV_X86_NMI_WND_EXIT 0x1c
526#define HV_X86_RDMSR_EXIT 0x1d
527#define HV_X86_RDPMC_EXIT 0x1e
528#define HV_X86_TPR_THRESHOLD_EXIT 0x1f
529#define HV_X86_VMX_TIMER_EXPIRED_EXIT 0x20
530#define HV_X86_WRMSR_EXIT 0x21
531#define HV_X86_VCPU_READ_APIC_TRAP 0x22
532#define HV_X86_VCPU_READ_VMCS_TRAP 0x23
533#define HV_X86_VCPU_RUN_TRAP 0x24
534#define HV_X86_VCPU_RUN_UNTIL_TRAP 0x25
535#define HV_X86_VCPU_WRITE_APIC_TRAP 0x26
536#define HV_X86_VM_ADDRSPACE_CREATE_TRAP 0x27
537#define HV_X86_VM_ADDRSPACE_DESTROY_TRAP 0x28
538#define HV_X86_VM_INTR_MSI_TRAP 0x29
539#define HV_X86_VM_MAP_TRAP 0x2a
540#define HV_X86_VM_PROTECT_TRAP 0x2b
541#define HV_X86_VM_UNMAP_TRAP 0x2c
542#define HV_X86_TSC_OFFSET_SET 0x2d
543
544#pragma mark Deferred Memory Reclamation Codes (DBG_MACH_VM_RECLAIM)
545
546#define VM_RECLAIM_UPDATE_ACCOUNTING 0x01
547#define VM_RECLAIM_ENTRIES 0x02
548#define VM_RECLAIM_CHUNK 0x03
549#define VM_RECLAIM_ENTRY 0x04
550#define VM_RECLAIM_ALL_MEMORY 0x05
551#define VM_RECLAIM_ASYNC_MEMORY 0x06
552#define VM_RECLAIM_INIT 0x07
553
554/* **** The Kernel Debug Sub Classes for Network (DBG_NETWORK) **** */
555#define DBG_NETIP 1 /* Internet Protocol */
556#define DBG_NETARP 2 /* Address Resolution Protocol */
557#define DBG_NETUDP 3 /* User Datagram Protocol */
558#define DBG_NETTCP 4 /* Transmission Control Protocol */
559#define DBG_NETICMP 5 /* Internet Control Message Protocol */
560#define DBG_NETIGMP 6 /* Internet Group Management Protocol */
561#define DBG_NETRIP 7 /* Routing Information Protocol */
562#define DBG_NETOSPF 8 /* Open Shortest Path First */
563#define DBG_NETISIS 9 /* Intermediate System to Intermediate System */
564#define DBG_NETSNMP 10 /* Simple Network Management Protocol */
565#define DBG_NETSOCK 11 /* Socket Layer */
566
567/* For Apple talk */
568#define DBG_NETAARP 100 /* Apple ARP */
569#define DBG_NETDDP 101 /* Datagram Delivery Protocol */
570#define DBG_NETNBP 102 /* Name Binding Protocol */
571#define DBG_NETZIP 103 /* Zone Information Protocol */
572#define DBG_NETADSP 104 /* Name Binding Protocol */
573#define DBG_NETATP 105 /* Apple Transaction Protocol */
574#define DBG_NETASP 106 /* Apple Session Protocol */
575#define DBG_NETAFP 107 /* Apple Filing Protocol */
576#define DBG_NETRTMP 108 /* Routing Table Maintenance Protocol */
577#define DBG_NETAURP 109 /* Apple Update Routing Protocol */
578
579#define DBG_NETIPSEC 128 /* IPsec Protocol */
580#define DBG_NETVMNET 129 /* VMNet */
581
582/* **** The Kernel Debug Sub Classes for IOKIT (DBG_IOKIT) **** */
583#define DBG_IOINTC 0 /* Interrupt controller */
584#define DBG_IOWORKLOOP 1 /* Work from work loop */
585#define DBG_IOINTES 2 /* Interrupt event source */
586#define DBG_IOCLKES 3 /* Clock event source */
587#define DBG_IOCMDQ 4 /* Command queue latencies */
588#define DBG_IOMCURS 5 /* Memory Cursor */
589#define DBG_IOMDESC 6 /* Memory Descriptors */
590#define DBG_IOPOWER 7 /* Power Managerment */
591#define DBG_IOSERVICE 8 /* Matching etc. */
592#define DBG_IOREGISTRY 9 /* Registry */
593#define DBG_IOPORT 10 /* IOPort */
594
595/* **** 9-32 reserved for internal IOKit usage **** */
596
597#define DBG_IOSTORAGE 32 /* Storage layers */
598#define DBG_IONETWORK 33 /* Network layers */
599#define DBG_IOKEYBOARD 34 /* Keyboard */
600#define DBG_IOHID 35 /* HID Devices */
601#define DBG_IOAUDIO 36 /* Audio */
602#define DBG_IOSERIAL 37 /* Serial */
603#define DBG_IOTTY 38 /* TTY layers */
604#define DBG_IOSAM 39 /* SCSI Architecture Model layers */
605#define DBG_IOPARALLELATA 40 /* Parallel ATA */
606#define DBG_IOPARALLELSCSI 41 /* Parallel SCSI */
607#define DBG_IOSATA 42 /* Serial-ATA */
608#define DBG_IOSAS 43 /* SAS */
609#define DBG_IOFIBRECHANNEL 44 /* FiberChannel */
610#define DBG_IOUSB 45 /* USB */
611#define DBG_IOBLUETOOTH 46 /* Bluetooth */
612#define DBG_IOFIREWIRE 47 /* FireWire */
613#define DBG_IOINFINIBAND 48 /* Infiniband */
614#define DBG_IOCPUPM 49 /* CPU Power Management */
615#define DBG_IOGRAPHICS 50 /* Graphics */
616#define DBG_HIBERNATE 51 /* hibernation related events */
617#define DBG_IOTHUNDERBOLT 52 /* Thunderbolt */
618#define DBG_BOOTER 53 /* booter related events */
619#define DBG_IOAUDIO2 54 /* Audio (extended) */
620#define DBG_IOAFK 55 /* AppleFirmwareKit */
621
622#define DBG_IOSURFACEPA 64 /* IOSurface page mappings */
623#define DBG_IOMDPA 65 /* IOMemoryDescriptor page mappings */
624#define DBG_IODARTPA 66 /* DART page mappings */
625/* **** 67-79 reserved for physical address mapping information **** */
626
627/* Backwards compatibility */
628#define DBG_IOPOINTING DBG_IOHID /* OBSOLETE: Use DBG_IOHID instead */
629#define DBG_IODISK DBG_IOSTORAGE /* OBSOLETE: Use DBG_IOSTORAGE instead */
630
631/* **** The Kernel Debug Sub Classes for Device Drivers (DBG_DRIVERS) **** */
632#define DBG_DRVSTORAGE 1 /* Storage layers */
633#define DBG_DRVNETWORK 2 /* Network layers */
634#define DBG_DRVKEYBOARD 3 /* Keyboard */
635#define DBG_DRVHID 4 /* HID Devices */
636#define DBG_DRVAUDIO 5 /* Audio */
637#define DBG_DRVSERIAL 7 /* Serial */
638#define DBG_DRVSAM 8 /* SCSI Architecture Model layers */
639#define DBG_DRVPARALLELATA 9 /* Parallel ATA */
640#define DBG_DRVPARALLELSCSI 10 /* Parallel SCSI */
641#define DBG_DRVSATA 11 /* Serial ATA */
642#define DBG_DRVSAS 12 /* SAS */
643#define DBG_DRVFIBRECHANNEL 13 /* FiberChannel */
644#define DBG_DRVUSB 14 /* USB */
645#define DBG_DRVBLUETOOTH 15 /* Bluetooth */
646#define DBG_DRVFIREWIRE 16 /* FireWire */
647#define DBG_DRVINFINIBAND 17 /* Infiniband */
648#define DBG_DRVGRAPHICS 18 /* Graphics */
649#define DBG_DRVSD 19 /* Secure Digital */
650#define DBG_DRVNAND 20 /* NAND drivers and layers */
651#define DBG_SSD 21 /* SSD */
652#define DBG_DRVSPI 22 /* SPI */
653#define DBG_DRVWLAN_802_11 23 /* WLAN 802.11 */
654#define DBG_DRVSSM 24 /* System State Manager(AppleSSM) */
655#define DBG_DRVSMC 25 /* System Management Controller */
656#define DBG_DRVMACEFIMANAGER 26 /* Mac EFI Manager */
657#define DBG_DRVANE 27 /* Apple Neural Engine */
658#define DBG_DRVETHERNET 28 /* Ethernet */
659#define DBG_DRVMCC 29 /* Memory Cache Controller */
660#define DBG_DRVACCESSORY 30 /* Accessories */
661#define DBG_SOCDIAGS 31 /* SoC Diagnostics */
662#define DBG_DRVVIRTIO 32 /* Hypervisor VirtIO */
663#define DBG_DRVCELLULAR 33 /* Cellular */
664#define DBG_DRVSPMI 34 /* System Power Management Interface */
665
666/* Backwards compatibility */
667#define DBG_DRVPOINTING DBG_DRVHID /* OBSOLETE: Use DBG_DRVHID instead */
668#define DBG_DRVDISK DBG_DRVSTORAGE /* OBSOLETE: Use DBG_DRVSTORAGE instead */
669
670/* **** The Kernel Debug Sub Classes for the DLIL Layer (DBG_DLIL) **** */
671#define DBG_DLIL_STATIC 1 /* Static DLIL code */
672#define DBG_DLIL_PR_MOD 2 /* DLIL Protocol Module */
673#define DBG_DLIL_IF_MOD 3 /* DLIL Interface Module */
674#define DBG_DLIL_PR_FLT 4 /* DLIL Protocol Filter */
675#define DBG_DLIL_IF_FLT 5 /* DLIL Interface FIlter */
676
677/* The Kernel Debug Sub Classes for File System (DBG_FSYSTEM) */
678#define DBG_FSRW 0x1 /* reads and writes to the filesystem */
679#define DBG_DKRW 0x2 /* reads and writes to the disk */
680#define DBG_FSVN 0x3 /* vnode operations (inc. locking/unlocking) */
681#define DBG_FSLOOOKUP 0x4 /* namei and other lookup-related operations */
682#define DBG_JOURNAL 0x5 /* journaling operations */
683#define DBG_IOCTL 0x6 /* ioctl to the disk */
684#define DBG_BOOTCACHE 0x7 /* bootcache operations */
685#define DBG_HFS 0x8 /* HFS-specific events; see the hfs project */
686#define DBG_APFS 0x9 /* APFS-specific events; see the apfs project */
687#define DBG_SMB 0xA /* SMB-specific events; see the smb project */
688#define DBG_MOUNT 0xB /* Mounting/unmounting operations */
689#define DBG_EXFAT 0xE /* ExFAT-specific events; see the exfat project */
690#define DBG_MSDOS 0xF /* FAT-specific events; see the msdosfs project */
691#define DBG_ACFS 0x10 /* Xsan-specific events; see the XsanFS project */
692#define DBG_THROTTLE 0x11 /* I/O Throttling events */
693#define DBG_DECMP 0x12 /* Decmpfs-specific events */
694#define DBG_VFS 0x13 /* VFS layer events */
695#define DBG_LIVEFS 0x14 /* LiveFS events; see the FSKit project */
696#define DBG_NFS 0x15 /* NFS-specific events; see the nfs project */
697#define DBG_CONTENT_PROT 0xCF /* Content Protection Events: see bsd/sys/cprotect.h */
698
699/*
700 * For Kernel Debug Sub Class DBG_HFS, state bits for hfs_update event
701 */
702#define DBG_HFS_UPDATE_ACCTIME 0x01
703#define DBG_HFS_UPDATE_MODTIME 0x02
704#define DBG_HFS_UPDATE_CHGTIME 0x04
705#define DBG_HFS_UPDATE_MODIFIED 0x08
706#define DBG_HFS_UPDATE_FORCE 0x10
707#define DBG_HFS_UPDATE_DATEADDED 0x20
708#define DBG_HFS_UPDATE_MINOR 0x40
709#define DBG_HFS_UPDATE_SKIPPED 0x80
710
711/*
712 * Codes for Kernel Debug Sub Class DBG_VFS
713 */
714#define DBG_VFS_IO_COMPRESSION_STATS 0x1000
715
716/* The Kernel Debug Sub Classes for BSD */
717#define DBG_BSD_PROC 0x01 /* process/signals related */
718#define DBG_BSD_MEMSTAT 0x02 /* memorystatus / jetsam operations */
719#define DBG_BSD_KEVENT 0x03 /* kqueue / kevent related */
720#define DBG_BSD_EXCP_SC 0x0C /* System Calls */
721#define DBG_BSD_AIO 0x0D /* aio (POSIX async IO) */
722#define DBG_BSD_SC_EXTENDED_INFO 0x0E /* System Calls, extended info */
723#define DBG_BSD_SC_EXTENDED_INFO2 0x0F /* System Calls, extended info */
724#define DBG_BSD_KDEBUG_TEST 0xFF /* for testing kdebug */
725
726/* The Codes for BSD subcode class DBG_BSD_PROC */
727#define BSD_PROC_EXIT 1 /* process exit */
728#define BSD_PROC_FRCEXIT 2 /* Kernel force termination */
729#define BSD_PROC_EXEC 3 /* process spawn / exec */
730#define BSD_PROC_EXITREASON_CREATE 4 /* exit reason creation */
731#define BSD_PROC_EXITREASON_COMMIT 5 /* exit reason commited to a proc */
732
733/* Codes for BSD subcode class DBG_BSD_MEMSTAT */
734#define BSD_MEMSTAT_SCAN 1 /* memorystatus thread awake */
735#define BSD_MEMSTAT_JETSAM 2 /* LRU jetsam */
736#define BSD_MEMSTAT_JETSAM_HIWAT 3 /* highwater jetsam */
737#define BSD_MEMSTAT_FREEZE 4 /* freeze process */
738#define BSD_MEMSTAT_FREEZE_SCAN 5 /* select a process to freeze and freeze it */
739#define BSD_MEMSTAT_UPDATE 6 /* priority update */
740#define BSD_MEMSTAT_IDLE_DEMOTE 7 /* idle demotion fired */
741#define BSD_MEMSTAT_CLEAR_ERRORS 8 /* reset termination error state */
742#define BSD_MEMSTAT_DIRTY_TRACK 9 /* track the process state */
743#define BSD_MEMSTAT_DIRTY_SET 10 /* set the process state */
744#define BSD_MEMSTAT_DIRTY_CLEAR 11 /* clear the process state */
745#ifdef PRIVATE
746#define BSD_MEMSTAT_GRP_SET_PROP 12 /* set group properties */
747#define BSD_MEMSTAT_DO_KILL 13 /* memorystatus kills */
748#define BSD_MEMSTAT_CHANGE_PRIORITY 14 /* priority changed */
749#endif /* PRIVATE */
750#define BSD_MEMSTAT_FAST_JETSAM 15 /* Aggressive jetsam ("clear-the-deck") */
751#define BSD_MEMSTAT_COMPACTOR_RUN 16 /* run VM compactor after process kill */
752#define BSD_MEMSTAT_FREEZE_DISABLE 17 /* disable freeze and kill frozen processes */
753#define BSD_MEMSTAT_RELAUNCH_FLAGS 18 /* flags representing jetsam behavior; based on launchd data */
754
755/* Codes for BSD subcode class DBG_BSD_KEVENT */
756#define BSD_KEVENT_KQ_PROCESS_BEGIN 1
757#define BSD_KEVENT_KQ_PROCESS_END 2
758#define BSD_KEVENT_KQWQ_PROCESS_BEGIN 3
759#define BSD_KEVENT_KQWQ_PROCESS_END 4
760#define BSD_KEVENT_KQWQ_BIND 5
761#define BSD_KEVENT_KQWQ_UNBIND 6
762#define BSD_KEVENT_KQWQ_THREQUEST 7
763#define BSD_KEVENT_KQWL_PROCESS_BEGIN 8
764#define BSD_KEVENT_KQWL_PROCESS_END 9
765#define BSD_KEVENT_KQWL_THREQUEST 10
766#define BSD_KEVENT_KQWL_THADJUST 11
767#define BSD_KEVENT_KQ_REGISTER 12
768#define BSD_KEVENT_KQWQ_REGISTER 13
769#define BSD_KEVENT_KQWL_REGISTER 14
770#define BSD_KEVENT_KNOTE_ACTIVATE 15
771#define BSD_KEVENT_KQ_PROCESS 16
772#define BSD_KEVENT_KQWQ_PROCESS 17
773#define BSD_KEVENT_KQWL_PROCESS 18
774#define BSD_KEVENT_KQWL_BIND 19
775#define BSD_KEVENT_KQWL_UNBIND 20
776#define BSD_KEVENT_KNOTE_ENABLE 21
777#define BSD_KEVENT_KNOTE_VANISHED 22
778
779/* The Kernel Debug Sub Classes for DBG_TRACE */
780#define DBG_TRACE_DATA 0
781#define DBG_TRACE_STRING 1
782#define DBG_TRACE_INFO 2
783
784/* The Kernel Debug events: */
785#define TRACE_DATA_NEWTHREAD (TRACEDBG_CODE(DBG_TRACE_DATA, 1))
786#define TRACE_DATA_EXEC (TRACEDBG_CODE(DBG_TRACE_DATA, 2))
787#define TRACE_DATA_THREAD_TERMINATE (TRACEDBG_CODE(DBG_TRACE_DATA, 3))
788#define TRACE_DATA_THREAD_TERMINATE_PID (TRACEDBG_CODE(DBG_TRACE_DATA, 4))
789#define TRACE_STRING_GLOBAL (TRACEDBG_CODE(DBG_TRACE_STRING, 0))
790#define TRACE_STRING_NEWTHREAD (TRACEDBG_CODE(DBG_TRACE_STRING, 1))
791#define TRACE_STRING_EXEC (TRACEDBG_CODE(DBG_TRACE_STRING, 2))
792#define TRACE_STRING_PROC_EXIT (TRACEDBG_CODE(DBG_TRACE_STRING, 3))
793#define TRACE_STRING_THREADNAME (TRACEDBG_CODE(DBG_TRACE_STRING, 4))
794#define TRACE_STRING_THREADNAME_PREV (TRACEDBG_CODE(DBG_TRACE_STRING, 5))
795#define TRACE_PANIC (TRACEDBG_CODE(DBG_TRACE_INFO, 0))
796#define TRACE_TIMESTAMPS (TRACEDBG_CODE(DBG_TRACE_INFO, 1))
797#define TRACE_LOST_EVENTS (TRACEDBG_CODE(DBG_TRACE_INFO, 2))
798#define TRACE_WRITING_EVENTS (TRACEDBG_CODE(DBG_TRACE_INFO, 3))
799#define TRACE_INFO_STRING (TRACEDBG_CODE(DBG_TRACE_INFO, 4))
800#define TRACE_RETROGRADE_EVENTS (TRACEDBG_CODE(DBG_TRACE_INFO, 5))
801#define TRACE_PAST_EVENTS (TRACEDBG_CODE(DBG_TRACE_INFO, 6))
802
803/* The Kernel Debug Sub Classes for DBG_CORESTORAGE */
804#define DBG_CS_IO 0
805
806/* The Kernel Debug Sub Classes for DBG_SECURITY */
807#define DBG_SEC_KERNEL 0 /* raw entropy collected by the kernel */
808#define DBG_SEC_SANDBOX 1
809
810/* Sub-class codes for CoreGraphics (DBG_CG) are defined in its component. */
811
812/* The Kernel Debug Sub Classes for DBG_MONOTONIC */
813#define DBG_MT_INSTRS_CYCLES 1
814#define DBG_MT_DEBUG 2
815#define DBG_MT_RESOURCES_PROC_EXIT 3
816#define DBG_MT_RESOURCES_THR_EXIT 4
817#define DBG_MT_INSTRS_CYCLES_ON_CPU 5
818#define DBG_MT_TMPTH 0xfe
819#define DBG_MT_TMPCPU 0xff
820
821/* Kernel Debug events for the DBG_MT_RESOURCES_PROC_EXIT subclass */
822#define DBG_MT_INSTRS_CYCLES_PROC_EXIT MTDBG_RESOURCES_ON_PROC_EXIT(0)
823#define DBG_MT_P_INSTRS_CYCLES_PROC_EXIT MTDBG_RESOURCES_ON_PROC_EXIT(1)
824
825/* Kernel Debug events for the DBG_MT_RESOURCES_THR_EXIT subclass */
826#define DBG_MT_INSTRS_CYCLES_THR_EXIT MTDBG_RESOURCES_ON_THR_EXIT(0)
827#define DBG_MT_P_INSTRS_CYCLES_THR_EXIT MTDBG_RESOURCES_ON_THR_EXIT(1)
828
829/* The Kernel Debug Sub Classes for DBG_MISC */
830#define DBG_MISC_COREBRIGHTNESS 0x01
831#define DBG_MISC_VIDEOENG 0x02
832#define DBG_EVENT 0x10
833#define DBG_MISC_INSTRUMENTS 0x11
834#define DBG_MISC_INSTRUMENTSBT 0x12
835#define DBG_MISC_RUNLOOP_DETAILS 0x13
836#define DBG_MISC_RUNLOOP_BUSY 0x14
837#define DBG_MISC_LAYOUT 0x1a
838#define DBG_BUFFER 0x20
839
840/* The Kernel Debug Sub Classes for DBG_DYLD */
841#define DBG_DYLD_UUID (5)
842
843/* Kernel Debug codes for the DBG_DYLD_UUID subclass */
844#define DBG_DYLD_UUID_MAP_A (0)
845#define DBG_DYLD_UUID_MAP_B (1)
846#define DBG_DYLD_UUID_MAP_32_A (2)
847#define DBG_DYLD_UUID_MAP_32_B (3)
848#define DBG_DYLD_UUID_MAP_32_C (4)
849#define DBG_DYLD_UUID_UNMAP_A (5)
850#define DBG_DYLD_UUID_UNMAP_B (6)
851#define DBG_DYLD_UUID_UNMAP_32_A (7)
852#define DBG_DYLD_UUID_UNMAP_32_B (8)
853#define DBG_DYLD_UUID_UNMAP_32_C (9)
854#define DBG_DYLD_UUID_SHARED_CACHE_A (10)
855#define DBG_DYLD_UUID_SHARED_CACHE_B (11)
856#define DBG_DYLD_UUID_SHARED_CACHE_32_A (12)
857#define DBG_DYLD_UUID_SHARED_CACHE_32_B (13)
858#define DBG_DYLD_UUID_SHARED_CACHE_32_C (14)
859#define DBG_DYLD_AOT_UUID_MAP_A (15)
860#define DBG_DYLD_AOT_UUID_MAP_B (16)
861
862/* The Kernel Debug modifiers for the DBG_DKRW sub class */
863#define DKIO_DONE 0x01
864#define DKIO_READ 0x02
865#define DKIO_ASYNC 0x04
866#define DKIO_META 0x08
867#define DKIO_PAGING 0x10
868#define DKIO_THROTTLE 0x20 /* Deprecated, still provided so fs_usage doesn't break */
869#define DKIO_PASSIVE 0x40
870#define DKIO_NOCACHE 0x80
871#define DKIO_TIER_MASK 0xF00
872#define DKIO_TIER_SHIFT 8
873#define DKIO_TIER_UPGRADE 0x1000
874
875/* Kernel Debug Sub Classes for Applications (DBG_APPS) */
876#define DBG_APP_LOGINWINDOW 0x03
877#define DBG_APP_AUDIO 0x04
878#define DBG_APP_SYSTEMUI 0x05
879#define DBG_APP_SIGNPOST 0x0A
880#define DBG_APP_TAL 0x0B
881#define DBG_APP_APPKIT 0x0C
882#define DBG_APP_UIKIT 0x0D
883#define DBG_APP_DFR 0x0E
884#define DBG_APP_LAYOUT 0x0F
885#define DBG_APP_COREDATA 0x10
886#define DBG_APP_RUNLOOP_BASIC 0x11
887#define DBG_APP_RUNLOOP_ADVANCED 0x12
888#define DBG_APP_SAMBA 0x80
889#define DBG_APP_EOSSUPPORT 0x81
890#define DBG_APP_MACEFIMANAGER 0x82
891#define DBG_APP_ENTERPRISE 0x83
892
893/* Kernel Debug codes for Throttling (DBG_THROTTLE) */
894#define OPEN_THROTTLE_WINDOW 0x1
895#define PROCESS_THROTTLED 0x2
896#define IO_THROTTLE_DISABLE 0x3
897#define IO_TIER_UPL_MISMATCH 0x4
898
899/* Subclasses for MACH Importance Policies (DBG_IMPORTANCE) */
900/* TODO: Split up boost and task policy? */
901#define IMP_ASSERTION 0x10 /* Task takes/drops a boost assertion */
902#define IMP_BOOST 0x11 /* Task boost level changed */
903#define IMP_MSG 0x12 /* boosting message sent by donating task on donating port */
904#define IMP_WATCHPORT 0x13 /* port marked as watchport, and boost was transferred to the watched task */
905#define IMP_TASK_SUPPRESSION 0x17 /* Task changed suppression behaviors */
906#define IMP_TASK_APPTYPE 0x18 /* Task launched with apptype */
907#define IMP_UPDATE 0x19 /* Requested -> effective calculation */
908#define IMP_USYNCH_QOS_OVERRIDE 0x1A /* Userspace synchronization applied QoS override to resource owning thread */
909#define IMP_DONOR_CHANGE 0x1B /* The iit_donor bit changed */
910#define IMP_MAIN_THREAD_QOS 0x1C /* The task's main thread QoS was set */
911#define IMP_SYNC_IPC_QOS 0x1D /* Sync IPC QOS override */
912/* DBG_IMPORTANCE subclasses 0x20 - 0x40 are reserved for task policy flavors */
913
914/* thread and task attributes */
915#define IMP_TASK_POLICY_DARWIN_BG 0x21
916#define IMP_TASK_POLICY_IOPOL 0x22
917#define IMP_TASK_POLICY_IO 0x23
918#define IMP_TASK_POLICY_PASSIVE_IO 0x24
919
920/* task only attributes */
921#define IMP_TASK_POLICY_DARWIN_BG_IOPOL 0x27
922/* unused, was IMP_TASK_POLICY_TAL 0x28 */
923#define IMP_TASK_POLICY_BOOST 0x29
924#define IMP_TASK_POLICY_ROLE 0x2A
925/* unused 0x2B */
926#define IMP_TASK_POLICY_TERMINATED 0x2C
927#define IMP_TASK_POLICY_NEW_SOCKETS_BG 0x2D
928#define IMP_TASK_POLICY_SUP_ACTIVE 0x2E
929#define IMP_TASK_POLICY_LATENCY_QOS 0x2F
930#define IMP_TASK_POLICY_THROUGH_QOS 0x30
931#define IMP_TASK_POLICY_WATCHERS_BG 0x31
932
933#define IMP_TASK_POLICY_SFI_MANAGED 0x34
934#define IMP_TASK_POLICY_ALL_SOCKETS_BG 0x37
935
936#define IMP_TASK_POLICY_BASE_LATENCY_AND_THROUGHPUT_QOS 0x39 /* latency as value1, throughput as value2 */
937#define IMP_TASK_POLICY_OVERRIDE_LATENCY_AND_THROUGHPUT_QOS 0x3A /* latency as value1, throughput as value2 */
938
939/* thread only attributes */
940#define IMP_TASK_POLICY_PIDBIND_BG 0x32
941/* unused 0x33 */
942/* reserved 0x35 */
943#define IMP_TASK_POLICY_QOS_OVERRIDE 0x36
944#define IMP_TASK_POLICY_QOS_AND_RELPRIO 0x38 /* QoS as value1, relative priority as value2 */
945#define IMP_TASK_POLICY_QOS_WORKQ_OVERRIDE 0x3B
946#define IMP_TASK_POLICY_QOS_PROMOTE 0x3C
947#define IMP_TASK_POLICY_QOS_KEVENT_OVERRIDE 0x3D
948#define IMP_TASK_POLICY_QOS_IPC_OVERRIDE IMP_TASK_POLICY_QOS_KEVENT_OVERRIDE /* legacy name */
949#define IMP_TASK_POLICY_QOS_SERVICER_OVERRIDE 0x3E
950#define IMP_TASK_POLICY_IOTIER_KEVENT_OVERRIDE 0x3F
951#define IMP_TASK_POLICY_WI_DRIVEN 0x40
952
953/* Codes for IMP_ASSERTION */
954#define IMP_HOLD 0x2 /* Task holds a boost assertion */
955#define IMP_DROP 0x4 /* Task drops a boost assertion */
956#define IMP_EXTERN 0x8 /* boost assertion moved from kernel to userspace responsibility (externalized) */
957
958/* Codes for IMP_BOOST */
959#define IMP_BOOSTED 0x1
960#define IMP_UNBOOSTED 0x2 /* Task drops a boost assertion */
961
962/* Codes for IMP_MSG */
963#define IMP_MSG_SEND 0x1 /* boosting message sent by donating task on donating port */
964#define IMP_MSG_DELV 0x2 /* boosting message delivered to task */
965
966/* Codes for IMP_UPDATE */
967#define IMP_UPDATE_TASK_CREATE 0x1
968
969/* Codes for IMP_USYNCH_QOS_OVERRIDE */
970#define IMP_USYNCH_ADD_OVERRIDE 0x0 /* add override for a contended resource */
971#define IMP_USYNCH_REMOVE_OVERRIDE 0x1 /* remove override for a contended resource */
972
973/* Codes for IMP_DONOR_CHANGE */
974#define IMP_DONOR_UPDATE_LIVE_DONOR_STATE 0x0
975#define IMP_DONOR_INIT_DONOR_STATE 0x1
976
977/* Code for IMP_SYNC_IPC_QOS */
978#define IMP_SYNC_IPC_QOS_APPLIED 0x0
979#define IMP_SYNC_IPC_QOS_REMOVED 0x1
980#define IMP_SYNC_IPC_QOS_OVERFLOW 0x2
981#define IMP_SYNC_IPC_QOS_UNDERFLOW 0x3
982
983/* Subclasses for Turnstiles (DBG_TURNSTILE) */
984#define TURNSTILE_HEAP_OPERATIONS 0x10
985#define TURNSTILE_PRIORITY_OPERATIONS 0x20
986#define TURNSTILE_FREELIST_OPERATIONS 0x30
987
988/* Codes for TURNSTILE_HEAP_OPERATIONS */
989#define THREAD_ADDED_TO_TURNSTILE_WAITQ 0x1
990#define THREAD_REMOVED_FROM_TURNSTILE_WAITQ 0x2
991#define THREAD_MOVED_IN_TURNSTILE_WAITQ 0x3
992#define TURNSTILE_ADDED_TO_TURNSTILE_HEAP 0x4
993#define TURNSTILE_REMOVED_FROM_TURNSTILE_HEAP 0x5
994#define TURNSTILE_MOVED_IN_TURNSTILE_HEAP 0x6
995#define TURNSTILE_ADDED_TO_THREAD_HEAP 0x7
996#define TURNSTILE_REMOVED_FROM_THREAD_HEAP 0x8
997#define TURNSTILE_MOVED_IN_THREAD_HEAP 0x9
998#define TURNSTILE_UPDATE_STOPPED_BY_LIMIT 0xa
999#define THREAD_NOT_WAITING_ON_TURNSTILE 0xb
1000
1001/* Codes for TURNSTILE_PRIORITY_OPERATIONS */
1002#define TURNSTILE_PRIORITY_CHANGE 0x1
1003#define THREAD_USER_PROMOTION_CHANGE 0x2
1004
1005/* Codes for TURNSTILE_FREELIST_OPERATIONS */
1006#define TURNSTILE_PREPARE 0x1
1007#define TURNSTILE_COMPLETE 0x2
1008
1009/* Subclasses for MACH Bank Voucher Attribute Manager (DBG_BANK) */
1010#define BANK_ACCOUNT_INFO 0x10 /* Trace points related to bank account struct */
1011#define BANK_TASK_INFO 0x11 /* Trace points related to bank task struct */
1012
1013/* Subclasses for MACH ATM Voucher Attribute Manager (ATM) */
1014#define ATM_SUBAID_INFO 0x10
1015#define ATM_GETVALUE_INFO 0x20
1016#define ATM_UNREGISTER_INFO 0x30
1017
1018/* Codes for BANK_ACCOUNT_INFO */
1019#define BANK_SETTLE_CPU_TIME 0x1 /* Bank ledger(chit) rolled up to tasks. */
1020#define BANK_SECURE_ORIGINATOR_CHANGED 0x2 /* Secure Originator changed. */
1021#define BANK_SETTLE_ENERGY 0x3 /* Bank ledger(energy field) rolled up to tasks. */
1022
1023/* Codes for ATM_SUBAID_INFO */
1024#define ATM_MIN_CALLED 0x1
1025#define ATM_LINK_LIST_TRIM 0x2
1026
1027/* Codes for ATM_GETVALUE_INFO */
1028#define ATM_VALUE_REPLACED 0x1
1029#define ATM_VALUE_ADDED 0x2
1030
1031/* Codes for ATM_UNREGISTER_INFO */
1032#define ATM_VALUE_UNREGISTERED 0x1
1033#define ATM_VALUE_DIFF_MAILBOX 0x2
1034
1035/* Kernel Debug Sub Classes for daemons (DBG_DAEMON) */
1036#define DBG_DAEMON_COREDUET 0x1
1037#define DBG_DAEMON_POWERD 0x2
1038
1039/* Subclasses for the user space allocator */
1040#define DBG_UMALLOC_EXTERNAL 0x1
1041#define DBG_UMALLOC_INTERNAL 0x2
1042
1043#pragma mark - subsystem event ID macros
1044
1045#define KDBG_MIGCODE(msgid) (((unsigned)DBG_MIG << KDBG_CLASS_OFFSET) | \
1046 ((unsigned)((msgid) & 0x3fffff) << KDBG_CODE_OFFSET))
1047
1048#define MACHDBG_CODE(SubClass, code) KDBG_EVENTID(DBG_MACH, SubClass, code)
1049#define NETDBG_CODE(SubClass, code) KDBG_EVENTID(DBG_NETWORK, SubClass, code)
1050#define FSDBG_CODE(SubClass, code) KDBG_EVENTID(DBG_FSYSTEM, SubClass, code)
1051#define BSDDBG_CODE(SubClass, code) KDBG_EVENTID(DBG_BSD, SubClass, code)
1052#define IOKDBG_CODE(SubClass, code) KDBG_EVENTID(DBG_IOKIT, SubClass, code)
1053#define DRVDBG_CODE(SubClass, code) KDBG_EVENTID(DBG_DRIVERS, SubClass, code)
1054#define TRACEDBG_CODE(SubClass, code) KDBG_EVENTID(DBG_TRACE, SubClass, code)
1055#define SILICONDBG_CODE(SubClass, code) KDBG_EVENTID(DBG_SILICON, SubClass, code)
1056#define MISCDBG_CODE(SubClass, code) KDBG_EVENTID(DBG_MISC, SubClass, code)
1057#define DLILDBG_CODE(SubClass, code) KDBG_EVENTID(DBG_DLIL, SubClass, code)
1058#define SECURITYDBG_CODE(SubClass, code) KDBG_EVENTID(DBG_SECURITY, SubClass, code)
1059#define DYLDDBG_CODE(SubClass, code) KDBG_EVENTID(DBG_DYLD, SubClass, code)
1060#define QTDBG_CODE(SubClass, code) KDBG_EVENTID(DBG_QT, SubClass, code)
1061#define APPSDBG_CODE(SubClass, code) KDBG_EVENTID(DBG_APPS, SubClass, code)
1062#define ARIADNEDBG_CODE(SubClass, code) KDBG_EVENTID(DBG_ARIADNE, SubClass, code)
1063#define DAEMONDBG_CODE(SubClass, code) KDBG_EVENTID(DBG_DAEMON, SubClass, code)
1064#define CPUPM_CODE(code) IOKDBG_CODE(DBG_IOCPUPM, code)
1065#define MTDBG_CODE(SubClass, code) KDBG_EVENTID(DBG_MONOTONIC, SubClass, code)
1066#define MTDBG_RESOURCES_ON_PROC_EXIT(code) MTDBG_CODE(DBG_MT_RESOURCES_PROC_EXIT, code)
1067#define MTDBG_RESOURCES_ON_THR_EXIT(code) MTDBG_CODE(DBG_MT_RESOURCES_THR_EXIT, code)
1068
1069#define KMEM_ALLOC_CODE MACHDBG_CODE(DBG_MACH_LEAKS, 0)
1070#define KMEM_ALLOC_CODE_2 MACHDBG_CODE(DBG_MACH_LEAKS, 1)
1071#define KMEM_FREE_CODE MACHDBG_CODE(DBG_MACH_LEAKS, 2)
1072#define KMEM_FREE_CODE_2 MACHDBG_CODE(DBG_MACH_LEAKS, 3)
1073#define ZALLOC_CODE MACHDBG_CODE(DBG_MACH_LEAKS, 4)
1074#define ZALLOC_CODE_2 MACHDBG_CODE(DBG_MACH_LEAKS, 5)
1075#define ZFREE_CODE MACHDBG_CODE(DBG_MACH_LEAKS, 6)
1076#define ZFREE_CODE_2 MACHDBG_CODE(DBG_MACH_LEAKS, 7)
1077
1078#define MEMSTAT_CODE(code) BSDDBG_CODE(DBG_BSD_MEMSTAT, code)
1079
1080#define VM_RECLAIM_CODE(code) MACHDBG_CODE(DBG_MACH_VM_RECLAIM, code)
1081
1082#define PMAP_CODE(code) MACHDBG_CODE(DBG_MACH_PMAP, code)
1083
1084#define IMPORTANCE_CODE(SubClass, code) KDBG_EVENTID(DBG_IMPORTANCE, (SubClass), (code))
1085#define BANK_CODE(SubClass, code) KDBG_EVENTID(DBG_BANK, (SubClass), (code))
1086#define ATM_CODE(SubClass, code) KDBG_EVENTID(DBG_ATM, (SubClass), (code))
1087#define TURNSTILE_CODE(SubClass, code) KDBG_EVENTID(DBG_TURNSTILE, (SubClass), (code))
1088
1089// Kernel Debug Macros for specific daemons
1090#define COREDUETDBG_CODE(code) DAEMONDBG_CODE(DBG_DAEMON_COREDUET, code)
1091#define POWERDDBG_CODE(code) DAEMONDBG_CODE(DBG_DAEMON_POWERD, code)
1092
1093// VFS lookup events
1094#define VFS_LOOKUP (FSDBG_CODE(DBG_FSRW,36))
1095#define VFS_LOOKUP_DONE (FSDBG_CODE(DBG_FSRW,39))
1096
1097// Deprecated macro using legacy naming convention.
1098#define KDBG_CODE(Class, SubClass, Code) KDBG_EVENTID(Class, SubClass, Code)
1099
1100/* Kernel trace events associated with timers and timer queues */
1101#define DECR_TRAP_LATENCY MACHDBG_CODE(DBG_MACH_EXCP_DECI, 0)
1102#define DECR_SET_DEADLINE MACHDBG_CODE(DBG_MACH_EXCP_DECI, 1)
1103#define DECR_TIMER_CALLOUT MACHDBG_CODE(DBG_MACH_EXCP_DECI, 2)
1104#define DECR_PM_DEADLINE MACHDBG_CODE(DBG_MACH_EXCP_DECI, 3)
1105#define DECR_TIMER_MIGRATE MACHDBG_CODE(DBG_MACH_EXCP_DECI, 4)
1106#if defined(i386) || defined(x86_64)
1107#define DECR_RDHPET MACHDBG_CODE(DBG_MACH_EXCP_DECI, 5)
1108#define DECR_SET_TSC_DEADLINE MACHDBG_CODE(DBG_MACH_EXCP_DECI, 6)
1109#define DECR_SET_APIC_DEADLINE MACHDBG_CODE(DBG_MACH_EXCP_DECI, 16)
1110#endif
1111#define DECR_TIMER_ENTER MACHDBG_CODE(DBG_MACH_EXCP_DECI, 7)
1112#define DECR_TIMER_CANCEL MACHDBG_CODE(DBG_MACH_EXCP_DECI, 8)
1113#define DECR_TIMER_QUEUE MACHDBG_CODE(DBG_MACH_EXCP_DECI, 9)
1114#define DECR_TIMER_EXPIRE MACHDBG_CODE(DBG_MACH_EXCP_DECI,10)
1115#define DECR_TIMER_ASYNC_DEQ MACHDBG_CODE(DBG_MACH_EXCP_DECI,11)
1116#define DECR_TIMER_UPDATE MACHDBG_CODE(DBG_MACH_EXCP_DECI,12)
1117#define DECR_TIMER_ESCALATE MACHDBG_CODE(DBG_MACH_EXCP_DECI,13)
1118#define DECR_TIMER_OVERDUE MACHDBG_CODE(DBG_MACH_EXCP_DECI,14)
1119#define DECR_TIMER_RESCAN MACHDBG_CODE(DBG_MACH_EXCP_DECI,15)
1120#define DECR_TIMER_PAUSE MACHDBG_CODE(DBG_MACH_EXCP_DECI,17)
1121#define DECR_TIMER_POSTPONE MACHDBG_CODE(DBG_MACH_EXCP_DECI,18)
1122
1123#endif // __APPLE_API_UNSTABLE
1124
1125__END_DECLS
1126
1127#if defined(KERNEL) || defined(PRIVATE)
1128#include <sys/kdebug_private.h>
1129#endif // defined(KERNEL) || defined(PRIVATE)
1130
1131#ifdef KERNEL
1132#include <sys/kdebug_kernel.h>
1133#endif // defined(KERNEL)
1134
1135#endif // !defined(BSD_SYS_KDEBUG_H)
1136