+ /* Add sample to the exponentially-smoothed rate */
+ c->clocks_per_second = c->clocks_per_second * c->damping_constant +
+ (1.0 - c->damping_constant) * new_clocks_per_second;
+ c->seconds_per_clock = 1.0 / c->clocks_per_second;
+
+ /*
+ * Recalculate total_cpu_time based on the kernel timebase, and
+ * the calculated clock rate
+ */
+ c->total_cpu_time =
+ (now_reference - c->init_reference_time) * c->clocks_per_second;
+}
+
+
+u8 *
+format_clib_time (u8 * s, va_list * args)
+{
+ clib_time_t *c = va_arg (*args, clib_time_t *);
+ int verbose = va_arg (*args, int);
+ f64 now, reftime, delta_reftime_in_seconds, error;
+
+ /* Compute vpp elapsed time from the CPU clock */
+ reftime = unix_time_now ();
+ now = clib_time_now (c);
+
+ s = format (s, "Time now %.6f", now);
+ if (verbose == 0)
+ return s;
+
+ /* And also from the kernel */
+ delta_reftime_in_seconds = reftime - c->init_reference_time;
+
+ error = now - delta_reftime_in_seconds;