xref: /csrg-svn/usr.bin/gprof/hertz.c (revision 62017)
121961Sdist /*
2*62017Sbostic  * Copyright (c) 1983, 1993
3*62017Sbostic  *	The Regents of the University of California.  All rights reserved.
434199Sbostic  *
542683Sbostic  * %sccs.include.redist.c%
621961Sdist  */
721961Sdist 
810247Speter #ifndef lint
9*62017Sbostic static char sccsid[] = "@(#)hertz.c	8.1 (Berkeley) 06/06/93";
1034199Sbostic #endif /* not lint */
1110247Speter 
1218500Smckusick #include <sys/time.h>
1318500Smckusick 
1410247Speter     /*
1510247Speter      *	discover the tick frequency of the machine
1615909Speter      *	if something goes wrong, we return 0, an impossible hertz.
1710247Speter      */
1815909Speter #define	HZ_WRONG	0
1915906Speter 
hertz()2010247Speter hertz()
2110247Speter {
2218500Smckusick 	struct itimerval tim;
2310247Speter 
2418500Smckusick 	tim.it_interval.tv_sec = 0;
2518500Smckusick 	tim.it_interval.tv_usec = 1;
2618500Smckusick 	tim.it_value.tv_sec = 0;
2718500Smckusick 	tim.it_value.tv_usec = 0;
2818500Smckusick 	setitimer(ITIMER_REAL, &tim, 0);
2918500Smckusick 	setitimer(ITIMER_REAL, 0, &tim);
3018500Smckusick 	if (tim.it_interval.tv_usec < 2)
3118500Smckusick 		return(HZ_WRONG);
3218500Smckusick 	return (1000000 / tim.it_interval.tv_usec);
3310247Speter }
34