about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2004-12-22 20:10:10 +0000
committerUlrich Drepper <drepper@redhat.com>2004-12-22 20:10:10 +0000
commita334319f6530564d22e775935d9c91663623a1b4 (patch)
treeb5877475619e4c938e98757d518bb1e9cbead751 /sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c
parent0ecb606cb6cf65de1d9fc8a919bceb4be476c602 (diff)
downloadglibc-a334319f6530564d22e775935d9c91663623a1b4.tar.gz
glibc-a334319f6530564d22e775935d9c91663623a1b4.tar.xz
glibc-a334319f6530564d22e775935d9c91663623a1b4.zip
(CFLAGS-tst-align.c): Add -mpreferred-stack-boundary=4.
Diffstat (limited to 'sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c')
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c117
1 files changed, 0 insertions, 117 deletions
diff --git a/sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c b/sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c
deleted file mode 100644
index 6d2e766aa4..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/* Get frequency of the system processor.  powerpc/Linux version.
-   Copyright (C) 2000, 2001, 2005 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#include <ctype.h>
-#include <fcntl.h>
-#include <string.h>
-#include <unistd.h>
-#include <libc-internal.h>
-#include <sysdep.h>
-#include <bits/libc-vdso.h>
-
-hp_timing_t
-__get_clockfreq (void)
-{
-  /* We read the information from the /proc filesystem.  /proc/cpuinfo
-     contains at least one line like:
-     timebase        : 33333333
-     We search for this line and convert the number into an integer.  */
-  static hp_timing_t timebase_freq;
-  hp_timing_t result = 0L;
-
-  /* If this function was called before, we know the result.  */
-  if (timebase_freq != 0)
-    return timebase_freq;
-
-  /* If we can use the vDSO to obtain the timebase even better.  */
-#ifdef SHARED
-  INTERNAL_SYSCALL_DECL (err);
-  timebase_freq = INTERNAL_VSYSCALL_NO_SYSCALL_FALLBACK (get_tbfreq, err, 0);
-  if (INTERNAL_SYSCALL_ERROR_P (timebase_freq, err)
-      && INTERNAL_SYSCALL_ERRNO (timebase_freq, err) == ENOSYS)
-#endif
-    {
-      int fd = open ("/proc/cpuinfo", O_RDONLY);
-
-      if (__builtin_expect (fd != -1, 1))
-	{
-	  /* The timebase will be in the 1st 1024 bytes for systems with up
-	     to 8 processors.  If the first read returns less then 1024
-	     bytes read,  we have the whole cpuinfo and can start the scan.
-	     Otherwise we will have to read more to insure we have the
-	     timebase value in the scan.  */
-	  char buf[1024];
-	  ssize_t n;
-
-	  n = read (fd, buf, sizeof (buf));
-	  if (n == sizeof (buf))
-	    {
-	      /* We are here because the 1st read returned exactly sizeof
-	         (buf) bytes.  This implies that we are not at EOF and may
-	         not have read the timebase value yet.  So we need to read
-	         more bytes until we know we have EOF.  We copy the lower
-	         half of buf to the upper half and read sizeof (buf)/2
-	         bytes into the lower half of buf and repeat until we
-	         reach EOF.  We can assume that the timebase will be in
-	         the last 512 bytes of cpuinfo, so two 512 byte half_bufs
-	         will be sufficient to contain the timebase and will
-	         handle the case where the timebase spans the half_buf
-	         boundry.  */
-	      const ssize_t half_buf = sizeof (buf) / 2;
-	      while (n >= half_buf)
-		{
-		  memcpy (buf, buf + half_buf, half_buf);
-		  n = read (fd, buf + half_buf, half_buf);
-		}
-	      if (n >= 0)
-		n += half_buf;
-	    }
-
-	  if (__builtin_expect (n, 1) > 0)
-	    {
-	      char *mhz = memmem (buf, n, "timebase", 7);
-
-	      if (__builtin_expect (mhz != NULL, 1))
-		{
-		  char *endp = buf + n;
-
-		  /* Search for the beginning of the string.  */
-		  while (mhz < endp && (*mhz < '0' || *mhz > '9')
-			 && *mhz != '\n')
-		    ++mhz;
-
-		  while (mhz < endp && *mhz != '\n')
-		    {
-		      if (*mhz >= '0' && *mhz <= '9')
-			{
-			  result *= 10;
-			  result += *mhz - '0';
-			}
-
-		      ++mhz;
-		    }
-		}
-	      timebase_freq = result;
-	    }
-	  close (fd);
-	}
-    }
-
-  return timebase_freq;
-}