X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Flinux%2Ftimex.h;h=b54c288dd6b8324fcb2c092b3cc52bf18734c2f8;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=31ef4595b1fd87d40b12f9d886793531cf82daaa;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/include/linux/timex.h b/include/linux/timex.h index 31ef4595b..b54c288dd 100644 --- a/include/linux/timex.h +++ b/include/linux/timex.h @@ -55,33 +55,10 @@ #include #include +#include #include - -/* - * The following defines establish the engineering parameters of the PLL - * model. The HZ variable establishes the timer interrupt frequency, 100 Hz - * for the SunOS kernel, 256 Hz for the Ultrix kernel and 1024 Hz for the - * OSF/1 kernel. The SHIFT_HZ define expresses the same value as the - * nearest power of two in order to avoid hardware multiply operations. - */ -#if HZ >= 12 && HZ < 24 -# define SHIFT_HZ 4 -#elif HZ >= 24 && HZ < 48 -# define SHIFT_HZ 5 -#elif HZ >= 48 && HZ < 96 -# define SHIFT_HZ 6 -#elif HZ >= 96 && HZ < 192 -# define SHIFT_HZ 7 -#elif HZ >= 192 && HZ < 384 -# define SHIFT_HZ 8 -#elif HZ >= 384 && HZ < 768 -# define SHIFT_HZ 9 -#elif HZ >= 768 && HZ < 1536 -# define SHIFT_HZ 10 -#else -# error You lose. -#endif +#include /* * SHIFT_KG and SHIFT_KF establish the damping of the PLL and are chosen @@ -151,41 +128,6 @@ #define PPS_VALID 120 /* pps signal watchdog max (s) */ #define MAXGLITCH 30 /* pps signal glitch max (s) */ -/* - * Pick up the architecture specific timex specifications - */ -#include - -/* LATCH is used in the interval timer and ftape setup. */ -#define LATCH ((CLOCK_TICK_RATE + HZ/2) / HZ) /* For divider */ - -/* Suppose we want to devide two numbers NOM and DEN: NOM/DEN, the we can - * improve accuracy by shifting LSH bits, hence calculating: - * (NOM << LSH) / DEN - * This however means trouble for large NOM, because (NOM << LSH) may no - * longer fit in 32 bits. The following way of calculating this gives us - * some slack, under the following conditions: - * - (NOM / DEN) fits in (32 - LSH) bits. - * - (NOM % DEN) fits in (32 - LSH) bits. - */ -#define SH_DIV(NOM,DEN,LSH) ( ((NOM / DEN) << LSH) \ - + (((NOM % DEN) << LSH) + DEN / 2) / DEN) - -/* HZ is the requested value. ACTHZ is actual HZ ("<< 8" is for accuracy) */ -#define ACTHZ (SH_DIV (CLOCK_TICK_RATE, LATCH, 8)) - -/* TICK_NSEC is the time between ticks in nsec assuming real ACTHZ */ -#define TICK_NSEC (SH_DIV (1000000UL * 1000, ACTHZ, 8)) - -/* TICK_USEC is the time between ticks in usec assuming fake USER_HZ */ -#define TICK_USEC ((1000000UL + USER_HZ/2) / USER_HZ) - -/* TICK_USEC_TO_NSEC is the time between ticks in nsec assuming real ACTHZ and */ -/* a value TUSEC for TICK_USEC (can be set bij adjtimex) */ -#define TICK_USEC_TO_NSEC(TUSEC) (SH_DIV (TUSEC * USER_HZ * 1000, ACTHZ, 8)) - - -#include /* * syscall interface - used (mainly by NTP daemon) * to discipline kernel clock oscillator @@ -343,20 +285,18 @@ extern long pps_stbcnt; /* stability limit exceeded */ * for the compensation is that the timer routines are not as scalable anymore. */ -#define INTERPOLATOR_ADJUST 65536 -#define INTERPOLATOR_MAX_SKIP 10*INTERPOLATOR_ADJUST - struct time_interpolator { - unsigned short source; /* time source flags */ - unsigned char shift; /* increases accuracy of multiply by shifting. */ - /* Note that bits may be lost if shift is set too high */ - unsigned char jitter; /* if set compensate for fluctuations */ - unsigned nsec_per_cyc; /* set by register_time_interpolator() */ + u16 source; /* time source flags */ + u8 shift; /* increases accuracy of multiply by shifting. */ + /* Note that bits may be lost if shift is set too high */ + u8 jitter; /* if set compensate for fluctuations */ + u32 nsec_per_cyc; /* set by register_time_interpolator() */ void *addr; /* address of counter or function */ + u64 mask; /* mask the valid bits of the counter */ unsigned long offset; /* nsec offset at last update of interpolator */ - unsigned long last_counter; /* counter value in units of the counter at last update */ - unsigned long last_cycle; /* Last timer value if TIME_SOURCE_JITTER is set */ - unsigned long frequency; /* frequency in counts/second */ + u64 last_counter; /* counter value in units of the counter at last update */ + u64 last_cycle; /* Last timer value if TIME_SOURCE_JITTER is set */ + u64 frequency; /* frequency in counts/second */ long drift; /* drift in parts-per-million (or -1) */ unsigned long skips; /* skips forward */ unsigned long ns_skipped; /* nanoseconds skipped */ @@ -366,7 +306,6 @@ struct time_interpolator { extern void register_time_interpolator(struct time_interpolator *); extern void unregister_time_interpolator(struct time_interpolator *); extern void time_interpolator_reset(void); -extern unsigned long time_interpolator_resolution(void); extern unsigned long time_interpolator_get_offset(void); #else /* !CONFIG_TIME_INTERPOLATION */