xref: /csrg-svn/usr.bin/gprof/hertz.c (revision 18500)
110247Speter #ifndef lint
2*18500Smckusick     static	char *sccsid = "@(#)hertz.c	1.4 (Berkeley) 03/24/85";
310247Speter #endif lint
410247Speter 
5*18500Smckusick #include <sys/time.h>
6*18500Smckusick 
710247Speter     /*
810247Speter      *	discover the tick frequency of the machine
915909Speter      *	if something goes wrong, we return 0, an impossible hertz.
1010247Speter      */
1115909Speter #define	HZ_WRONG	0
1215906Speter 
1310247Speter hertz()
1410247Speter {
15*18500Smckusick 	struct itimerval tim;
1610247Speter 
17*18500Smckusick 	tim.it_interval.tv_sec = 0;
18*18500Smckusick 	tim.it_interval.tv_usec = 1;
19*18500Smckusick 	tim.it_value.tv_sec = 0;
20*18500Smckusick 	tim.it_value.tv_usec = 0;
21*18500Smckusick 	setitimer(ITIMER_REAL, &tim, 0);
22*18500Smckusick 	setitimer(ITIMER_REAL, 0, &tim);
23*18500Smckusick 	if (tim.it_interval.tv_usec < 2)
24*18500Smckusick 		return(HZ_WRONG);
25*18500Smckusick 	return (1000000 / tim.it_interval.tv_usec);
2610247Speter }
27