| 1 | /*- |
| 2 | * Kernel interface to machine-dependent clock driver. |
| 3 | * Garrett Wollman, September 1994. |
| 4 | * This file is in the public domain. |
| 5 | */ |
| 6 | |
| 7 | #ifndef _MACHINE_CLOCK_H_ |
| 8 | #define	_MACHINE_CLOCK_H_ |
| 9 | |
| 10 | #ifdef _KERNEL |
| 11 | /* |
| 12 | * i386 to clock driver interface. |
| 13 | * XXX large parts of the driver and its interface are misplaced. |
| 14 | */ |
| 15 | extern int	clkintr_pending; |
| 16 | extern u_int	i8254_freq; |
| 17 | extern int	i8254_max_count; |
| 18 | extern uint64_t	tsc_freq; |
| 19 | extern int	tsc_is_invariant; |
| 20 | extern int	tsc_perf_stat; |
| 21 | #ifdef SMP |
| 22 | extern int	smp_tsc; |
| 23 | #endif |
| 24 | |
| 25 | void	i8254_init(void); |
| 26 | void	i8254_delay(int); |
| 27 | void	clock_init(void); |
| 28 | void	lapic_calibrate(void); |
| 29 | void	tsc_init(void); |
| 30 | void	tsc_calibrate(void); |
| 31 | |
| 32 | /* |
| 33 | * Driver to clock driver interface. |
| 34 | */ |
| 35 | |
| 36 | void	startrtclock(void); |
| 37 | void	start_TSC(void); |
| 38 | void	resume_TSC(void); |
| 39 | |
| 40 | #define	HAS_TIMER_SPKR 1 |
| 41 | int	timer_spkr_acquire(void); |
| 42 | int	timer_spkr_release(void); |
| 43 | void	timer_spkr_setfreq(int freq); |
| 44 | |
| 45 | #endif /* _KERNEL */ |
| 46 | |
| 47 | #endif /* !_MACHINE_CLOCK_H_ */ |