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);
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 );