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