121961Sdist /* 221961Sdist * Copyright (c) 1983 Regents of the University of California. 334199Sbostic * All rights reserved. 434199Sbostic * 5*42683Sbostic * %sccs.include.redist.c% 621961Sdist */ 721961Sdist 810247Speter #ifndef lint 9*42683Sbostic static char sccsid[] = "@(#)hertz.c 5.4 (Berkeley) 06/01/90"; 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 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