+ virtual IOReturn changePowerStateTo( unsigned long ordinal );
+ virtual IOReturn changePowerStateToPriv( unsigned long ordinal );
+ virtual IOReturn requestPowerDomainState( IOPMPowerFlags, IOPowerConnection *, unsigned long );
+ virtual void powerChangeDone( unsigned long );
+ virtual bool tellChangeDown( unsigned long );
+ virtual bool askChangeDown( unsigned long );
+ virtual void tellChangeUp( unsigned long );
+ virtual void tellNoChangeDown( unsigned long );
+#ifdef XNU_KERNEL_PRIVATE
+ /* Root Domain internals */
+public:
+ void tagPowerPlaneService(
+ IOService * service,
+ IOPMActions * actions );
+
+ void overrideOurPowerChange(
+ IOService * service,
+ IOPMActions * actions,
+ unsigned long * inOutPowerState,
+ uint32_t * inOutChangeFlags );
+
+ void handleOurPowerChangeStart(
+ IOService * service,
+ IOPMActions * actions,
+ uint32_t powerState,
+ uint32_t * inOutChangeFlags );
+
+ void handleOurPowerChangeDone(
+ IOService * service,
+ IOPMActions * actions,
+ uint32_t powerState,
+ uint32_t changeFlags );
+
+ void overridePowerChangeForUIService(
+ IOService * service,
+ IOPMActions * actions,
+ unsigned long * inOutPowerState,
+ uint32_t * inOutChangeFlags );
+
+ void handleActivityTickleForDisplayWrangler(
+ IOService * service,
+ IOPMActions * actions );
+
+ bool shouldDelayChildNotification(
+ IOService * service );
+
+ void handlePowerChangeStartForPCIDevice(
+ IOService * service,
+ IOPMActions * actions,
+ uint32_t powerState,
+ uint32_t * inOutChangeFlags );
+
+ void handlePowerChangeDoneForPCIDevice(
+ IOService * service,
+ IOPMActions * actions,
+ uint32_t powerState,
+ uint32_t changeFlags );
+
+ void askChangeDownDone(
+ IOPMPowerChangeFlags * inOutChangeFlags,
+ bool * cancel );
+
+ void handlePublishSleepWakeUUID(
+ bool shouldPublish);
+
+ void handleQueueSleepWakeUUID(
+ OSObject *obj);
+
+ void handleSuspendPMNotificationClient(
+ uint32_t pid, bool doSuspend);
+
+ IOReturn setMaintenanceWakeCalendar(
+ const IOPMCalendarStruct * calendar );
+
+ // Handle callbacks from IOService::systemWillShutdown()
+ void acknowledgeSystemWillShutdown( IOService * from );
+
+ // Handle platform halt and restart notifications
+ void handlePlatformHaltRestart( UInt32 pe_type );
+
+ IOReturn shutdownSystem( void );
+ IOReturn restartSystem( void );
+ void handleSleepTimerExpiration( void );
+
+ bool activitySinceSleep(void);
+ bool abortHibernation(void);
+
+ 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 );
+
+ bool systemMessageFilter(
+ void * object, void * arg1, void * arg2, void * arg3 );
+
+ void updatePreventIdleSleepList(
+ IOService * service, bool addNotRemove );
+ void updatePreventSystemSleepList(
+ IOService * service, bool addNotRemove );
+
+ void publishPMSetting(
+ const OSSymbol * feature, uint32_t where, uint32_t * featureID );
+
+/*! @function recordPMEvent
+ @abstract Logs IOService PM event timing.
+ @discussion Should only be called from IOServicePM. Should not be exported.
+ @result kIOReturn on success.
+*/
+ IOReturn recordPMEvent( PMEventDetails *details );
+ IOReturn recordAndReleasePMEvent( PMEventDetails *details );
+ IOReturn recordPMEventGated( PMEventDetails *details );
+ IOReturn recordAndReleasePMEventGated( PMEventDetails *details );
+
+ void pmStatsRecordEvent(
+ int eventIndex,
+ AbsoluteTime timestamp);
+
+ void pmStatsRecordApplicationResponse(
+ const OSSymbol *response,
+ const char *name,
+ int messageType,
+ uint32_t delay_ms,
+ int app_pid);
+
+
+/*! @function suspendPMNotificationsForPID
+ @abstract kernel process management calls this to disable sleep/wake notifications
+ when a process is suspended.
+ @param pid the process ID
+ @param doSuspend true suspends the notifications; false enables them
+*/
+ void suspendPMNotificationsForPID( uint32_t pid, bool doSuspend);
+
+/*! @function pmNotificationIsSuspended
+ @abstract returns true if PM notifications have been suspended
+ @param pid the process ID
+ @result true if the process has been suspended
+*/
+ bool pmNotificationIsSuspended( uint32_t pid );
+
+
+#if HIBERNATION
+ bool getHibernateSettings(
+ uint32_t * hibernateMode,
+ uint32_t * hibernateFreeRatio,
+ uint32_t * hibernateFreeTime );
+#endif