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