1 #pragma once 2 #ifndef CPUINFO_MOCK_H 3 #define CPUINFO_MOCK_H 4 5 #include <stddef.h> 6 #include <stdint.h> 7 8 #include <cpuinfo.h> 9 #if defined(__linux__) 10 #include <sys/types.h> 11 #endif 12 13 #if !defined(CPUINFO_MOCK) || !(CPUINFO_MOCK) 14 #error This header is intended only for test use 15 #endif 16 17 #ifdef __cplusplus 18 extern "C" { 19 #endif 20 21 #if CPUINFO_ARCH_ARM 22 void CPUINFO_ABI cpuinfo_set_fpsid(uint32_t fpsid); 23 void CPUINFO_ABI cpuinfo_set_wcid(uint32_t wcid); 24 #endif /* CPUINFO_ARCH_ARM */ 25 26 #if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64 27 struct cpuinfo_mock_cpuid { 28 uint32_t input_eax; 29 uint32_t input_ecx; 30 uint32_t eax; 31 uint32_t ebx; 32 uint32_t ecx; 33 uint32_t edx; 34 }; 35 36 void CPUINFO_ABI cpuinfo_mock_set_cpuid(struct cpuinfo_mock_cpuid* dump, size_t entries); 37 void CPUINFO_ABI cpuinfo_mock_get_cpuid(uint32_t eax, uint32_t regs[4]); 38 void CPUINFO_ABI cpuinfo_mock_get_cpuidex(uint32_t eax, uint32_t ecx, uint32_t regs[4]); 39 #endif /* CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64 */ 40 41 struct cpuinfo_mock_file { 42 const char* path; 43 size_t size; 44 const char* content; 45 size_t offset; 46 }; 47 48 struct cpuinfo_mock_property { 49 const char* key; 50 const char* value; 51 }; 52 53 #if defined(__linux__) 54 void CPUINFO_ABI cpuinfo_mock_filesystem(struct cpuinfo_mock_file* files); 55 int CPUINFO_ABI cpuinfo_mock_open(const char* path, int oflag); 56 int CPUINFO_ABI cpuinfo_mock_close(int fd); 57 ssize_t CPUINFO_ABI cpuinfo_mock_read(int fd, void* buffer, size_t capacity); 58 59 #if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64 60 void CPUINFO_ABI cpuinfo_set_hwcap(uint32_t hwcap); 61 #endif 62 #if CPUINFO_ARCH_ARM 63 void CPUINFO_ABI cpuinfo_set_hwcap2(uint64_t hwcap2); 64 #endif 65 #endif 66 67 #if defined(__ANDROID__) 68 void CPUINFO_ABI cpuinfo_mock_android_properties(struct cpuinfo_mock_property* properties); 69 void CPUINFO_ABI cpuinfo_mock_gl_renderer(const char* renderer); 70 #endif 71 72 #ifdef __cplusplus 73 } /* extern "C" */ 74 #endif 75 76 #endif /* CPUINFO_MOCK_H */ 77