diff options
author | Andrew Morton <akpm@osdl.org> | 2005-10-30 18:02:03 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-10-30 20:37:18 -0500 |
commit | dfc4f94d2ff95fc92127d3e512c1df7cab274fb8 (patch) | |
tree | c9ed4d74147a3674816f59cf9fbeb69e2cb6afe4 | |
parent | 89ada67917f516212452443a56b9fd3b65b74dc7 (diff) |
[PATCH] remove timer debug field
Remove timer_list.magic and associated debugging code.
I originally added this when a spinlock was added to timer_list - this meant
that an all-zeroes timer became illegal and init_timer() was required.
That spinlock isn't even there any more, although timer.base must now be
initialised.
I'll keep this debugging code in -mm.
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | arch/s390/kernel/vtime.c | 18 | ||||
-rw-r--r-- | include/linux/timer.h | 5 | ||||
-rw-r--r-- | kernel/timer.c | 35 |
3 files changed, 2 insertions, 56 deletions
diff --git a/arch/s390/kernel/vtime.c b/arch/s390/kernel/vtime.c index fa0726507b3d..22a895ecb7a4 100644 --- a/arch/s390/kernel/vtime.c +++ b/arch/s390/kernel/vtime.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include <asm/s390_ext.h> | 24 | #include <asm/s390_ext.h> |
25 | #include <asm/timer.h> | 25 | #include <asm/timer.h> |
26 | 26 | ||
27 | #define VTIMER_MAGIC (TIMER_MAGIC + 1) | ||
28 | static ext_int_info_t ext_int_info_timer; | 27 | static ext_int_info_t ext_int_info_timer; |
29 | DEFINE_PER_CPU(struct vtimer_queue, virt_cpu_timer); | 28 | DEFINE_PER_CPU(struct vtimer_queue, virt_cpu_timer); |
30 | 29 | ||
@@ -277,20 +276,12 @@ static void do_cpu_timer_interrupt(struct pt_regs *regs, __u16 error_code) | |||
277 | 276 | ||
278 | void init_virt_timer(struct vtimer_list *timer) | 277 | void init_virt_timer(struct vtimer_list *timer) |
279 | { | 278 | { |
280 | timer->magic = VTIMER_MAGIC; | ||
281 | timer->function = NULL; | 279 | timer->function = NULL; |
282 | INIT_LIST_HEAD(&timer->entry); | 280 | INIT_LIST_HEAD(&timer->entry); |
283 | spin_lock_init(&timer->lock); | 281 | spin_lock_init(&timer->lock); |
284 | } | 282 | } |
285 | EXPORT_SYMBOL(init_virt_timer); | 283 | EXPORT_SYMBOL(init_virt_timer); |
286 | 284 | ||
287 | static inline int check_vtimer(struct vtimer_list *timer) | ||
288 | { | ||
289 | if (timer->magic != VTIMER_MAGIC) | ||
290 | return -EINVAL; | ||
291 | return 0; | ||
292 | } | ||
293 | |||
294 | static inline int vtimer_pending(struct vtimer_list *timer) | 285 | static inline int vtimer_pending(struct vtimer_list *timer) |
295 | { | 286 | { |
296 | return (!list_empty(&timer->entry)); | 287 | return (!list_empty(&timer->entry)); |
@@ -346,7 +337,7 @@ static void internal_add_vtimer(struct vtimer_list *timer) | |||
346 | 337 | ||
347 | static inline int prepare_vtimer(struct vtimer_list *timer) | 338 | static inline int prepare_vtimer(struct vtimer_list *timer) |
348 | { | 339 | { |
349 | if (check_vtimer(timer) || !timer->function) { | 340 | if (!timer->function) { |
350 | printk("add_virt_timer: uninitialized timer\n"); | 341 | printk("add_virt_timer: uninitialized timer\n"); |
351 | return -EINVAL; | 342 | return -EINVAL; |
352 | } | 343 | } |
@@ -414,7 +405,7 @@ int mod_virt_timer(struct vtimer_list *timer, __u64 expires) | |||
414 | unsigned long flags; | 405 | unsigned long flags; |
415 | int cpu; | 406 | int cpu; |
416 | 407 | ||
417 | if (check_vtimer(timer) || !timer->function) { | 408 | if (!timer->function) { |
418 | printk("mod_virt_timer: uninitialized timer\n"); | 409 | printk("mod_virt_timer: uninitialized timer\n"); |
419 | return -EINVAL; | 410 | return -EINVAL; |
420 | } | 411 | } |
@@ -481,11 +472,6 @@ int del_virt_timer(struct vtimer_list *timer) | |||
481 | unsigned long flags; | 472 | unsigned long flags; |
482 | struct vtimer_queue *vt_list; | 473 | struct vtimer_queue *vt_list; |
483 | 474 | ||
484 | if (check_vtimer(timer)) { | ||
485 | printk("del_virt_timer: timer not initialized\n"); | ||
486 | return -EINVAL; | ||
487 | } | ||
488 | |||
489 | /* check if timer is pending */ | 475 | /* check if timer is pending */ |
490 | if (!vtimer_pending(timer)) | 476 | if (!vtimer_pending(timer)) |
491 | return 0; | 477 | return 0; |
diff --git a/include/linux/timer.h b/include/linux/timer.h index ddd5bbe1fc8e..b1dc583bb4d4 100644 --- a/include/linux/timer.h +++ b/include/linux/timer.h | |||
@@ -12,16 +12,12 @@ struct timer_list { | |||
12 | struct list_head entry; | 12 | struct list_head entry; |
13 | unsigned long expires; | 13 | unsigned long expires; |
14 | 14 | ||
15 | unsigned long magic; | ||
16 | |||
17 | void (*function)(unsigned long); | 15 | void (*function)(unsigned long); |
18 | unsigned long data; | 16 | unsigned long data; |
19 | 17 | ||
20 | struct timer_base_s *base; | 18 | struct timer_base_s *base; |
21 | }; | 19 | }; |
22 | 20 | ||
23 | #define TIMER_MAGIC 0x4b87ad6e | ||
24 | |||
25 | extern struct timer_base_s __init_timer_base; | 21 | extern struct timer_base_s __init_timer_base; |
26 | 22 | ||
27 | #define TIMER_INITIALIZER(_function, _expires, _data) { \ | 23 | #define TIMER_INITIALIZER(_function, _expires, _data) { \ |
@@ -29,7 +25,6 @@ extern struct timer_base_s __init_timer_base; | |||
29 | .expires = (_expires), \ | 25 | .expires = (_expires), \ |
30 | .data = (_data), \ | 26 | .data = (_data), \ |
31 | .base = &__init_timer_base, \ | 27 | .base = &__init_timer_base, \ |
32 | .magic = TIMER_MAGIC, \ | ||
33 | } | 28 | } |
34 | 29 | ||
35 | #define DEFINE_TIMER(_name, _function, _expires, _data) \ | 30 | #define DEFINE_TIMER(_name, _function, _expires, _data) \ |
diff --git a/kernel/timer.c b/kernel/timer.c index cc18857601e2..562d53eabb46 100644 --- a/kernel/timer.c +++ b/kernel/timer.c | |||
@@ -91,30 +91,6 @@ static inline void set_running_timer(tvec_base_t *base, | |||
91 | #endif | 91 | #endif |
92 | } | 92 | } |
93 | 93 | ||
94 | static void check_timer_failed(struct timer_list *timer) | ||
95 | { | ||
96 | static int whine_count; | ||
97 | if (whine_count < 16) { | ||
98 | whine_count++; | ||
99 | printk("Uninitialised timer!\n"); | ||
100 | printk("This is just a warning. Your computer is OK\n"); | ||
101 | printk("function=0x%p, data=0x%lx\n", | ||
102 | timer->function, timer->data); | ||
103 | dump_stack(); | ||
104 | } | ||
105 | /* | ||
106 | * Now fix it up | ||
107 | */ | ||
108 | timer->magic = TIMER_MAGIC; | ||
109 | } | ||
110 | |||
111 | static inline void check_timer(struct timer_list *timer) | ||
112 | { | ||
113 | if (timer->magic != TIMER_MAGIC) | ||
114 | check_timer_failed(timer); | ||
115 | } | ||
116 | |||
117 | |||
118 | static void internal_add_timer(tvec_base_t *base, struct timer_list *timer) | 94 | static void internal_add_timer(tvec_base_t *base, struct timer_list *timer) |
119 | { | 95 | { |
120 | unsigned long expires = timer->expires; | 96 | unsigned long expires = timer->expires; |
@@ -177,7 +153,6 @@ void fastcall init_timer(struct timer_list *timer) | |||
177 | { | 153 | { |
178 | timer->entry.next = NULL; | 154 | timer->entry.next = NULL; |
179 | timer->base = &per_cpu(tvec_bases, raw_smp_processor_id()).t_base; | 155 | timer->base = &per_cpu(tvec_bases, raw_smp_processor_id()).t_base; |
180 | timer->magic = TIMER_MAGIC; | ||
181 | } | 156 | } |
182 | EXPORT_SYMBOL(init_timer); | 157 | EXPORT_SYMBOL(init_timer); |
183 | 158 | ||
@@ -230,7 +205,6 @@ int __mod_timer(struct timer_list *timer, unsigned long expires) | |||
230 | int ret = 0; | 205 | int ret = 0; |
231 | 206 | ||
232 | BUG_ON(!timer->function); | 207 | BUG_ON(!timer->function); |
233 | check_timer(timer); | ||
234 | 208 | ||
235 | base = lock_timer_base(timer, &flags); | 209 | base = lock_timer_base(timer, &flags); |
236 | 210 | ||
@@ -283,9 +257,6 @@ void add_timer_on(struct timer_list *timer, int cpu) | |||
283 | unsigned long flags; | 257 | unsigned long flags; |
284 | 258 | ||
285 | BUG_ON(timer_pending(timer) || !timer->function); | 259 | BUG_ON(timer_pending(timer) || !timer->function); |
286 | |||
287 | check_timer(timer); | ||
288 | |||
289 | spin_lock_irqsave(&base->t_base.lock, flags); | 260 | spin_lock_irqsave(&base->t_base.lock, flags); |
290 | timer->base = &base->t_base; | 261 | timer->base = &base->t_base; |
291 | internal_add_timer(base, timer); | 262 | internal_add_timer(base, timer); |
@@ -316,8 +287,6 @@ int mod_timer(struct timer_list *timer, unsigned long expires) | |||
316 | { | 287 | { |
317 | BUG_ON(!timer->function); | 288 | BUG_ON(!timer->function); |
318 | 289 | ||
319 | check_timer(timer); | ||
320 | |||
321 | /* | 290 | /* |
322 | * This is a common optimization triggered by the | 291 | * This is a common optimization triggered by the |
323 | * networking code - if the timer is re-modified | 292 | * networking code - if the timer is re-modified |
@@ -348,8 +317,6 @@ int del_timer(struct timer_list *timer) | |||
348 | unsigned long flags; | 317 | unsigned long flags; |
349 | int ret = 0; | 318 | int ret = 0; |
350 | 319 | ||
351 | check_timer(timer); | ||
352 | |||
353 | if (timer_pending(timer)) { | 320 | if (timer_pending(timer)) { |
354 | base = lock_timer_base(timer, &flags); | 321 | base = lock_timer_base(timer, &flags); |
355 | if (timer_pending(timer)) { | 322 | if (timer_pending(timer)) { |
@@ -412,8 +379,6 @@ out: | |||
412 | */ | 379 | */ |
413 | int del_timer_sync(struct timer_list *timer) | 380 | int del_timer_sync(struct timer_list *timer) |
414 | { | 381 | { |
415 | check_timer(timer); | ||
416 | |||
417 | for (;;) { | 382 | for (;;) { |
418 | int ret = try_to_del_timer_sync(timer); | 383 | int ret = try_to_del_timer_sync(timer); |
419 | if (ret >= 0) | 384 | if (ret >= 0) |