#ifndef _IOKIT_ROOTDOMAIN_H
#define _IOKIT_ROOTDOMAIN_H
#include <IOKit/IOService.h>
#include <IOKit/pwr_mgt/IOPM.h>
class RootDomainUserClient;
enum {
kRootDomainSleepNotSupported = 0x00000000,
kRootDomainSleepSupported = 0x00000001,
kFrameBufferDeepSleepSupported = 0x00000002
};
extern "C"
{
IONotifier * registerSleepWakeInterest(IOServiceInterestHandler, void *, void * = 0);
IOReturn acknowledgeSleepWakeNotification(void * );
}
class IOPMrootDomain: public IOService
{
OSDeclareDefaultStructors(IOPMrootDomain)
public:
virtual bool start( IOService * provider );
virtual IOReturn newUserClient ( task_t, void *, UInt32, IOUserClient ** );
virtual IOReturn setAggressiveness ( unsigned long, unsigned long );
virtual IOReturn youAreRoot ( void );
virtual IOReturn sleepSystem ( void );
virtual IOReturn receivePowerNotification (UInt32 msg);
virtual void setSleepSupported( IOOptionBits flags );
virtual IOOptionBits getSleepSupported();
virtual bool activityTickle ( unsigned long, unsigned long x=0 );
private:
class IORootParent * patriarch; unsigned long idlePeriod;
virtual void powerChangeDone ( unsigned long );
virtual void command_received ( void *, void * , void * , void *);
virtual bool tellChangeDown ( unsigned long stateNum);
virtual bool askChangeDown ( unsigned long stateNum);
virtual void tellChangeUp ( unsigned long );
virtual void tellNoChangeDown ( unsigned long );
bool systemBooting;
bool ignoringClamshell;
bool allowSleep;
bool sleepIsSupported;
IOOptionBits platformSleepSupport;
};
class IORootParent: public IOService
{
OSDeclareDefaultStructors(IORootParent)
public:
bool start ( IOService * nub );
void shutDownSystem ( void );
void sleepSystem ( void );
void wakeSystem ( void );
};
#endif