xref: /aosp_15_r20/external/cpuinfo/include/cpuinfo-mock.h (revision 2b54f0db79fd8303838913b20ff3780cddaa909f)
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