+
+/*
+ * Sleep Wake debug buffer header
+ */
+typedef struct {
+ uint32_t signature;
+ uint32_t alloc_size;
+ uint32_t crc; /* CRC for spindump & following data.*/
+ uint32_t spindump_offset; /* Offset at which spindump offset is stored */
+ uint32_t spindump_size;
+ uint8_t is_osx_watchdog;
+
+ /* All members from UUID onwards are saved into log file */
+ char UUID[44];
+ char cps[9]; /* Current power state */
+ char PMStatusCode[32];
+ char reason[32];
+} swd_hdr;
+
+/*
+ * Structure between stackshot samples, expected by spindump
+ */
+typedef struct {
+ uint32_t magic; // 0xbad51ee4
+ uint32_t size; // Size of the stackshot buffer following this struct
+} swd_stackshot_hdr;
+
+
+#define SWD_HDR_SIGNATURE 0xdeb8da2a
+#define SWD_STACKSHOTHDR_MAGIC 0xbad51ee4 // expected by spindump
+
+#define SWD_BUF_SIZE (40*PAGE_SIZE)
+#define SWD_INITIAL_STACK_SIZE ((SWD_BUF_SIZE/2)-sizeof(swd_hdr))
+
+#define SWD_SPINDUMP_SIZE (256*1024)
+#define SWD_INITIAL_SPINDUMP_SIZE ((SWD_SPINDUMP_SIZE/2)-sizeof(swd_hdr))
+
+/* Bits in swd_flags */
+#define SWD_WDOG_ENABLED 0x01
+#define SWD_BOOT_BY_SW_WDOG 0x02
+#define SWD_BOOT_BY_OSX_WDOG 0x04
+#define SWD_VALID_LOGS 0x08
+#define SWD_LOGS_IN_FILE 0x10
+#define SWD_LOGS_IN_MEM 0x20
+
+/* Filenames associated with the stackshots/logs generated by the SWD */
+#define kSleepWakeStackBinFilename "/var/log/SleepWakeStacks.bin"
+#define kSleepWakeStackFilename "/var/log/SleepWakeStacks.dump"
+#define kSleepWakeLogFilename "/var/log/SleepWakeLog.dump"
+#define kAppleOSXWatchdogStackFilename "/var/log/AppleOSXWatchdogStacks.dump"
+#define kAppleOSXWatchdogLogFilename "/var/log/AppleOSXWatchdogLog.dump"
+
+inline char const* getDumpStackFilename(swd_hdr *hdr)
+{
+ if (hdr && hdr->is_osx_watchdog)
+ return kAppleOSXWatchdogStackFilename;
+ return kSleepWakeStackFilename;
+}
+
+inline char const* getDumpLogFilename(swd_hdr *hdr)
+{
+ if (hdr && hdr->is_osx_watchdog)
+ return kAppleOSXWatchdogLogFilename;
+ return kSleepWakeLogFilename;
+}
+
+/* RootDomain IOReporting channels */
+#define kSleepCntChID IOREPORT_MAKEID('S','l','e','e','p','C','n','t')
+#define kDarkWkCntChID IOREPORT_MAKEID('G','U','I','W','k','C','n','t')
+#define kUserWkCntChID IOREPORT_MAKEID('D','r','k','W','k','C','n','t')
+
+/*
+ * kAssertDelayChID - Histogram of time elapsed before assertion after wake.
+ */
+#define kAssertDelayBcktCnt 11
+#define kAssertDelayBcktSize 3
+#define kAssertDelayChID IOREPORT_MAKEID('r','d','A','s','r','t','D','l')
+
+/*
+ * kSleepDelaysChID - Histogram of time taken to put system to sleep
+ */
+#define kSleepDelaysBcktCnt 13
+#define kSleepDelaysBcktSize 10
+#define kSleepDelaysChID IOREPORT_MAKEID('r','d','S','l','p','D','l','y')
+
+/* Sleep Options/settings */
+#define kSleepOptionDisplayCapturedModeKey "DisplayCapturedMode"
+
+