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 extern void panic(char *msg, ...); 22 23 /* Mock osfmk/arm64/proc_reg.h */ 24 #define MAX_PSETS 16 25 #define MAX_CPUS 64 26 27 /* Dependencies from osfmk/mach/mach_types.h */ 28 #include <mach/clock_types.h> 29 #include <mach/boolean.h> 30 #include <mach/kern_return.h> 31 #include <mach/thread_policy_private.h> 32 typedef struct task *task_t; 33 typedef struct thread *thread_t; 34 typedef struct processor *processor_t; 35 typedef struct processor_set *processor_set_t; 36 #define TASK_NULL ((task_t) 0) 37 #define THREAD_NULL ((thread_t) 0) 38 #define PROCESSOR_NULL ((processor_t) 0) 39 #define PROCESSOR_SET_NULL ((processor_set_t) 0) 40 41 /* Defines from osfmk/kern/timer_call.h */ 42 typedef void *timer_call_param_t; 43 44 /* Defines from osfmk/kern/kern_types.h */ 45 typedef struct run_queue *run_queue_t; 46 typedef struct pset_node *pset_node_t; 47 #define PSET_NODE_NULL ((pset_node_t) 0) 48 49 /* Defines from osfmk/arm/machine_routines.h */ 50 typedef uint64_t sched_perfcontrol_preferred_cluster_options_t; 51 typedef enum { 52 CLUSTER_TYPE_SMP = 0, 53 CLUSTER_TYPE_E = 1, 54 CLUSTER_TYPE_P = 2, 55 MAX_CPU_TYPES, 56 } cluster_type_t; 57 #include <arm/cpu_topology.h> 58 #define MAX_AMP_CLUSTER_TYPES (MAX_PSET_TYPES - 1) 59 extern unsigned int ml_get_die_id(unsigned int cluster_id); 60 extern uint64_t ml_cpu_signal_deferred_get_timer(void); 61 extern unsigned int ml_get_cpu_number_type(cluster_type_t cluster_type, bool logical, bool available); 62 extern unsigned int ml_get_cluster_number_type(cluster_type_t cluster_type); 63 64 extern struct ml_topology_info mock_topology_info; 65 #define ml_get_topology_info() (&mock_topology_info) 66 67 /* Defines from osfmk/kern/thread.h */ 68 #define assert_thread_magic(thread) do { (void)(thread); } while (0) 69 70 /* Defines from osfmk/kern/startup.h */ 71 #define TUNABLE(type_t, var, boot_arg, default_value) \ 72 type_t var = default_value 73 74 /* Defines from bsd/sys/kdebug_kernel.h */ 75 #define __kdebug_only __unused 76 77 extern processor_t master_processor; 78 79 #define SECURITY_READ_ONLY_LATE(typ) typ 80 81 #endif /* _MISC_NEEDED_DEFINES_H_ */ 82