X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/b7266188b87f3620ec3f9f717e57194a7dd989fe..4b17d6b6e417f714551ec129064745ea9919780e:/osfmk/kern/debug.h?ds=sidebyside diff --git a/osfmk/kern/debug.h b/osfmk/kern/debug.h index 308435ece..c773ca623 100644 --- a/osfmk/kern/debug.h +++ b/osfmk/kern/debug.h @@ -40,9 +40,13 @@ struct thread_snapshot { uint32_t nkern_frames; uint32_t nuser_frames; uint64_t wait_event; - uint64_t continuation; + uint64_t continuation; uint64_t thread_id; + uint64_t user_time; + uint64_t system_time; int32_t state; + int32_t sched_pri; // scheduled (current) priority + int32_t sched_flags; // scheduler flags char ss_flags; } __attribute__ ((packed)); @@ -50,6 +54,13 @@ struct task_snapshot { uint32_t snapshot_magic; int32_t pid; uint32_t nloadinfos; + uint64_t user_time_in_terminated_threads; + uint64_t system_time_in_terminated_threads; + int suspend_count; + int task_size; // pages + int faults; // number of page faults + int pageins; // number of actual pageins + int cow_faults; // number of copy-on-write faults char ss_flags; /* We restrict ourselves to a statically defined * (current as of 2009) length for the @@ -59,19 +70,43 @@ struct task_snapshot { char p_comm[17]; } __attribute__ ((packed)); + +struct mem_and_io_snapshot { + uint32_t snapshot_magic; + uint32_t free_pages; + uint32_t active_pages; + uint32_t inactive_pages; + uint32_t purgeable_pages; + uint32_t wired_pages; + uint32_t speculative_pages; + uint32_t throttled_pages; + int busy_buffer_count; + uint32_t pages_wanted; + uint32_t pages_reclaimed; + uint8_t pages_wanted_reclaimed_valid; // did mach_vm_pressure_monitor succeed? +} __attribute__((packed)); + + enum { kUser64_p = 0x1, kKernel64_p = 0x2, - kHasDispatchSerial = 0x4 + kHasDispatchSerial = 0x4, + kTerminatedSnapshot = 0x8, + kPidSuspended = 0x10, // true for suspended task + kFrozen = 0x20 // true for hibernated task (along with pidsuspended) }; +#define VM_PRESSURE_TIME_WINDOW 5 /* seconds */ + enum { - STACKSHOT_GET_DQ = 0x1, - STACKSHOT_SAVE_LOADINFO = 0x2 + STACKSHOT_GET_DQ = 0x1, + STACKSHOT_SAVE_LOADINFO = 0x2, + STACKSHOT_GET_GLOBAL_MEM_STATS = 0x4 }; -#define STACKSHOT_THREAD_SNAPSHOT_MAGIC 0xfeedface -#define STACKSHOT_TASK_SNAPSHOT_MAGIC 0xdecafbad +#define STACKSHOT_THREAD_SNAPSHOT_MAGIC 0xfeedface +#define STACKSHOT_TASK_SNAPSHOT_MAGIC 0xdecafbad +#define STACKSHOT_MEM_AND_IO_SNAPSHOT_MAGIC 0xbfcabcde #endif /* __APPLE_API_UNSTABLE */ #endif /* __APPLE_API_PRIVATE */ @@ -81,6 +116,7 @@ enum { extern unsigned int systemLogDiags; extern char debug_buf[]; extern unsigned int debug_boot_arg; +extern char kernel_uuid[]; #ifdef MACH_KERNEL_PRIVATE @@ -93,12 +129,12 @@ extern unsigned int current_debugger; #define KDP_CUR_DB 0x1 #define KDB_CUR_DB 0x2 -extern unsigned int active_debugger; +extern unsigned int active_debugger; extern unsigned int debug_mode; extern unsigned int disable_debug_output; -extern unsigned int panicDebugging; -extern unsigned int logPanicDataToScreen; +extern unsigned int panicDebugging; +extern unsigned int logPanicDataToScreen; extern int db_run_mode; @@ -130,7 +166,9 @@ void unpackA(char *inbuf, uint32_t length); void panic_display_system_configuration(void); void panic_display_zprint(void); - +#if CONFIG_ZLEAKS +void panic_display_ztrace(void); +#endif /* CONFIG_ZLEAKS */ #endif /* MACH_KERNEL_PRIVATE */ #define DB_HALT 0x1 @@ -177,7 +215,7 @@ extern int debug_kprint_current_process(const char **namep); } while (0) #else /* !DEBUG */ #define DEBUG_KPRINT_SYSCALL_PREDICATE_INTERNAL(mask, namep) (0) -#define DEBUG_KPRINT_SYSCALL_MASK(mask, fmt, args...) do { } while(0) +#define DEBUG_KPRINT_SYSCALL_MASK(mask, fmt, args...) do { } while (0) /* kprintf(fmt, args) */ #endif /* !DEBUG */ enum { @@ -206,6 +244,7 @@ extern void panic(const char *string, ...) __printflike(1,2); #if KERNEL_PRIVATE void _consume_panic_args(int, ...); +void panic_context(unsigned int reason, void *ctx, const char *string, ...); #endif #if CONFIG_NO_PANIC_STRINGS