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