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