Re: [PATCH] Introduce boot based time

john stultz
2007-05-10T20:03:16Z

On Thu, 2007-05-10 at 21:48 +0200, Ingo Oeser wrote:
> Hi Tomas,
>
> On Thursday 10 May 2007, Tomas Janousek wrote:
> > diff --git a/include/linux/time.h b/include/linux/time.h
> > index 8997b61..06f3eaf 100644
> > --- a/include/linux/time.h
> > +++ b/include/linux/time.h
> > @@ -116,6 +116,8 @@ extern int do_setitimer(int which, struct itimerval *value,
> > extern unsigned int alarm_setitimer(unsigned int seconds);
> > extern int do_getitimer(int which, struct itimerval *value);
> > extern void getnstimeofday(struct timespec *tv);
> > +extern void getboottime(struct timespec *ts);
> > +extern void monotonic_to_bootbased(struct timespec *ts);
> >
> > extern struct timespec timespec_trunc(struct timespec t, unsigned gran);
> > extern int timekeeping_is_continuous(void);
> > diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
> > index f9217bf..dd9647a 100644
> > --- a/kernel/time/timekeeping.c
> > +++ b/kernel/time/timekeeping.c
> > @@ -36,9 +36,17 @@ EXPORT_SYMBOL(xtime_lock);
> > * at zero at system boot time, so wall_to_monotonic will be negative,
> > * however, we will ALWAYS keep the tv_nsec part positive so we can use
> > * the usual normalization.
> > + *
> > + * wall_to_monotonic is moved after resume from suspend for the monotonic
> > + * time not to jump. We need to add total_sleep_time to wall_to_monotonic
> > + * to get the real boot based time offset.
> > + *
> > + * - wall_to_monotonic is no longer the boot time, getboottime must be
> > + * used instead.
> > */
> > struct timespec xtime __attribute__ ((aligned (16)));
> > struct timespec wall_to_monotonic __attribute__ ((aligned (16)));
> > +static unsigned long total_sleep_time;
>
> Could you make that a ktime_t (or struct ktime)?
> There are machines, which sleep more than they are awake.
> Just imagine a surveillance camera triggered by door entrance.
>
> Yes, these things might run Linux (e.g. on "cris" architecture).
>
> Or your VCR.
> Yes, these devices might sleep more than they are awake,
> if you are not a TV junkie :-)

I'm not sure I follow this.

total_sleep_time stores seconds. So on 32bit systems that's 130some
years, so it shouldn't be an issue.

Is the reason you want it to be a ktime is because you want a way to
keep sub-second sleep granularity?

thanks
-john