]> git.saurik.com Git - apple/xnu.git/blobdiff - iokit/IOKit/pwr_mgt/IOPMinformeeList.h
xnu-1228.3.13.tar.gz
[apple/xnu.git] / iokit / IOKit / pwr_mgt / IOPMinformeeList.h
index 3ce993dcd90beb474e8341bdbc75720874df81ba..8efd4a65448d11799000451821c90d0460f9a7f5 100644 (file)
@@ -26,6 +26,7 @@
  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
  */
 #include <libkern/c++/OSObject.h>
+#include <IOKit/IOLocks.h>
 #include <IOKit/IOReturn.h>
 
 class IOPMinformee;
@@ -34,27 +35,33 @@ class IOService;
 class IOPMinformeeList : public OSObject
 {
 OSDeclareDefaultStructors(IOPMinformeeList)
+    friend class IOPMinformee;
 
 private:
-IOPMinformee *  firstItem;             // pointer to first informee in the list
-unsigned long  length;                 // how many informees are in the list
-
+    // pointer to first informee in the list
+    IOPMinformee       *firstItem;
+    // how many informees are in the list
+    unsigned long       length;
 
 public:
-void initialize ( void );
-
-IOReturn addToList ( IOPMinformee *   newInformee );
-
-IOPMinformee * firstInList ( void );
-
-IOPMinformee * nextInList ( IOPMinformee * currentItem );
-
-unsigned long numberOfItems ( void );
+    void initialize ( void );
+    void free ( void );
 
-IOPMinformee * findItem ( IOService * driverOrChild );
+    unsigned long numberOfItems ( void );
 
-IOReturn removeFromList ( IOService * theItem );
+    IOPMinformee *appendNewInformee( IOService * newObject );
+    
+    // OBSOLETE
+    // do not use addToList(); Use appendNewInformee() instead
+    IOReturn addToList ( IOPMinformee *   newInformee );
+    IOReturn removeFromList ( IOService * theItem );
+    
+    IOPMinformee * firstInList ( void );
+    IOPMinformee * nextInList ( IOPMinformee * currentItem );
+    
+    IOPMinformee * findItem ( IOService * driverOrChild );        
 
-void free ( void );
+    // This lock must be held while modifying list or length
+    static IORecursiveLock * getSharedRecursiveLock( void );
 };