Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / include / linux / timer.h
index 90db1cc..0a485be 100644 (file)
@@ -12,38 +12,34 @@ struct timer_list {
        struct list_head entry;
        unsigned long expires;
 
-       spinlock_t lock;
-       unsigned long magic;
-
        void (*function)(unsigned long);
        unsigned long data;
 
        struct tvec_t_base_s *base;
 };
 
-#define TIMER_MAGIC    0x4b87ad6e
+extern struct tvec_t_base_s boot_tvec_bases;
 
 #define TIMER_INITIALIZER(_function, _expires, _data) {                \
                .function = (_function),                        \
                .expires = (_expires),                          \
                .data = (_data),                                \
-               .base = NULL,                                   \
-               .magic = TIMER_MAGIC,                           \
-               .lock = SPIN_LOCK_UNLOCKED,                     \
+               .base = &boot_tvec_bases,                       \
        }
 
-/***
- * init_timer - initialize a timer.
- * @timer: the timer to be initialized
- *
- * init_timer() must be done to a timer prior calling *any* of the
- * other timer functions.
- */
-static inline void init_timer(struct timer_list * timer)
+#define DEFINE_TIMER(_name, _function, _expires, _data)                \
+       struct timer_list _name =                               \
+               TIMER_INITIALIZER(_function, _expires, _data)
+
+void fastcall init_timer(struct timer_list * timer);
+
+static inline void setup_timer(struct timer_list * timer,
+                               void (*function)(unsigned long),
+                               unsigned long data)
 {
-       timer->base = NULL;
-       timer->magic = TIMER_MAGIC;
-       spin_lock_init(&timer->lock);
+       timer->function = function;
+       timer->data = data;
+       init_timer(timer);
 }
 
 /***
@@ -58,7 +54,7 @@ static inline void init_timer(struct timer_list * timer)
  */
 static inline int timer_pending(const struct timer_list * timer)
 {
-       return timer->base != NULL;
+       return timer->entry.next != NULL;
 }
 
 extern void add_timer_on(struct timer_list *timer, int cpu);
@@ -73,30 +69,34 @@ extern unsigned long next_timer_interrupt(void);
  * @timer: the timer to be added
  *
  * The kernel will do a ->function(->data) callback from the
- * timer interrupt at the ->expired point in the future. The
+ * timer interrupt at the ->expires point in the future. The
  * current time is 'jiffies'.
  *
- * The timer's ->expired, ->function (and if the handler uses it, ->data)
+ * The timer's ->expires, ->function (and if the handler uses it, ->data)
  * fields must be set prior calling this function.
  *
- * Timers with an ->expired field in the past will be executed in the next
+ * Timers with an ->expires field in the past will be executed in the next
  * timer tick.
  */
-static inline void add_timer(struct timer_list * timer)
+static inline void add_timer(struct timer_list *timer)
 {
+       BUG_ON(timer_pending(timer));
        __mod_timer(timer, timer->expires);
 }
 
 #ifdef CONFIG_SMP
+  extern int try_to_del_timer_sync(struct timer_list *timer);
   extern int del_timer_sync(struct timer_list *timer);
-  extern int del_singleshot_timer_sync(struct timer_list *timer);
 #else
-# define del_timer_sync(t) del_timer(t)
-# define del_singleshot_timer_sync(t) del_timer(t)
+# define try_to_del_timer_sync(t)      del_timer(t)
+# define del_timer_sync(t)             del_timer(t)
 #endif
 
+#define del_singleshot_timer_sync(t) del_timer_sync(t)
+
 extern void init_timers(void);
 extern void run_local_timers(void);
-extern void it_real_fn(unsigned long);
+struct hrtimer;
+extern int it_real_fn(struct hrtimer *);
 
 #endif