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