The walltimestamp is required to be the time in nanoseconds since the epoch,
not the time in nanoseconds since boot or since dtrace invocation.
So we no longer need dtrace_mstate.dtms_walltimestamp, nor the flag used to
track its updating: but we *do* need a new way to get the time that is safe
for non-GPL use.
This fixes test/act/time.d (which is the only test that checks if walltimestamp
not only exists but returns the right value).
Orabug:
18376038
Signed-off-by: Kris Van Hees <kris.van.hees@oracle.com>
Signed-off-by: Nick Alcock <nick.alcock@oracle.com>
Acked-by: Jerry Snitselaar <jerry.snitselaar@oracle.com>
#include "cyclic.h"
#include "systrace.h"
+/*
+ * Return a high resolution timer value that is guaranteed to always increase.
+ */
+ktime_t dtrace_gethrtime(void)
+{
+ struct timespec ts;
+
+ getrawmonotonic(&ts);
+ return timespec_to_ktime(ts);
+}
+EXPORT_SYMBOL(dtrace_gethrtime);
+
+/*
+ * Return the current wall-clock time, in nanoseconds since the epoch.
+ */
+ktime_t dtrace_getwalltime(void)
+{
+ struct timespec ts;
+
+ getnstimeofday(&ts);
+ return timespec_to_ktime(ts);
+}
+EXPORT_SYMBOL(dtrace_getwalltime);
+
/*
* Very basic implementation of cyclics, merely enough to support dtrace.
*/