-typedef struct
-{
- /*
- * The following are the stepper table interfaces.
- */
- void (*pmsCPUMachineInit)(void);
- void (*pmsCPUInit)(void);
- void (*pmsCPUSet)(uint32_t sel);
- void (*pmsCPUConf)(void);
- void (*pmsCPURun)(uint32_t nstep);
- uint32_t (*pmsCPUQuery)(void);
- uint32_t (*pmsCPUPackageQuery)(void);
- void (*pmsCPUYellowFlag)(void);
- void (*pmsCPUGreenFlag)(void);
- kern_return_t (*pmsCPULoadVIDTable)(uint16_t *tablep, int nstates);
- kern_return_t (*pmsCPUSetPStateLimit)(uint32_t limit);
-
- /*
- * The following are the 'C' State interfaces.
- */
- void (*cstateInit)(void);
- void (*cstateMachineIdle)(uint32_t napCtl);
- kern_return_t (*cstateTableSet)(Cstate_hint_t *tablep, unsigned int nstates);
- uint32_t (*cstateNapPolicy)(uint32_t forcenap, uint32_t napCtl);
+typedef struct{
+ kern_return_t (*pmCPUStateInit)(void);
+ void (*cstateInit)(void);
+ uint64_t (*MachineIdle)(uint64_t maxIdleDuration);
+ uint64_t (*GetDeadline)(x86_lcpu_t *lcpu);
+ uint64_t (*SetDeadline)(x86_lcpu_t *lcpu, uint64_t);
+ void (*Deadline)(x86_lcpu_t *lcpu);
+ boolean_t (*exitIdle)(x86_lcpu_t *lcpu);
+ void (*markCPURunning)(x86_lcpu_t *lcpu);
+ int (*pmCPUControl)(uint32_t cmd, void *datap);
+ void (*pmCPUHalt)(void);
+ uint64_t (*getMaxSnoop)(void);
+ void (*setMaxBusDelay)(uint64_t time);
+ uint64_t (*getMaxBusDelay)(void);
+ void (*setMaxIntDelay)(uint64_t time);
+ uint64_t (*getMaxIntDelay)(void);
+ void (*pmCPUSafeMode)(x86_lcpu_t *lcpu, uint32_t flags);
+ void (*pmTimerStateSave)(void);
+ void (*pmTimerStateRestore)(void);
+ kern_return_t (*exitHalt)(x86_lcpu_t *lcpu);
+ kern_return_t (*exitHaltToOff)(x86_lcpu_t *lcpu);
+ void (*markAllCPUsOff)(void);
+ void (*pmSetRunCount)(uint32_t count);
+ boolean_t (*pmIsCPUUnAvailable)(x86_lcpu_t *lcpu);
+ int (*pmChooseCPU)(int startCPU, int endCPU, int preferredCPU);
+ int (*pmIPIHandler)(void *state);
+ void (*pmThreadTellUrgency)(int urgency, uint64_t rt_period, uint64_t rt_deadline);
+ void (*pmActiveRTThreads)(boolean_t active);
+ boolean_t (*pmInterruptPrewakeApplicable)(void);
+ void (*pmThreadGoingOffCore)(thread_t old_thread, boolean_t transfer_load,
+ uint64_t last_dispatch, boolean_t thread_runnable);