at v2.6.12 65 lines 1.8 kB view raw
1#ifndef _ASMi386_TIMER_H 2#define _ASMi386_TIMER_H 3#include <linux/init.h> 4 5/** 6 * struct timer_ops - used to define a timer source 7 * 8 * @name: name of the timer. 9 * @init: Probes and initializes the timer. Takes clock= override 10 * string as an argument. Returns 0 on success, anything else 11 * on failure. 12 * @mark_offset: called by the timer interrupt. 13 * @get_offset: called by gettimeofday(). Returns the number of microseconds 14 * since the last timer interupt. 15 * @monotonic_clock: returns the number of nanoseconds since the init of the 16 * timer. 17 * @delay: delays this many clock cycles. 18 */ 19struct timer_opts { 20 char* name; 21 void (*mark_offset)(void); 22 unsigned long (*get_offset)(void); 23 unsigned long long (*monotonic_clock)(void); 24 void (*delay)(unsigned long); 25}; 26 27struct init_timer_opts { 28 int (*init)(char *override); 29 struct timer_opts *opts; 30}; 31 32#define TICK_SIZE (tick_nsec / 1000) 33 34extern struct timer_opts* __init select_timer(void); 35extern void clock_fallback(void); 36void setup_pit_timer(void); 37 38/* Modifiers for buggy PIT handling */ 39 40extern int pit_latch_buggy; 41 42extern struct timer_opts *cur_timer; 43extern int timer_ack; 44 45/* list of externed timers */ 46extern struct timer_opts timer_none; 47extern struct timer_opts timer_pit; 48extern struct init_timer_opts timer_pit_init; 49extern struct init_timer_opts timer_tsc_init; 50#ifdef CONFIG_X86_CYCLONE_TIMER 51extern struct init_timer_opts timer_cyclone_init; 52#endif 53 54extern unsigned long calibrate_tsc(void); 55extern void init_cpu_khz(void); 56extern int recalibrate_cpu_khz(void); 57#ifdef CONFIG_HPET_TIMER 58extern struct init_timer_opts timer_hpet_init; 59extern unsigned long calibrate_tsc_hpet(unsigned long *tsc_hpet_quotient_ptr); 60#endif 61 62#ifdef CONFIG_X86_PM_TIMER 63extern struct init_timer_opts timer_pmtmr_init; 64#endif 65#endif