+#if defined(__i386__) || defined(__x86_64__)
+ uint64_t ctime = mach_absolute_time();
+ if (__improbable(deadline < ctime)) {
+ uint64_t delta = (ctime - deadline);
+
+ past_deadline_timers++;
+ past_deadline_deltas += delta;
+ if (delta > past_deadline_longest)
+ past_deadline_longest = deadline;
+ if (delta < past_deadline_shortest)
+ past_deadline_shortest = delta;
+
+ deadline = ctime + past_deadline_timer_adjustment;
+ call->soft_deadline = deadline;
+ }
+#endif
+ call->ttd = call->soft_deadline - ctime;
+
+#if CONFIG_DTRACE
+ DTRACE_TMR6(callout__create, timer_call_func_t, CE(call)->func,
+ timer_call_param_t, CE(call)->param0, uint32_t, call->flags,
+ (deadline - call->soft_deadline),
+ (call->ttd >> 32), (unsigned) (call->ttd & 0xFFFFFFFF));
+#endif
+