home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / gnu / djgpp / src / binutils.2 / gprof / hertz.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-06-25  |  1.7 KB  |  54 lines

  1. /*
  2.  * Copyright (c) 1983 Regents of the University of California.
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms are permitted
  6.  * provided that: (1) source distributions retain this entire copyright
  7.  * notice and comment, and (2) distributions including binaries display
  8.  * the following acknowledgement:  ``This product includes software
  9.  * developed by the University of California, Berkeley and its contributors''
  10.  * in the documentation or other materials provided with the distribution
  11.  * and in all advertising materials mentioning features or use of this
  12.  * software. Neither the name of the University nor the names of its
  13.  * contributors may be used to endorse or promote products derived
  14.  * from this software without specific prior written permission.
  15.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  16.  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  17.  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  18.  */
  19.  
  20. #ifndef lint
  21. static char sccsid[] = "@(#)hertz.c    5.4 (Berkeley) 6/1/90";
  22. #endif /* not lint */
  23.  
  24. #include <sys/time.h>
  25.  
  26.     /*
  27.      *    discover the tick frequency of the machine
  28.      *    if something goes wrong, we return 0, an impossible hertz.
  29.      */
  30. #define    HZ_WRONG    0
  31.  
  32. #ifdef __MSDOS__
  33. #define HERTZ 18
  34. #endif
  35.  
  36. hertz()
  37. {
  38. #ifdef HERTZ
  39.     return HERTZ;
  40. #else
  41.     struct itimerval tim;
  42.  
  43.     tim.it_interval.tv_sec = 0;
  44.     tim.it_interval.tv_usec = 1;
  45.     tim.it_value.tv_sec = 0;
  46.     tim.it_value.tv_usec = 0;
  47.     setitimer(ITIMER_REAL, &tim, 0);
  48.     setitimer(ITIMER_REAL, 0, &tim);
  49.     if (tim.it_interval.tv_usec < 2)
  50.         return(HZ_WRONG);
  51.     return (1000000 / tim.it_interval.tv_usec);
  52. #endif
  53. }
  54.