20000-05-19 H.J. Lu (hjl@gnu.org)
[binutils-gdb.git] / gprof / hertz.c
index 979ad3748fb5df3802dde32a29aa94acd6f1238e..75314acc0c3c0d76c70a21118f743ad74adc411b 100644 (file)
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  */
-#include <sys/time.h>
 #include "hertz.h"
 
 
 #ifdef __MSDOS__
-# define HERTZ 18
+#define HERTZ 18
 #endif
 
 int
-hertz()
+hertz ()
 {
 #ifdef HERTZ
-    return HERTZ;
-#else
-    struct itimerval tim;
+  return HERTZ;
+#else /* ! defined (HERTZ) */
+#ifdef HAVE_SETITIMER
+  struct itimerval tim;
 
-    tim.it_interval.tv_sec = 0;
-    tim.it_interval.tv_usec = 1;
-    tim.it_value.tv_sec = 0;
-    tim.it_value.tv_usec = 0;
-    setitimer(ITIMER_REAL, &tim, 0);
-    setitimer(ITIMER_REAL, 0, &tim);
-    if (tim.it_interval.tv_usec < 2) {
-       return HZ_WRONG;
-    } /* if */
-    return 1000000 / tim.it_interval.tv_usec;
-#endif
-} /* hertz */
+  tim.it_interval.tv_sec = 0;
+  tim.it_interval.tv_usec = 1;
+  tim.it_value.tv_sec = 0;
+  tim.it_value.tv_usec = 0;
+  setitimer (ITIMER_REAL, &tim, 0);
+  setitimer (ITIMER_REAL, 0, &tim);
+  if (tim.it_interval.tv_usec < 2)
+    {
+      return HZ_WRONG;
+    }
+  return 1000000 / tim.it_interval.tv_usec;
+#else /* ! defined (HAVE_SETITIMER) */
+#if defined (HAVE_SYSCONF) && defined (_SC_CLK_TCK)
+  return sysconf (_SC_CLK_TCK);
+#else /* ! defined (HAVE_SYSCONF) || ! defined (_SC_CLK_TCK) */
+  return HZ_WRONG;
+#endif /* ! defined (HAVE_SYSCONF) || ! defined (_SC_CLK_TCK) */
+#endif /* ! defined (HAVE_SETITIMER) */
+#endif /* ! defined (HERTZ) */
+}