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