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-arm / mach / time.h < prev   
Encoding:
C/C++ Source or Header  |  2006-08-11  |  2.2 KB  |  76 lines

  1. /*
  2.  * linux/include/asm-arm/mach/time.h
  3.  *
  4.  * Copyright (C) 2004 MontaVista Software, Inc.
  5.  *
  6.  * This program is free software; you can redistribute it and/or modify
  7.  * it under the terms of the GNU General Public License version 2 as
  8.  * published by the Free Software Foundation.
  9.  */
  10. #ifndef __ASM_ARM_MACH_TIME_H
  11. #define __ASM_ARM_MACH_TIME_H
  12.  
  13. #include <linux/sysdev.h>
  14.  
  15. /*
  16.  * This is our kernel timer structure.
  17.  *
  18.  * - init
  19.  *   Initialise the kernels jiffy timer source, claim interrupt
  20.  *   using setup_irq.  This is called early on during initialisation
  21.  *   while interrupts are still disabled on the local CPU.
  22.  * - suspend
  23.  *   Suspend the kernel jiffy timer source, if necessary.  This
  24.  *   is called with interrupts disabled, after all normal devices
  25.  *   have been suspended.  If no action is required, set this to
  26.  *   NULL.
  27.  * - resume
  28.  *   Resume the kernel jiffy timer source, if necessary.  This
  29.  *   is called with interrupts disabled before any normal devices
  30.  *   are resumed.  If no action is required, set this to NULL.
  31.  * - offset
  32.  *   Return the timer offset in microseconds since the last timer
  33.  *   interrupt.  Note: this must take account of any unprocessed
  34.  *   timer interrupt which may be pending.
  35.  */
  36. struct sys_timer {
  37.     struct sys_device    dev;
  38.     void            (*init)(void);
  39.     void            (*suspend)(void);
  40.     void            (*resume)(void);
  41.     unsigned long        (*offset)(void);
  42.  
  43. #ifdef CONFIG_NO_IDLE_HZ
  44.     struct dyn_tick_timer    *dyn_tick;
  45. #endif
  46. };
  47.  
  48. #ifdef CONFIG_NO_IDLE_HZ
  49.  
  50. #define DYN_TICK_ENABLED    (1 << 1)
  51.  
  52. struct dyn_tick_timer {
  53.     unsigned int    state;            /* Current state */
  54.     int        (*enable)(void);    /* Enables dynamic tick */
  55.     int        (*disable)(void);    /* Disables dynamic tick */
  56.     void        (*reprogram)(unsigned long); /* Reprograms the timer */
  57.     int        (*handler)(int, void *, struct pt_regs *);
  58. };
  59.  
  60. void timer_dyn_reprogram(void);
  61. #else
  62. #define timer_dyn_reprogram()    do { } while (0)
  63. #endif
  64.  
  65. extern struct sys_timer *system_timer;
  66. extern void timer_tick(struct pt_regs *);
  67.  
  68. /*
  69.  * Kernel time keeping support.
  70.  */
  71. extern int (*set_rtc)(void);
  72. extern void save_time_delta(struct timespec *delta, struct timespec *rtc);
  73. extern void restore_time_delta(struct timespec *delta, struct timespec *rtc);
  74.  
  75. #endif
  76.