]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/i386/machine_routines.h
xnu-2050.24.15.tar.gz
[apple/xnu.git] / osfmk / i386 / machine_routines.h
index e222fb18d992a795f8045a3900fb90de75f2fbc0..d800625f75cc41946e4f9b1d00c5d7a7e3b07fee 100644 (file)
@@ -67,7 +67,6 @@ void  ml_cpu_set_ldt(int);
 /* Initialize Interrupts */
 void    ml_init_interrupt(void);
 
 /* Initialize Interrupts */
 void    ml_init_interrupt(void);
 
-
 /* Generate a fake interrupt */
 void ml_cause_interrupt(void);
 
 /* Generate a fake interrupt */
 void ml_cause_interrupt(void);
 
@@ -81,6 +80,9 @@ void ml_install_interrupt_handler(
 
 void ml_get_timebase(unsigned long long *timestamp);
 void ml_init_lock_timeout(void); 
 
 void ml_get_timebase(unsigned long long *timestamp);
 void ml_init_lock_timeout(void); 
+void ml_init_delay_spin_threshold(void);
+
+boolean_t ml_delay_should_spin(uint64_t interval);
 
 vm_offset_t
 ml_static_ptovirt(
 
 vm_offset_t
 ml_static_ptovirt(
@@ -132,11 +134,9 @@ void       ml_get_bouncepool_info(
 boolean_t machine_timeout_suspended(void);
 #endif /* PEXPERT_KERNEL_PRIVATE || MACH_KERNEL_PRIVATE  */
 
 boolean_t machine_timeout_suspended(void);
 #endif /* PEXPERT_KERNEL_PRIVATE || MACH_KERNEL_PRIVATE  */
 
+/* Warm up a CPU to receive an interrupt */
+kern_return_t ml_interrupt_prewarm(uint64_t deadline);
 
 
-void interrupt_latency_tracker_setup(void);
-void interrupt_reset_latency_stats(void);
-void interrupt_populate_latency_stats(char *, unsigned);
-boolean_t ml_fpu_avx_enabled(void);
 #endif /* XNU_KERNEL_PRIVATE */
 
 #ifdef KERNEL_PRIVATE
 #endif /* XNU_KERNEL_PRIVATE */
 
 #ifdef KERNEL_PRIVATE
@@ -235,14 +235,14 @@ void ml_phys_write_double_64(
 
 /* Struct for ml_cpu_get_info */
 struct ml_cpu_info {
 
 /* Struct for ml_cpu_get_info */
 struct ml_cpu_info {
-       unsigned long           vector_unit;
-       unsigned long           cache_line_size;
-       unsigned long           l1_icache_size;
-       unsigned long           l1_dcache_size;
-       unsigned long           l2_settings;
-       unsigned long           l2_cache_size;
-       unsigned long           l3_settings;
-       unsigned long           l3_cache_size;
+       uint32_t        vector_unit;
+       uint32_t        cache_line_size;
+       uint32_t        l1_icache_size;
+       uint32_t        l1_dcache_size;
+       uint32_t        l2_settings;
+       uint32_t        l2_cache_size;
+       uint32_t        l3_settings;
+       uint32_t        l3_cache_size;
 };
 
 typedef struct ml_cpu_info ml_cpu_info_t;
 };
 
 typedef struct ml_cpu_info ml_cpu_info_t;
@@ -273,6 +273,7 @@ extern void ml_set_maxbusdelay(uint32_t mdelay);
 extern uint32_t ml_get_maxbusdelay(void);
 extern void ml_set_maxintdelay(uint64_t mdelay);
 extern uint64_t ml_get_maxintdelay(void);
 extern uint32_t ml_get_maxbusdelay(void);
 extern void ml_set_maxintdelay(uint64_t mdelay);
 extern uint64_t ml_get_maxintdelay(void);
+extern boolean_t ml_get_interrupt_prewake_applicable(void);
 
 
 extern uint64_t tmrCvt(uint64_t time, uint64_t conversion);
 
 
 extern uint64_t tmrCvt(uint64_t time, uint64_t conversion);
@@ -304,6 +305,14 @@ void ml_get_csw_threads(thread_t * /*old*/, thread_t * /*new*/);
 
 __END_DECLS
 
 
 __END_DECLS
 
+#ifdef XNU_KERNEL_PRIVATE
 
 
+boolean_t ml_fpu_avx_enabled(void);
+
+void interrupt_latency_tracker_setup(void);
+void interrupt_reset_latency_stats(void);
+void interrupt_populate_latency_stats(char *, unsigned);
+void ml_get_power_state(boolean_t *, boolean_t *);
 
 
+#endif /* XNU_KERNEL_PRIVATE */
 #endif /* _I386_MACHINE_ROUTINES_H_ */
 #endif /* _I386_MACHINE_ROUTINES_H_ */