+/* Warning: following structure must match the layout of the commpage. */
+/* This is the data starting at _COMM_PAGE_TIME_DATA_START, ie for nanotime() and gettimeofday() */
+
+typedef volatile struct commpage_time_data {
+ uint64_t nt_tsc_base; // _COMM_PAGE_NT_TSC_BASE
+ uint32_t nt_scale; // _COMM_PAGE_NT_SCALE
+ uint32_t nt_shift; // _COMM_PAGE_NT_SHIFT
+ uint64_t nt_ns_base; // _COMM_PAGE_NT_NS_BASE
+ uint32_t nt_generation; // _COMM_PAGE_NT_GENERATION
+ uint32_t gtod_generation; // _COMM_PAGE_GTOD_GENERATION
+ uint64_t gtod_ns_base; // _COMM_PAGE_GTOD_NS_BASE
+ uint64_t gtod_sec_base; // _COMM_PAGE_GTOD_SEC_BASE
+} commpage_time_data;
+
+
+extern char *commPagePtr32; // virt address of 32-bit commpage in kernel map
+extern char *commPagePtr64; // ...and of 64-bit commpage
+
+extern void commpage_set_timestamp(uint64_t abstime, uint64_t secs);
+extern void commpage_disable_timestamp( void );
+extern void commpage_set_nanotime(uint64_t tsc_base, uint64_t ns_base, uint32_t scale, uint32_t shift);
+extern void commpage_set_memory_pressure(unsigned int pressure);
+extern void commpage_set_spin_count(unsigned int count);
+extern void commpage_sched_gen_inc(void);
+extern void commpage_update_active_cpus(void);
+extern void commpage_update_mach_approximate_time(uint64_t abstime);
+extern void commpage_update_mach_continuous_time(uint64_t sleeptime);
+extern void commpage_update_boottime(uint64_t boottime_usec);
+extern void commpage_update_kdebug_state(void);
+extern void commpage_update_atm_diagnostic_config(uint32_t);