lkml.org 
[lkml]   [2011]   [Aug]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
Subjectsome confusion in timekeeping
Hello,

I try to understand the code in kernel/time/timekeeping.c, but it's very
confusing. The most confusing part is shift. I don't understand why we need
that? I notice that (clocksource.mult >> clocksource.shift) is the number of
nanoseconds for each cycle, but I don't see a point why shift should be used.
For example, the code below makes no sense to me. If clock->mult is the number
of nanoseconds for a cycle, then we don't need to shift `tmp'.
tmp = NTP_INTERVAL_LENGTH;
tmp <<= clock->shift;
ntpinterval = tmp;
tmp += clock->mult/2;
do_div(tmp, clock->mult);

clocksource_jiffies uses 8 as the shift value, but I don't know why it is
chosen. clocks_calc_mult_shift() is used to calculate shift and mult, but I
don't understand how the algorithm works there. It seems there is very few
documents about timekeeping.c

Can anyone help me understand the code or point me to some documents?

Thanks a lot,
Da


\
 
 \ /
  Last update: 2011-08-17 08:17    [W:0.067 / U:0.524 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site