xref: /xnu-10002.61.3/tools/tests/testkext/testvmx.cpp (revision 0f4c859e951fba394238ab619495c4e1d54d0f34)
1*0f4c859eSApple OSS Distributions /*
2*0f4c859eSApple OSS Distributions  *  testvmx.cpp
3*0f4c859eSApple OSS Distributions  *  testkext
4*0f4c859eSApple OSS Distributions  *
5*0f4c859eSApple OSS Distributions  */
6*0f4c859eSApple OSS Distributions 
7*0f4c859eSApple OSS Distributions #include "testvmx.h"
8*0f4c859eSApple OSS Distributions 
9*0f4c859eSApple OSS Distributions #if !(defined(__i386__) || defined(__x86_64__))
10*0f4c859eSApple OSS Distributions #error VMX only supported on i386/x86_64
11*0f4c859eSApple OSS Distributions #endif
12*0f4c859eSApple OSS Distributions 
13*0f4c859eSApple OSS Distributions #include <mach/boolean.h>
14*0f4c859eSApple OSS Distributions #include <i386/vmx.h>
15*0f4c859eSApple OSS Distributions 
16*0f4c859eSApple OSS Distributions 
17*0f4c859eSApple OSS Distributions #define super IOService
18*0f4c859eSApple OSS Distributions OSDefineMetaClassAndStructors(testvmx, super);
19*0f4c859eSApple OSS Distributions 
20*0f4c859eSApple OSS Distributions bool
start(IOService * provider)21*0f4c859eSApple OSS Distributions testvmx::start( IOService * provider )
22*0f4c859eSApple OSS Distributions {
23*0f4c859eSApple OSS Distributions 	int ret;
24*0f4c859eSApple OSS Distributions 
25*0f4c859eSApple OSS Distributions 	IOLog("%s\n", __PRETTY_FUNCTION__);
26*0f4c859eSApple OSS Distributions 
27*0f4c859eSApple OSS Distributions 	if (!super::start(provider)) {
28*0f4c859eSApple OSS Distributions 		return false;
29*0f4c859eSApple OSS Distributions 	}
30*0f4c859eSApple OSS Distributions 
31*0f4c859eSApple OSS Distributions 	IOLog("Attempting host_vmxon\n");
32*0f4c859eSApple OSS Distributions 	ret = host_vmxon(FALSE);
33*0f4c859eSApple OSS Distributions 	IOLog("host_vmxon: %d\n", ret);
34*0f4c859eSApple OSS Distributions 
35*0f4c859eSApple OSS Distributions 	return true;
36*0f4c859eSApple OSS Distributions }
37*0f4c859eSApple OSS Distributions 
38*0f4c859eSApple OSS Distributions void
stop(IOService * provider)39*0f4c859eSApple OSS Distributions testvmx::stop( IOService * provider )
40*0f4c859eSApple OSS Distributions {
41*0f4c859eSApple OSS Distributions 	IOLog("%s\n", __PRETTY_FUNCTION__);
42*0f4c859eSApple OSS Distributions 
43*0f4c859eSApple OSS Distributions 	super::stop(provider);
44*0f4c859eSApple OSS Distributions 
45*0f4c859eSApple OSS Distributions 	IOLog("Attempting host_vmxoff\n");
46*0f4c859eSApple OSS Distributions 	host_vmxoff();
47*0f4c859eSApple OSS Distributions 	IOLog("host_vmxoff called\n");
48*0f4c859eSApple OSS Distributions }
49