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