]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/kern/debug.h
xnu-2050.24.15.tar.gz
[apple/xnu.git] / osfmk / kern / debug.h
index d4ad172b9eb281f489d5fda3ffefd439834f3e8d..c773ca6233fe2c4f78e3b314a9c536a8a0dd60e6 100644 (file)
@@ -39,11 +39,28 @@ struct thread_snapshot {
        uint32_t                snapshot_magic;
        uint32_t                nkern_frames;
        uint32_t                nuser_frames;
-       int32_t                 pid;
        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));
+
+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
@@ -53,15 +70,43 @@ struct thread_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)
 };
 
-enum   {STACKSHOT_GET_DQ = 1};
-#define STACKSHOT_DISPATCH_OFFSET_MASK 0xffff0000
-#define STACKSHOT_DISPATCH_OFFSET_SHIFT 16 
+#define VM_PRESSURE_TIME_WINDOW 5 /* seconds */
+
+enum {
+       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_MEM_AND_IO_SNAPSHOT_MAGIC    0xbfcabcde
 
 #endif /* __APPLE_API_UNSTABLE */
 #endif /* __APPLE_API_PRIVATE */
@@ -70,6 +115,8 @@ enum {STACKSHOT_GET_DQ = 1};
 
 extern unsigned int    systemLogDiags;
 extern char debug_buf[];
+extern unsigned int    debug_boot_arg;
+extern char kernel_uuid[];
 
 #ifdef MACH_KERNEL_PRIVATE
 
@@ -82,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;
 
@@ -119,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
@@ -166,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 {
@@ -195,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