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