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