+/* 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 );