xref: /csrg-svn/usr.bin/gprof/hertz.c (revision 21961)
1*21961Sdist /*
2*21961Sdist  * Copyright (c) 1983 Regents of the University of California.
3*21961Sdist  * All rights reserved.  The Berkeley software License Agreement
4*21961Sdist  * specifies the terms and conditions for redistribution.
5*21961Sdist  */
6*21961Sdist 
710247Speter #ifndef lint
8*21961Sdist static char sccsid[] = "@(#)hertz.c	5.1 (Berkeley) 06/04/85";
9*21961Sdist #endif not lint
1010247Speter 
1118500Smckusick #include <sys/time.h>
1218500Smckusick 
1310247Speter     /*
1410247Speter      *	discover the tick frequency of the machine
1515909Speter      *	if something goes wrong, we return 0, an impossible hertz.
1610247Speter      */
1715909Speter #define	HZ_WRONG	0
1815906Speter 
1910247Speter hertz()
2010247Speter {
2118500Smckusick 	struct itimerval tim;
2210247Speter 
2318500Smckusick 	tim.it_interval.tv_sec = 0;
2418500Smckusick 	tim.it_interval.tv_usec = 1;
2518500Smckusick 	tim.it_value.tv_sec = 0;
2618500Smckusick 	tim.it_value.tv_usec = 0;
2718500Smckusick 	setitimer(ITIMER_REAL, &tim, 0);
2818500Smckusick 	setitimer(ITIMER_REAL, 0, &tim);
2918500Smckusick 	if (tim.it_interval.tv_usec < 2)
3018500Smckusick 		return(HZ_WRONG);
3118500Smckusick 	return (1000000 / tim.it_interval.tv_usec);
3210247Speter }
33