1*8d741a5dSApple OSS Distributions #include "TestIOConnectMapMemoryPortLeak45265408.h" 2*8d741a5dSApple OSS Distributions #include <IOKit/IOKitKeys.h> 3*8d741a5dSApple OSS Distributions 4*8d741a5dSApple OSS Distributions #if DEVELOPMENT || DEBUG 5*8d741a5dSApple OSS Distributions 6*8d741a5dSApple OSS Distributions #define super IOService 7*8d741a5dSApple OSS Distributions OSDefineMetaClassAndStructors(TestIOConnectMapMemoryPortLeak45265408, IOService); 8*8d741a5dSApple OSS Distributions 9*8d741a5dSApple OSS Distributions bool start(IOService * provider)10*8d741a5dSApple OSS DistributionsTestIOConnectMapMemoryPortLeak45265408::start(IOService *provider) 11*8d741a5dSApple OSS Distributions { 12*8d741a5dSApple OSS Distributions bool ret = super::start(provider); 13*8d741a5dSApple OSS Distributions if (ret) { 14*8d741a5dSApple OSS Distributions OSString * className = OSString::withCStringNoCopy("TestIOConnectMapMemoryPortLeak45265408UserClient"); 15*8d741a5dSApple OSS Distributions setProperty(gIOUserClientClassKey, className); 16*8d741a5dSApple OSS Distributions OSSafeReleaseNULL(className); 17*8d741a5dSApple OSS Distributions registerService(); 18*8d741a5dSApple OSS Distributions } 19*8d741a5dSApple OSS Distributions return ret; 20*8d741a5dSApple OSS Distributions } 21*8d741a5dSApple OSS Distributions 22*8d741a5dSApple OSS Distributions #undef super 23*8d741a5dSApple OSS Distributions #define super IOUserClient 24*8d741a5dSApple OSS Distributions OSDefineMetaClassAndStructors(TestIOConnectMapMemoryPortLeak45265408UserClient, IOUserClient); 25*8d741a5dSApple OSS Distributions 26*8d741a5dSApple OSS Distributions bool start(IOService * provider)27*8d741a5dSApple OSS DistributionsTestIOConnectMapMemoryPortLeak45265408UserClient::start(IOService *provider) 28*8d741a5dSApple OSS Distributions { 29*8d741a5dSApple OSS Distributions bool ret = super::start(provider); 30*8d741a5dSApple OSS Distributions if (ret) { 31*8d741a5dSApple OSS Distributions setProperty(kIOUserClientSharedInstanceKey, kOSBooleanTrue); 32*8d741a5dSApple OSS Distributions this->sharedMemory = IOBufferMemoryDescriptor::withOptions(kIOMemoryKernelUserShared, PAGE_SIZE); 33*8d741a5dSApple OSS Distributions if (this->sharedMemory == NULL) { 34*8d741a5dSApple OSS Distributions ret = false; 35*8d741a5dSApple OSS Distributions } 36*8d741a5dSApple OSS Distributions } 37*8d741a5dSApple OSS Distributions 38*8d741a5dSApple OSS Distributions return ret; 39*8d741a5dSApple OSS Distributions } 40*8d741a5dSApple OSS Distributions 41*8d741a5dSApple OSS Distributions void stop(IOService * provider)42*8d741a5dSApple OSS DistributionsTestIOConnectMapMemoryPortLeak45265408UserClient::stop(IOService *provider) 43*8d741a5dSApple OSS Distributions { 44*8d741a5dSApple OSS Distributions if (this->sharedMemory) { 45*8d741a5dSApple OSS Distributions this->sharedMemory->release(); 46*8d741a5dSApple OSS Distributions this->sharedMemory = NULL; 47*8d741a5dSApple OSS Distributions } 48*8d741a5dSApple OSS Distributions super::stop(provider); 49*8d741a5dSApple OSS Distributions } 50*8d741a5dSApple OSS Distributions 51*8d741a5dSApple OSS Distributions IOReturn clientClose()52*8d741a5dSApple OSS DistributionsTestIOConnectMapMemoryPortLeak45265408UserClient::clientClose() 53*8d741a5dSApple OSS Distributions { 54*8d741a5dSApple OSS Distributions if (!isInactive()) { 55*8d741a5dSApple OSS Distributions terminate(); 56*8d741a5dSApple OSS Distributions } 57*8d741a5dSApple OSS Distributions return kIOReturnSuccess; 58*8d741a5dSApple OSS Distributions } 59*8d741a5dSApple OSS Distributions 60*8d741a5dSApple OSS Distributions IOReturn clientMemoryForType(UInt32 type,IOOptionBits * flags,IOMemoryDescriptor ** memory)61*8d741a5dSApple OSS DistributionsTestIOConnectMapMemoryPortLeak45265408UserClient::clientMemoryForType(UInt32 type, IOOptionBits *flags, IOMemoryDescriptor **memory) 62*8d741a5dSApple OSS Distributions { 63*8d741a5dSApple OSS Distributions *memory = this->sharedMemory; 64*8d741a5dSApple OSS Distributions this->sharedMemory->retain(); 65*8d741a5dSApple OSS Distributions return kIOReturnSuccess; 66*8d741a5dSApple OSS Distributions } 67*8d741a5dSApple OSS Distributions 68*8d741a5dSApple OSS Distributions #endif /* DEVELOPMENT || DEBUG */ 69