xref: /xnu-12377.41.6/tests/sched/sched_test_harness/shadow_headers/misc_needed_defines.h (revision bbb1b6f9e71b8cdde6e5cd6f4841f207dee3d828)
1 // Copyright (c) 2024 Apple Inc.  All rights reserved.
2 
3 #ifndef _MISC_NEEDED_DEFINES_H_
4 #define _MISC_NEEDED_DEFINES_H_
5 
6 #include <kern/bits.h>
7 
8 /*
9  * Include non-kernel header dependencies to make up for the equivalent kernel header
10  * dependencies which are not safe to compile in a userspace binary
11  */
12 #include <os/overflow.h>
13 #include <sys/types.h>
14 #include <os/atomic_private.h>
15 
16 /* Mock osfmk/kern/spl.h */
17 typedef int spl_t;
18 #define splsched() 0
19 #define splx(x) (void)x
20 
21 /* Mock osfmk/arm64/proc_reg.h */
22 #define MAX_PSETS 16
23 #define MAX_CPUS 64
24 
25 /* Dependencies from osfmk/mach/mach_types.h */
26 #include <mach/clock_types.h>
27 #include <mach/boolean.h>
28 #include <mach/kern_return.h>
29 #include <mach/thread_policy_private.h>
30 typedef struct task                     *task_t;
31 typedef struct thread                   *thread_t;
32 typedef struct processor                *processor_t;
33 typedef struct processor_set            *processor_set_t;
34 #define TASK_NULL               ((task_t) 0)
35 #define THREAD_NULL             ((thread_t) 0)
36 #define PROCESSOR_NULL          ((processor_t) 0)
37 #define PROCESSOR_SET_NULL      ((processor_set_t) 0)
38 
39 /* Defines from osfmk/kern/timer_call.h */
40 typedef void            *timer_call_param_t;
41 
42 /* Defines from osfmk/kern/kern_types.h */
43 typedef struct run_queue               *run_queue_t;
44 typedef struct pset_node                *pset_node_t;
45 #define PSET_NODE_NULL                  ((pset_node_t) 0)
46 
47 /* Defines from osfmk/arm/machine_routines.h */
48 typedef uint64_t sched_perfcontrol_preferred_cluster_options_t;
49 typedef enum {
50 	CLUSTER_TYPE_SMP = 0,
51 	CLUSTER_TYPE_E   = 1,
52 	CLUSTER_TYPE_P   = 2,
53 	MAX_CPU_TYPES,
54 } cluster_type_t;
55 #define MAX_AMP_CLUSTER_TYPES (MAX_PSET_TYPES - 1)
56 extern unsigned int ml_get_die_id(unsigned int cluster_id);
57 extern uint64_t ml_cpu_signal_deferred_get_timer(void);
58 extern unsigned int ml_get_cpu_number_type(cluster_type_t cluster_type, bool logical, bool available);
59 extern unsigned int ml_get_cluster_number_type(cluster_type_t cluster_type);
60 
61 /* Defines from osfmk/kern/thread.h */
62 #define assert_thread_magic(thread) do { (void)(thread); } while (0)
63 
64 /* Defines from osfmk/kern/startup.h */
65 #define TUNABLE(type_t, var, boot_arg, default_value) \
66     type_t var = default_value
67 
68 /* Defines from bsd/sys/kdebug_kernel.h */
69 #define __kdebug_only __unused
70 
71 struct mock_topology_info_struct {
72 	unsigned int num_cpus;
73 };
74 extern struct mock_topology_info_struct mock_topology_info;
75 #define ml_get_topology_info() (&mock_topology_info)
76 
77 #endif  /* _MISC_NEEDED_DEFINES_H_ */
78