]> git.saurik.com Git - apple/xnu.git/blobdiff - iokit/IOKit/IOService.h
xnu-792.6.61.tar.gz
[apple/xnu.git] / iokit / IOKit / IOService.h
index 334fe25ffc4da66de0cd81279179d557a75d9d90..71c47184e5346c7aeee6442f690ec9c290819bdd 100644 (file)
@@ -314,12 +314,24 @@ public:
 
     virtual bool didTerminate( IOService * provider, IOOptionBits options, bool * defer );
 
+    /* method available in Mac OS X 10.4 or later */
+/*! @function nextIdleTimeout
+    @abstract Allows subclasses to customize idle power management behavior.
+    @discussion Returns the next time that the device should idle into its next lower power state. Subclasses may override for custom idle behavior.
+    @param currentTime The current time
+    @param lastActivity The time of last activity on this device
+    @param powerState The device's current power state.
+    @result Returns the next time the device should idle off (in seconds, relative to the current time). */
+
+    virtual SInt32 nextIdleTimeout(AbsoluteTime currentTime, 
+        AbsoluteTime lastActivity, unsigned int powerState);
+
 private:
     OSMetaClassDeclareReservedUsed(IOService, 0);
     OSMetaClassDeclareReservedUsed(IOService, 1);
     OSMetaClassDeclareReservedUsed(IOService, 2);
+    OSMetaClassDeclareReservedUsed(IOService, 3);
 
-    OSMetaClassDeclareReservedUnused(IOService, 3);
     OSMetaClassDeclareReservedUnused(IOService, 4);
     OSMetaClassDeclareReservedUnused(IOService, 5);
     OSMetaClassDeclareReservedUnused(IOService, 6);
@@ -1792,30 +1804,38 @@ private:
     IOReturn notifyAll ( bool is_prechange );
     bool notifyChild ( IOPowerConnection * nextObject, bool is_prechange );
     bool inform ( IOPMinformee * nextObject, bool is_prechange );
-    void our_prechange_03 ( void );
-    void our_prechange_04 ( void );
-    void our_prechange_05 ( void );
-    void our_prechange_1 ( void );
-    void our_prechange_2 ( void );
-    void our_prechange_3 ( void );
-    void our_prechange_4 ( void );
-    IOReturn parent_down_0 ( void );
-    IOReturn parent_down_02 ( void );
-    void parent_down_04 ( void );
-    void parent_down_05 ( void );
-    IOReturn parent_down_1 ( void );
-    IOReturn parent_down_2 ( void );
-    void parent_down_3 ( void );
-    void parent_down_4 ( void );
-    void parent_down_5 ( void );
-    void parent_down_6 ( void );
-    void parent_up_0 ( void );
-    IOReturn parent_up_1 ( void );
-    IOReturn parent_up_2 ( void );
-    IOReturn parent_up_3 ( void );
-    void parent_up_4 ( void );
-    void parent_up_5 ( void );
-    void parent_up_6 ( void );
+    
+    // Power Management state machine
+    // power change initiated by driver
+    void OurChangeTellClientsPowerDown ( void );
+    void OurChangeTellPriorityClientsPowerDown ( void );
+    void OurChangeNotifyInterestedDriversWillChange ( void );
+    void OurChangeSetPowerState ( void );
+    void OurChangeWaitForPowerSettle ( void );
+    void OurChangeNotifyInterestedDriversDidChange ( void );
+    void OurChangeFinish ( void );
+    
+    // downward power change initiated by a power parent
+    IOReturn ParentDownTellPriorityClientsPowerDown_Immediate ( void );
+    IOReturn ParentDownNotifyInterestedDriversWillChange_Immediate ( void );
+    void ParentDownTellPriorityClientsPowerDown_Delayed ( void );
+    void ParentDownNotifyInterestedDriversWillChange_Delayed ( void );
+    IOReturn ParentDownSetPowerState_Immediate ( void );
+    IOReturn ParentDownWaitForPowerSettleAndNotifyDidChange_Immediate ( void );
+    void ParentDownNotifyDidChangeAndAcknowledgeChange_Delayed ( void );
+    void ParentDownSetPowerState_Delayed ( void );
+    void ParentDownWaitForPowerSettle_Delayed ( void );
+    void ParentDownAcknowledgeChange_Delayed ( void );
+    
+    // upward power change initiated by a power parent
+    void ParentUpSetPowerState_Delayed ( void );
+    IOReturn ParentUpSetPowerState_Immediate ( void );
+    IOReturn ParentUpWaitForSettleTime_Immediate ( void );
+    IOReturn ParentUpNotifyInterestedDriversDidChange_Immediate ( void );
+    void ParentUpWaitForSettleTime_Delayed ( void );
+    void ParentUpNotifyInterestedDriversDidChange_Delayed ( void );
+    void ParentUpAcknowledgePowerChange_Delayed ( void );
+    
     void all_done ( void );
     void all_acked ( void );
     void driver_acked ( void );