1 // Copyright (C) 2014 The Android Open Source Project 2 // 3 // This software is licensed under the terms of the GNU General Public 4 // License version 2, as published by the Free Software Foundation, and 5 // may be copied, distributed, and modified under those terms. 6 // 7 // This program is distributed in the hope that it will be useful, 8 // but WITHOUT ANY WARRANTY; without even the implied warranty of 9 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 // GNU General Public License for more details. 11 12 #ifndef ANDROID_EMULATION_CPU_EMULATOR_H 13 #define ANDROID_EMULATION_CPU_EMULATOR_H 14 15 #include "android/base/String.h" 16 17 namespace android { 18 19 using ::android::base::String; 20 21 // The list of CPU emulation acceleration technologies supported by the 22 // Android emulator. 23 // CPU_ACCELERATOR_NONE means no acceleration is supported on this machine. 24 // 25 // CPU_ACCELERATOR_KVM means Linux KVM, which requires a specific driver 26 // to be installed and that /dev/kvm is properly accessible by the current 27 // user. 28 // 29 // CPU_ACCELERATOR_HAX means Intel's Hardware Accelerated eXecution, 30 // which can be installed on Windows and OS X machines running on an 31 // Intel processor. 32 // 33 enum CpuAccelerator { 34 CPU_ACCELERATOR_NONE = 0, 35 CPU_ACCELERATOR_KVM, 36 CPU_ACCELERATOR_HAX, 37 }; 38 39 // Return the CPU accelerator technology usable on the current machine. 40 // This only returns CPU_ACCELERATOR_KVM or CPU_ACCELERATOR_HAX if the 41 // corresponding accelerator can be used properly. Otherwise it will 42 // return CPU_ACCELERATOR_NONE. 43 CpuAccelerator GetCurrentCpuAccelerator(); 44 45 // Return an ASCII string describing the state of the current CPU 46 // acceleration on this machine. If GetCurrentCpuAccelerator() returns 47 // CPU_ACCELERATOR_NONE this will contain a small explanation why 48 // the accelerator cannot be used. 49 String GetCurrentCpuAcceleratorStatus(); 50 51 // For unit testing/debugging purpose only, must be called before 52 // GetCurrentCpuAccelerator(). 53 void SetCurrentCpuAcceleratorForTesting(CpuAccelerator accel, 54 const char* status); 55 56 } // namespace android 57 58 #endif // ANDROID_EMULATION_CPU_EMULATOR_H 59