-void microtime(struct timeval *tv);
-void microuptime(struct timeval *tv);
-#define getmicrotime(a) microtime(a)
-#define getmicrouptime(a) microuptime(a)
-void nanotime(struct timespec *ts);
-void nanouptime(struct timespec *ts);
-#define getnanotime(a) nanotime(a)
-#define getnanouptime(a) nanouptime(a)
-void timevaladd(struct timeval *t1, struct timeval *t2);
-void timevalsub(struct timeval *t1, struct timeval *t2);
-void timevalfix(struct timeval *t1);
-#ifdef BSD_KERNEL_PRIVATE
-time_t boottime_sec(void);
-void inittodr(time_t base);
-int itimerfix(struct timeval *tv);
-int itimerdecr(struct itimerval *itp, int usec);
+void microtime(struct timeval *tv);
+void microtime_with_abstime(struct timeval *tv, uint64_t *abstime);
+void microuptime(struct timeval *tv);
+#define getmicrotime(a) microtime(a)
+#define getmicrouptime(a) microuptime(a)
+void nanotime(struct timespec *ts);
+void nanouptime(struct timespec *ts);
+#define getnanotime(a) nanotime(a)
+#define getnanouptime(a) nanouptime(a)
+void timevaladd(struct timeval *t1, struct timeval *t2);
+void timevalsub(struct timeval *t1, struct timeval *t2);
+void timevalfix(struct timeval *t1);
+#ifdef BSD_KERNEL_PRIVATE
+time_t boottime_sec(void);
+void boottime_timeval(struct timeval *tv);
+void inittodr(time_t base);
+int ratecheck(struct timeval *lasttime, const struct timeval *mininterval);
+int ppsratecheck(struct timeval *lasttime, int *curpps, int maxpps);