Re: [PATCH 1/6] trace: add tracepoints to timekeeping code - xtime changes
From: David Ahern <hidden>
Date: 2011-08-15 04:04:08
Also in:
lkml
Thomas/Peter: On 06/17/2011 08:13 AM, David Ahern wrote:
On 06/17/2011 07:23 AM, Frederic Weisbecker wrote:quoted
On Tue, Jun 07, 2011 at 05:55:03PM -0600, David Ahern wrote:quoted
Trace points in timekeeping.c where xtime is modified by a user or ntp. Signed-off-by: David Ahern <redacted> --- include/trace/events/timekeeping.h | 43 ++++++++++++++++++++++++++++++++++++ kernel/time/timekeeping.c | 8 ++++++ 2 files changed, 51 insertions(+), 0 deletions(-) create mode 100644 include/trace/events/timekeeping.hdiff --git a/include/trace/events/timekeeping.h b/include/trace/events/timekeeping.h new file mode 100644 index 0000000..3d5d083 --- /dev/null +++ b/include/trace/events/timekeeping.h@@ -0,0 +1,43 @@ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM timekeeping + +#if !defined(_TRACE_TIMEKEEP_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_TIMEKEEP_H + +#include <linux/tracepoint.h> +#include <linux/time.h> + +DECLARE_EVENT_CLASS(tod_template, + + TP_PROTO(const struct timespec *tv), + + TP_ARGS(tv), + + TP_STRUCT__entry( + __field( __kernel_time_t, tv_sec) + __field( long, tv_nsec) + ), + + TP_fast_assign( + __entry->tv_sec = tv->tv_sec; + __entry->tv_nsec = tv->tv_nsec; + ), + + TP_printk("tv_sec=%ld tv_nsec=%ld", __entry->tv_sec, __entry->tv_nsec) +); + +DEFINE_EVENT(tod_template, settimeofday, + TP_PROTO(const struct timespec *tv), + TP_ARGS(tv)); + +DEFINE_EVENT(tod_template, timekeeping_inject_offset, + TP_PROTO(const struct timespec *tv), + TP_ARGS(tv)); + +DEFINE_EVENT(tod_template, timekeeping_inject_sleeptime, + TP_PROTO(const struct timespec *tv), + TP_ARGS(tv));Does the fact it's any of the three way of updating xtime make any difference from the user point of view?This use case only cares that xtime is updated.quoted
If not can we rather factorize that in a single settimeofday tracepoint? Or update_time_of_day if we don't want to confuse the user with the syscall.Peter and Thomas expressed interest in timekeeping tracepoints. How the update happens might be wanted. If desired I can consolidate xtime = *tv into a single update function and put the trace point there.
Any comments on the proposed trace points in the timekeeping code? I am working on a new spin of the patches and would like to know if there are changes needed here too. Thanks, David