1*bbb1b6f9SApple OSS Distributions #ifndef _IOKIT_TESTIOSERVICEUSERNOTIFICATION_H_ 2*bbb1b6f9SApple OSS Distributions #define _IOKIT_TESTIOSERVICEUSERNOTIFICATION_H_ 3*bbb1b6f9SApple OSS Distributions 4*bbb1b6f9SApple OSS Distributions #include <IOKit/IOService.h> 5*bbb1b6f9SApple OSS Distributions #include <IOKit/IOUserClient.h> 6*bbb1b6f9SApple OSS Distributions 7*bbb1b6f9SApple OSS Distributions #if DEVELOPMENT || DEBUG 8*bbb1b6f9SApple OSS Distributions 9*bbb1b6f9SApple OSS Distributions class TestIOServiceUserNotification : public IOService { 10*bbb1b6f9SApple OSS Distributions OSDeclareDefaultStructors(TestIOServiceUserNotification); 11*bbb1b6f9SApple OSS Distributions 12*bbb1b6f9SApple OSS Distributions public: 13*bbb1b6f9SApple OSS Distributions virtual bool start(IOService *provider) override; 14*bbb1b6f9SApple OSS Distributions virtual void free() override; 15*bbb1b6f9SApple OSS Distributions 16*bbb1b6f9SApple OSS Distributions void registerUserNotification(OSObject * notification); 17*bbb1b6f9SApple OSS Distributions void trimUserNotificationsLocked(void); 18*bbb1b6f9SApple OSS Distributions size_t getUserNotificationLeakCount(void); 19*bbb1b6f9SApple OSS Distributions 20*bbb1b6f9SApple OSS Distributions private: 21*bbb1b6f9SApple OSS Distributions OSArray * fUserNotifications; 22*bbb1b6f9SApple OSS Distributions IOLock * fLock; 23*bbb1b6f9SApple OSS Distributions }; 24*bbb1b6f9SApple OSS Distributions 25*bbb1b6f9SApple OSS Distributions class TestIOServiceUserNotificationUserClient : public IOUserClient { 26*bbb1b6f9SApple OSS Distributions OSDeclareDefaultStructors(TestIOServiceUserNotificationUserClient); 27*bbb1b6f9SApple OSS Distributions 28*bbb1b6f9SApple OSS Distributions public: 29*bbb1b6f9SApple OSS Distributions bool start(IOService * provider) override; 30*bbb1b6f9SApple OSS Distributions IONotifier * registerInterest(const OSSymbol * typeOfInterest, 31*bbb1b6f9SApple OSS Distributions IOServiceInterestHandler handler, 32*bbb1b6f9SApple OSS Distributions void * target, void * ref = NULL) override; 33*bbb1b6f9SApple OSS Distributions virtual IOReturn clientClose() override; 34*bbb1b6f9SApple OSS Distributions IOReturn externalMethod(uint32_t selector, IOExternalMethodArguments * args, 35*bbb1b6f9SApple OSS Distributions IOExternalMethodDispatch * dispatch, OSObject * target, void * reference) override; 36*bbb1b6f9SApple OSS Distributions private: 37*bbb1b6f9SApple OSS Distributions TestIOServiceUserNotification * fProvider; 38*bbb1b6f9SApple OSS Distributions }; 39*bbb1b6f9SApple OSS Distributions 40*bbb1b6f9SApple OSS Distributions #endif /* DEVELOPMENT || DEBUG */ 41*bbb1b6f9SApple OSS Distributions 42*bbb1b6f9SApple OSS Distributions #endif /* _IOKIT_TESTIOSERVICEUSERNOTIFICATION_H_ */ 43