+
+void
+nanouptime(
+ struct timespec *tsp)
+{
+ clock_get_system_nanotime((uint32_t *)&tsp->tv_sec, (uint32_t *)&tsp->tv_nsec);
+}
+
+uint64_t
+tvtoabstime(
+ struct timeval *tvp)
+{
+ uint64_t result, usresult;
+
+ clock_interval_to_absolutetime_interval(
+ tvp->tv_sec, NSEC_PER_SEC, &result);
+ clock_interval_to_absolutetime_interval(
+ tvp->tv_usec, NSEC_PER_USEC, &usresult);
+
+ return (result + usresult);
+}
+void
+time_zone_slock_init(void)
+{
+ /* allocate lock group attribute and group */
+ tz_slock_grp_attr = lck_grp_attr_alloc_init();
+ lck_grp_attr_setstat(tz_slock_grp_attr);
+
+ tz_slock_grp = lck_grp_alloc_init("tzlock", tz_slock_grp_attr);
+
+ /* Allocate lock attribute */
+ tz_slock_attr = lck_attr_alloc_init();
+ //lck_attr_setdebug(tz_slock_attr);
+
+ /* Allocate the spin lock */
+ tz_slock = lck_spin_alloc_init(tz_slock_grp, tz_slock_attr);
+}
+