Commit | Line | Data |
---|---|---|
1965aae3 PA |
1 | #ifndef _ASM_X86_TIMER_H |
2 | #define _ASM_X86_TIMER_H | |
c3c433e4 | 3 | #include <linux/pm.h> |
53d517cd | 4 | #include <linux/percpu.h> |
8e6dafd6 | 5 | #include <linux/interrupt.h> |
5dd12c21 | 6 | #include <linux/math64.h> |
1da177e4 | 7 | |
1da177e4 | 8 | #define TICK_SIZE (tick_nsec / 1000) |
6cb9a835 | 9 | |
6cb9a835 | 10 | unsigned long long native_sched_clock(void); |
64fcbac1 | 11 | extern int recalibrate_cpu_khz(void); |
6cb9a835 | 12 | |
cc038491 | 13 | extern int no_timer_check; |
1da177e4 | 14 | |
20d1c86a PZ |
15 | /* |
16 | * We use the full linear equation: f(x) = a + b*x, in order to allow | |
17 | * a continuous function in the face of dynamic freq changes. | |
18 | * | |
19 | * Continuity means that when our frequency changes our slope (b); we want to | |
20 | * ensure that: f(t) == f'(t), which gives: a + b*t == a' + b'*t. | |
21 | * | |
22 | * Without an offset (a) the above would not be possible. | |
23 | * | |
24 | * See the comment near cycles_2_ns() for details on how we compute (b). | |
25 | */ | |
26 | struct cyc2ns_data { | |
27 | u32 cyc2ns_mul; | |
28 | u32 cyc2ns_shift; | |
29 | u64 cyc2ns_offset; | |
30 | u32 __count; | |
31 | /* u32 hole */ | |
32 | }; /* 24 bytes -- do not grow */ | |
33 | ||
34 | extern struct cyc2ns_data *cyc2ns_read_begin(void); | |
35 | extern void cyc2ns_read_end(struct cyc2ns_data *); | |
688340ea | 36 | |
1965aae3 | 37 | #endif /* _ASM_X86_TIMER_H */ |