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()2010247Speterhertz() 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