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