Re: [PATCH 1/6] trace: add tracepoints to timekeeping code - xtimechanges

From: David Ahern
Date: Fri Jun 17 2011 - 10:13:28 EST




On 06/17/2011 07:23 AM, Frederic Weisbecker wrote:
> On Tue, Jun 07, 2011 at 05:55:03PM -0600, David Ahern wrote:
>> Trace points in timekeeping.c where xtime is modified by a user
>> or ntp.
>>
>> Signed-off-by: David Ahern <dsahern@xxxxxxxxx>
>> ---
>> 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.h
>>
>> diff --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.

>
> 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.

David
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/