home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-mips / timex.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  1.6 KB  |  55 lines

  1. /*
  2.  * This file is subject to the terms and conditions of the GNU General Public
  3.  * License.  See the file "COPYING" in the main directory of this archive
  4.  * for more details.
  5.  *
  6.  * Copyright (C) 1998, 1999, 2003 by Ralf Baechle
  7.  */
  8. #ifndef _ASM_TIMEX_H
  9. #define _ASM_TIMEX_H
  10.  
  11. #include <asm/mipsregs.h>
  12.  
  13. /*
  14.  * This is the frequency of the timer used for Linux's timer interrupt.
  15.  * The value should be defined as accurate as possible or under certain
  16.  * circumstances Linux timekeeping might become inaccurate or fail.
  17.  *
  18.  * For many system the exact clockrate of the timer isn't known but due to
  19.  * the way this value is used we can get away with a wrong value as long
  20.  * as this value is:
  21.  *
  22.  *  - a multiple of HZ
  23.  *  - a divisor of the actual rate
  24.  *
  25.  * 500000 is a good such cheat value.
  26.  *
  27.  * The obscure number 1193182 is the same as used by the original i8254
  28.  * time in legacy PC hardware; the chip unfortunately also found in a
  29.  * bunch of MIPS systems.  The last remaining user of the i8254 for the
  30.  * timer interrupt is the RM200; it's a very standard system so there is
  31.  * no reason to make this a separate architecture.
  32.  */
  33.  
  34. #include <timex.h>
  35.  
  36. /*
  37.  * Standard way to access the cycle counter.
  38.  * Currently only used on SMP for scheduling.
  39.  *
  40.  * Only the low 32 bits are available as a continuously counting entity.
  41.  * But this only means we'll force a reschedule every 8 seconds or so,
  42.  * which isn't an evil thing.
  43.  *
  44.  * We know that all SMP capable CPUs have cycle counters.
  45.  */
  46.  
  47. typedef unsigned int cycles_t;
  48.  
  49. static inline cycles_t get_cycles (void)
  50. {
  51.     return read_c0_count();
  52. }
  53.  
  54. #endif /*  _ASM_TIMEX_H */
  55.