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