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