Add support for backtracing through signal handlers on Linux/ARM. Also,
[deliverable/binutils-gdb.git] / gprof / hertz.c
index 1c2927f673ef2dfa9b2ebb3c9c892f4ac350d78e..a7fc14ed7f8cc8d8b3e5691eea4b4555ee9fd24b 100644 (file)
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  */
+#include "hertz.h"
 
-#ifndef lint
-static char sccsid[] = "@(#)hertz.c    5.4 (Berkeley) 6/1/90";
-#endif /* not lint */
 
-#include <sys/time.h>
-
-    /*
-     * discover the tick frequency of the machine
-     * if something goes wrong, we return 0, an impossible hertz.
-     */
-#define        HZ_WRONG        0
-
-hertz()
+int
+hertz ()
 {
-       struct itimerval tim;
+#ifdef HERTZ
+  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);
-       return (1000000 / tim.it_interval.tv_usec);
+  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 1000000 / tim.it_interval.tv_usec;
+    }
+#endif /* ! defined (HAVE_SETITIMER) */
+#if defined (HAVE_SYSCONF) && defined (_SC_CLK_TCK)
+  return sysconf (_SC_CLK_TCK);
+#else /* ! defined (HAVE_SYSCONF) || ! defined (_SC_CLK_TCK) */
+#ifdef __MSDOS__
+  return 18;
+#else  /* ! defined (__MSDOS__) */
+  return HZ_WRONG;
+#endif /* ! defined (__MSDOS__) */
+#endif /* ! defined (HAVE_SYSCONF) || ! defined (_SC_CLK_TCK) */
+#endif /* ! defined (HERTZ) */
 }
This page took 0.023717 seconds and 4 git commands to generate.