* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
*/
#include <libkern/c++/OSObject.h>
+#include <IOKit/IOLocks.h>
#include <IOKit/IOReturn.h>
class IOPMinformee;
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 );
};