]> git.saurik.com Git - apple/xnu.git/blobdiff - iokit/IOKit/IOServicePM.h
xnu-3248.40.184.tar.gz
[apple/xnu.git] / iokit / IOKit / IOServicePM.h
index 940a75160abc509785ff2ff81b2d4028c5802548..17662cb4e081a4e2b673800bc13fcb1fbd1cbb17 100644 (file)
 #ifndef _IOKIT_IOSERVICEPM_H
 #define _IOKIT_IOSERVICEPM_H
 
-#include <libkern/c++/OSObject.h>
-#include <IOKit/IOLocks.h>
 #include <IOKit/pwr_mgt/IOPM.h>
 
-extern "C" {
-#include <kern/thread_call.h>
-}
-
 class IOService;
 class IOServicePM;
 class IOPowerConnection;
-class IOPMinformee;
-class IOPMinformeeList;
 class IOWorkLoop;
 class IOCommandGate;
 class IOTimerEventSource;
 class IOPlatformExpert;
+
+#ifdef XNU_KERNEL_PRIVATE
+class IOPMinformee;
+class IOPMinformeeList;
 class IOPMWorkQueue;
 class IOPMRequest;
 class IOPMRequestQueue;
-struct changeNoteItem;
+class IOPMCompletionQueue;
 
-/* DEPRECATED */
-/*! @class IOPMprot
-    @abstract Protected power management instance variables for IOService objects.
-    @availability Mac OS X version 10.0. Deprecated in version 10.5.
-    @discussion IOPMprot is deprecated. Do not use it in any new code.
-    
-    Call IOService::getPowerState to query the current power state rather than access myCurrentState.
-*/
+typedef void (*IOPMCompletionAction)(void * target, void * param);
+
+// PM channels for IOReporting
+#ifndef kPMPowerStatesChID
+#define kPMPowerStatesChID  IOREPORT_MAKEID('P','M','S','t','H','i','s','t')
+#endif
+
+#ifndef kPMCurrStateChID
+#define kPMCurrStateChID  IOREPORT_MAKEID( 'P','M','C','u','r','S','t','\0' )
+#endif
+
+// state_id details in PM channels
+#define kPMReportPowerOn       0x01
+#define kPMReportDeviceUsable  0x02
+#define kPMReportLowPower      0x04
+
+
+typedef unsigned long       IOPMPowerStateIndex;
+typedef uint32_t            IOPMPowerChangeFlags;
+typedef uint32_t            IOPMRequestTag;
+
+struct IOPMDriverCallEntry {
+    queue_chain_t   link;
+    thread_t        thread;
+    IOService *     target;
+};
+
+// Power clients (desires)
+extern const OSSymbol *     gIOPMPowerClientDevice;
+extern const OSSymbol *     gIOPMPowerClientDriver;
+extern const OSSymbol *     gIOPMPowerClientChildProxy;
+extern const OSSymbol *     gIOPMPowerClientChildren;
+extern const OSSymbol *     gIOPMPowerClientRootDomain;
+
+/* Binary compatibility with drivers that access pm_vars */
+#ifdef __LP64__
+#define PM_VARS_SUPPORT     0
+#else
+#define PM_VARS_SUPPORT     1
+#endif
+
+#if PM_VARS_SUPPORT
+/* Deprecated in version 10.5 */
 class IOPMprot : public OSObject
 {
     friend class IOService;
@@ -66,50 +97,16 @@ class IOPMprot : public OSObject
     OSDeclareDefaultStructors(IOPMprot)
 
 public:
-    /*! @var ourName
-        From getName(), used in logging.
-    */
     const char *            ourName;
-
-    /*! @var thePlatform
-        From getPlatform, used in logging and registering.
-    */
     IOPlatformExpert *      thePlatform;
-
-    /*! @var theNumberOfPowerStates
-        The number of states in the array.
-    */
     unsigned long           theNumberOfPowerStates;
-
-    /*! @var thePowerStates
-        The array.
-    */
     IOPMPowerState          thePowerStates[IOPMMaxPowerStates];
-
-    /*! @var theControllingDriver
-        Points to the controlling driver.
-    */
     IOService *             theControllingDriver;
-
-    /*! @var aggressiveness
-        Current value of power management aggressiveness.
-    */
     unsigned long           aggressiveness;
-
-    /*! @var current_aggressiveness_values
-        Array of aggressiveness values.
-    */
-    unsigned long           current_aggressiveness_values [kMaxType+1];
-
-    /*! @var current_aggressiveness_validity
-        True for values that are currently valid.
-    */
-    bool                    current_aggressiveness_valid [kMaxType+1];
-
-    /*! @var myCurrentState
-        The ordinal of our current power state.
-    */
+    unsigned long           current_aggressiveness_values[kMaxType+1];
+    bool                    current_aggressiveness_valid[kMaxType+1];
     unsigned long           myCurrentState;
 };
-
+#endif /* PM_VARS_SUPPORT */
+#endif /* XNU_KERNEL_PRIVATE */
 #endif /* !_IOKIT_IOSERVICEPM_H */