]> git.saurik.com Git - apple/xnu.git/blobdiff - iokit/IOKit/pwr_mgt/RootDomain.h
xnu-4570.1.46.tar.gz
[apple/xnu.git] / iokit / IOKit / pwr_mgt / RootDomain.h
index 2ecc15e63ccfecfb4f638cc4376884a0681bfb01..1e447d199c222b3fc37cf14805c7be1f4a227b58 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 1998-2016 Apple Inc. All rights reserved.
  *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
  * 
@@ -44,9 +44,7 @@ class IOPMPowerStateQueue;
 class RootDomainUserClient;
 class PMAssertionsTracker;
 
-#define OBFUSCATE(x) \
-    (((((uintptr_t)(x)) >= VM_MIN_KERNEL_AND_KEXT_ADDRESS) && (((uintptr_t)(x)) < VM_MAX_KERNEL_ADDRESS)) ? \
-        ((void *)(VM_KERNEL_ADDRPERM(x))) : (void *)(x))
+#define OBFUSCATE(x) (void *)VM_KERNEL_UNSLIDE_OR_PERM(x)
 
 #endif
 
@@ -168,10 +166,7 @@ public:
     @discussion systemPowerEventOccurred is a richer alternative to receivePowerNotification()
         Only Apple-owned kexts should have reason to call systemPowerEventOccurred.
     @param event An OSSymbol describing the type of power event.
-    @param value A 32-bit integer value associated with the event.
-    @param shouldUpdate indicates whether the root domain should send a notification
-        to interested parties. Pass false if you're calling systemPowerEventOccurred
-        several times in succession; and pass true only on the last invocatino.
+    @param intValue A 32-bit integer value associated with the event.
     @result kIOReturnSuccess on success */
 
     IOReturn            systemPowerEventOccurred(
@@ -339,7 +334,7 @@ public:
 
 /*! @function createPMAssertion
     @abstract Creates an assertion to influence system power behavior.
-    @param whichAssertionBits A bitfield specify the assertion that the caller requests.
+    @param whichAssertionsBits A bitfield specify the assertion that the caller requests.
     @param assertionLevel An integer detailing the initial assertion level, kIOPMDriverAssertionLevelOn
         or kIOPMDriverAssertionLevelOff.
     @param ownerService A pointer to the caller's IOService class, for tracking.
@@ -493,7 +488,7 @@ public:
     IOReturn    setMaintenanceWakeCalendar(
                     const IOPMCalendarStruct * calendar );
 
-    IOReturn    getSystemSleepType( uint32_t * sleepType );
+    IOReturn    getSystemSleepType(uint32_t * sleepType, uint32_t * standbyTimer);
 
     // Handle callbacks from IOService::systemWillShutdown()
     void        acknowledgeSystemWillShutdown( IOService * from );
@@ -512,9 +507,14 @@ public:
     IOReturn    joinAggressiveness( IOService * service );
     void        handleAggressivesRequests( void );
 
-    void        tracePoint( uint8_t point );
-    void        tracePoint( uint8_t point, uint8_t data );
-    void        traceDetail( uint32_t data32 );
+    void        kdebugTrace(uint32_t event, uint64_t regId,
+                            uintptr_t param1, uintptr_t param2, uintptr_t param3 = 0);
+    void        tracePoint(uint8_t point);
+    void        traceDetail(uint32_t msgType, uint32_t msgIndex, uint32_t delay);
+    void        traceDetail(OSObject *notifier);
+    void        traceAckDelay(OSObject *notifier, uint32_t response, uint32_t delay_ms);
+
+    void        startSpinDump(uint32_t spindumpKind);
 
     bool        systemMessageFilter(
                     void * object, void * arg1, void * arg2, void * arg3 );
@@ -536,7 +536,7 @@ public:
                                 const char          *name,
                                 int                 messageType,
                                 uint32_t            delay_ms,
-                                int                 app_pid,
+                                uint64_t            id,
                                 OSObject            *object,
                                 IOPMPowerStateIndex ps=0);
 
@@ -547,6 +547,7 @@ public:
                     uint32_t *  hibernateMode,
                     uint32_t *  hibernateFreeRatio,
                     uint32_t *  hibernateFreeTime );
+    bool        mustHibernate( void );
 #endif
     void        takeStackshot(bool restart, bool isOSXWatchdog, bool isSpinDump);
     void        sleepWakeDebugTrig(bool restart);
@@ -554,6 +555,8 @@ public:
     bool        sleepWakeDebugIsWdogEnabled();
     static void saveTimeoutAppStackShot(void *p0, void *p1);
     void        sleepWakeDebugSaveSpinDumpFile();
+    void        swdDebugSetup();
+    void        swdDebugTeardown();
 
 private:
     friend class PMSettingObject;
@@ -636,6 +639,7 @@ private:
     bool                    uuidPublished;
 
     // Pref: idle time before idle sleep
+    bool                    idleSleepEnabled;
     unsigned long           sleepSlider;
     unsigned long           idleSeconds;
     uint64_t                autoWakeStart;
@@ -648,7 +652,8 @@ private:
     thread_call_t           extraSleepTimer;
     thread_call_t           diskSyncCalloutEntry;
     thread_call_t           fullWakeThreadCall;
-    thread_call_t           hibDebugSetupEntry;
+    thread_call_t           swdDebugSetupEntry;
+    thread_call_t           swdDebugTearDownEntry;
     thread_call_t           updateConsoleUsersEntry;
 
     // Track system capabilities.
@@ -728,6 +733,8 @@ private:
     uint32_t                lastSleepReason;
     uint32_t                fullToDarkReason;
     uint32_t                hibernateAborted;
+    uint8_t                 standbyNixed;
+    uint8_t                 resetTimers;
 
     enum FullWakeReason {
         kFullWakeReasonNone = 0,
@@ -750,7 +757,6 @@ private:
     OSData *                aggressivesData;
 
     AbsoluteTime            userBecameInactiveTime;
-    AbsoluteTime            systemWakeTime;
 
     // PCI top-level PM trace
     IOService *             pciHostBridgeDevice;
@@ -778,9 +784,12 @@ private:
 #endif
     volatile uint32_t   swd_lock;    /* Lock to access swd_buffer & and its header */
     void  *             swd_buffer;  /* Memory allocated for dumping sleep/wake logs */
-    uint8_t             swd_flags;   /* Flags defined in IOPMPrivate.h */
+    uint32_t            swd_flags;   /* Flags defined in IOPMPrivate.h */
+    uint8_t             swd_DebugImageSetup;
     void  *             swd_spindump_buffer;
 
+    IOBufferMemoryDescriptor    *swd_memDesc;
+
     IOMemoryMap  *      swd_logBufMap; /* Memory with sleep/wake logs from previous boot */
 
     // Wake Event Reporting
@@ -845,7 +854,7 @@ private:
 
     void        deregisterPMSettingObject( PMSettingObject * pmso );
 
-    void        checkForValidDebugData(const char *fname, vfs_context_t *ctx, 
+    uint32_t    checkForValidDebugData(const char *fname, vfs_context_t *ctx, 
                                             void *tmpBuf, struct vnode **vp);
     void        sleepWakeDebugMemAlloc( );
     void        sleepWakeDebugSpinDumpMemAlloc( );