]> 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 24c9aeca30572190f9643374b469daa3156ecaed..d800625f75cc41946e4f9b1d00c5d7a7e3b07fee 100644 (file)
@@ -67,7 +67,6 @@ void  ml_cpu_set_ldt(int);
 /* Initialize Interrupts */
 void    ml_init_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_init_delay_spin_threshold(void);
+
+boolean_t ml_delay_should_spin(uint64_t interval);
 
 vm_offset_t
 ml_static_ptovirt(
@@ -128,10 +130,13 @@ vm_offset_t ml_io_map(
 void   ml_get_bouncepool_info(
                               vm_offset_t *phys_addr,
                               vm_size_t   *size);
-
-
+/* Indicates if spinlock, IPI and other timeouts should be suspended */
+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);
+
 #endif /* XNU_KERNEL_PRIVATE */
 
 #ifdef KERNEL_PRIVATE
@@ -230,14 +235,14 @@ void ml_phys_write_double_64(
 
 /* 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;
@@ -268,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 boolean_t ml_get_interrupt_prewake_applicable(void);
 
 
 extern uint64_t tmrCvt(uint64_t time, uint64_t conversion);
@@ -299,4 +305,14 @@ void ml_get_csw_threads(thread_t * /*old*/, thread_t * /*new*/);
 
 __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_ */