• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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