X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/fe8ab488e9161c46dd9885d58fc52996dc0249ff..c18c124eaa464aaaa5549e99e5a70fc9cbb50944:/bsd/sys/kdebug.h diff --git a/bsd/sys/kdebug.h b/bsd/sys/kdebug.h index 80a04ea1f..af75e23a1 100644 --- a/bsd/sys/kdebug.h +++ b/bsd/sys/kdebug.h @@ -43,15 +43,18 @@ __BEGIN_DECLS #include #include -#if defined(KERNEL_BUILD) -#include -#endif /* KERNEL_BUILD */ + +#ifndef KERNEL +#include +#endif #ifdef XNU_KERNEL_PRIVATE #include #include #endif +#ifdef KERNEL_PRIVATE + typedef enum { KD_CALLBACK_KDEBUG_ENABLED, // Trace is now enabled. No arguments @@ -100,33 +103,7 @@ extern void kernel_debug_enter( uintptr_t threadid ); - -/* - * state bits for hfs_update event - */ -#define DBG_HFS_UPDATE_ACCTIME 0x01 -#define DBG_HFS_UPDATE_MODTIME 0x02 -#define DBG_HFS_UPDATE_CHGTIME 0x04 -#define DBG_HFS_UPDATE_MODIFIED 0x08 -#define DBG_HFS_UPDATE_FORCE 0x10 -#define DBG_HFS_UPDATE_DATEADDED 0x20 - - -/* - * types of faults that vm_fault handles - * and creates trace entries for - */ -#define DBG_ZERO_FILL_FAULT 1 -#define DBG_PAGEIN_FAULT 2 -#define DBG_COW_FAULT 3 -#define DBG_CACHE_HIT_FAULT 4 -#define DBG_NZF_PAGE_FAULT 5 -#define DBG_GUARD_FAULT 6 -#define DBG_PAGEINV_FAULT 7 -#define DBG_PAGEIND_FAULT 8 -#define DBG_COMPRESSOR_FAULT 9 -#define DBG_COMPRESSOR_SWAPIN_FAULT 10 - +#endif /* KERNEL_PRIVATE */ /* The debug code consists of the following * @@ -166,9 +143,34 @@ extern void kernel_debug_enter( #define DBG_BANK 40 #define DBG_XPC 41 #define DBG_ATM 42 +#define DBG_ARIADNE 43 + #define DBG_MIG 255 +#ifdef PRIVATE +/* + * OS components can use the full precision of the "code" field + * (Class, SubClass, Code) to inject events using kdebug_trace() by + * using: + * + * kdebug_trace(KDBG_CODE(DBG_XPC, 15, 1) | DBG_FUNC_NONE, 1, 2, 3, 4); + * + * These trace points can be included in production code, since they + * use reserved, non-overlapping ranges. The performance impact when + * kernel tracing is not enabled is minimal. Classes can be reserved + * by filing a Radar in xnu|all. + * + * 64-bit arguments may be truncated if the system is using a 32-bit + * kernel. + * + * On error, -1 will be returned and errno will indicate the error. + */ +#ifndef KERNEL +extern int kdebug_trace(uint32_t code, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4) __OSX_AVAILABLE_STARTING(__MAC_10_10_2, __IPHONE_NA); +#endif +#endif /* PRIVATE */ + /* **** The Kernel Debug Sub Classes for Mach (DBG_MACH) **** */ #define DBG_MACH_EXCP_KTRAP_x86 0x02 /* Kernel Traps on x86 */ #define DBG_MACH_EXCP_DFLT 0x03 /* Data Translation Fault */ @@ -240,6 +242,18 @@ extern void kernel_debug_enter( #define MACH_MULTIQ_GROUP 2 #define MACH_MULTIQ_GLOBAL 3 +/* Arguments for vm_fault (DBG_MACH_VM) */ +#define DBG_ZERO_FILL_FAULT 1 +#define DBG_PAGEIN_FAULT 2 +#define DBG_COW_FAULT 3 +#define DBG_CACHE_HIT_FAULT 4 +#define DBG_NZF_PAGE_FAULT 5 +#define DBG_GUARD_FAULT 6 +#define DBG_PAGEINV_FAULT 7 +#define DBG_PAGEIND_FAULT 8 +#define DBG_COMPRESSOR_FAULT 9 +#define DBG_COMPRESSOR_SWAPIN_FAULT 10 + /* Codes for IPC (DBG_MACH_IPC) */ #define MACH_TASK_SUSPEND 0x0 /* Suspended a task */ #define MACH_TASK_RESUME 0x1 /* Resumed a task */ @@ -277,15 +291,15 @@ extern void kernel_debug_enter( /* Codes for Selective Forced Idle (DBG_MACH_SFI) */ #define SFI_SET_WINDOW 0x0 #define SFI_CANCEL_WINDOW 0x1 -#define SFI_SET_CLASS_OFFTIME 0x2 +#define SFI_SET_CLASS_OFFTIME 0x2 #define SFI_CANCEL_CLASS_OFFTIME 0x3 #define SFI_THREAD_DEFER 0x4 #define SFI_OFF_TIMER 0x5 #define SFI_ON_TIMER 0x6 #define SFI_WAIT_CANCELED 0x7 #define SFI_PID_SET_MANAGED 0x8 -#define SFI_PID_CLEAR_MANAGED 0x9 - +#define SFI_PID_CLEAR_MANAGED 0x9 +#define SFI_GLOBAL_DEFER 0xa /* **** The Kernel Debug Sub Classes for Network (DBG_NETWORK) **** */ #define DBG_NETIP 1 /* Internet Protocol */ #define DBG_NETARP 2 /* Address Resolution Protocol */ @@ -403,6 +417,16 @@ extern void kernel_debug_enter( #define DBG_THROTTLE 0x11 /* I/O Throttling events */ #define DBG_CONTENT_PROT 0xCF /* Content Protection Events: see bsd/sys/cprotect.h */ +/* + * For Kernel Debug Sub Class DBG_HFS, state bits for hfs_update event + */ +#define DBG_HFS_UPDATE_ACCTIME 0x01 +#define DBG_HFS_UPDATE_MODTIME 0x02 +#define DBG_HFS_UPDATE_CHGTIME 0x04 +#define DBG_HFS_UPDATE_MODIFIED 0x08 +#define DBG_HFS_UPDATE_FORCE 0x10 +#define DBG_HFS_UPDATE_DATEADDED 0x20 + /* The Kernel Debug Sub Classes for BSD */ #define DBG_BSD_PROC 0x01 /* process/signals related */ #define DBG_BSD_MEMSTAT 0x02 /* memorystatus / jetsam operations */ @@ -438,11 +462,17 @@ extern void kernel_debug_enter( #define DBG_TRACE_STRING 1 #define DBG_TRACE_INFO 2 -/* - * TRACE_DATA_NEWTHREAD 0x1 - * TRACE_DATA_EXEC 0x2 - */ -#define TRACE_DATA_THREAD_TERMINATE 0x3 /* thread has been queued for deallocation and can no longer run */ +/* The Kernel Debug events: */ +#define TRACE_DATA_NEWTHREAD (TRACEDBG_CODE(DBG_TRACE_DATA, 1)) +#define TRACE_DATA_EXEC (TRACEDBG_CODE(DBG_TRACE_DATA, 2)) +#define TRACE_DATA_THREAD_TERMINATE (TRACEDBG_CODE(DBG_TRACE_DATA, 3)) +#define TRACE_STRING_NEWTHREAD (TRACEDBG_CODE(DBG_TRACE_STRING, 1)) +#define TRACE_STRING_EXEC (TRACEDBG_CODE(DBG_TRACE_STRING, 2)) +#define TRACE_PANIC (TRACEDBG_CODE(DBG_TRACE_INFO, 0)) +#define TRACE_TIMESTAMPS (TRACEDBG_CODE(DBG_TRACE_INFO, 1)) +#define TRACE_LOST_EVENTS (TRACEDBG_CODE(DBG_TRACE_INFO, 2)) +#define TRACE_WRITING_EVENTS (TRACEDBG_CODE(DBG_TRACE_INFO, 3)) +#define TRACE_INFO_STRING (TRACEDBG_CODE(DBG_TRACE_INFO, 4)) /* The Kernel Debug Sub Classes for DBG_CORESTORAGE */ #define DBG_CS_IO 0 @@ -563,6 +593,7 @@ extern void kernel_debug_enter( #define DYLDDBG_CODE(SubClass,code) KDBG_CODE(DBG_DYLD, SubClass, code) #define QTDBG_CODE(SubClass,code) KDBG_CODE(DBG_QT, SubClass, code) #define APPSDBG_CODE(SubClass,code) KDBG_CODE(DBG_APPS, SubClass, code) +#define ARIADNEDBG_CODE(SubClass, code) KDBG_CODE(DBG_ARIADNE, SubClass, code) #define CPUPM_CODE(code) IOKDBG_CODE(DBG_IOCPUPM, code) #define KMEM_ALLOC_CODE MACHDBG_CODE(DBG_MACH_LEAKS, 0) @@ -613,6 +644,7 @@ extern unsigned int kdebug_enable; #define KDEBUG_ENABLE_ENTROPY 0x2 /* Obsolescent */ #define KDEBUG_ENABLE_CHUD 0x4 #define KDEBUG_ENABLE_PPT 0x8 +#define KDEBUG_ENABLE_SERIAL 0x10 /* * Infer the supported kernel debug event level from config option. @@ -1028,6 +1060,14 @@ typedef struct { /* Minimum value allowed when setting decrementer ticks */ #define KDBG_MINRTCDEC 2500 +/* VFS lookup events for serial traces */ +#define VFS_LOOKUP (FSDBG_CODE(DBG_FSRW,36)) +#define VFS_LOOKUP_DONE (FSDBG_CODE(DBG_FSRW,39)) + +#if (DEVELOPMENT || DEBUG) +#define KDEBUG_MOJO_TRACE 1 +#endif + #endif /* __APPLE_API_PRIVATE */ #endif /* PRIVATE */