aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2005-09-09 16:10:40 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2005-09-09 17:03:48 -0400
commit8d06afab73a75f40ae2864e6c296356bab1ab473 (patch)
tree1d9c8c24a1024a12a4e8df841fba5809fa914356
parent7c352bdf048811b8128019ffc1e886161e09c11c (diff)
[PATCH] timer initialization cleanup: DEFINE_TIMER
Clean up timer initialization by introducing DEFINE_TIMER a'la DEFINE_SPINLOCK. Build and boot-tested on x86. A similar patch has been been in the -RT tree for some time. Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--arch/i386/kernel/time.c3
-rw-r--r--arch/m68k/amiga/amisound.c2
-rw-r--r--arch/m68k/mac/macboing.c3
-rw-r--r--arch/ppc/8xx_io/cs4218_tdm.c2
-rw-r--r--drivers/acorn/block/fd1772.c12
-rw-r--r--drivers/atm/idt77105.c6
-rw-r--r--drivers/atm/iphase.c2
-rw-r--r--drivers/block/acsi.c2
-rw-r--r--drivers/block/acsi_slm.c2
-rw-r--r--drivers/block/ataflop.c14
-rw-r--r--drivers/block/floppy.c4
-rw-r--r--drivers/block/ps2esdi.c3
-rw-r--r--drivers/cdrom/aztcd.c2
-rw-r--r--drivers/cdrom/gscd.c2
-rw-r--r--drivers/cdrom/optcd.c2
-rw-r--r--drivers/cdrom/sbpcd.c9
-rw-r--r--drivers/cdrom/sjcd.c2
-rw-r--r--drivers/char/cyclades.c2
-rw-r--r--drivers/char/hangcheck-timer.c3
-rw-r--r--drivers/char/ip2main.c2
-rw-r--r--drivers/char/istallion.c2
-rw-r--r--drivers/char/keyboard.c3
-rw-r--r--drivers/char/watchdog/mixcomwd.c2
-rw-r--r--drivers/net/atari_bionet.c2
-rw-r--r--drivers/net/atari_pamsnet.c2
-rw-r--r--drivers/net/cris/eth_v10.c6
-rw-r--r--drivers/net/hamradio/yam.c2
-rw-r--r--drivers/sbus/char/aurora.c3
-rw-r--r--drivers/scsi/pluto.c3
-rw-r--r--drivers/usb/host/hc_crisv10.c4
-rw-r--r--include/linux/timer.h4
-rw-r--r--mm/page-writeback.c6
-rw-r--r--net/atm/mpc.c2
-rw-r--r--net/core/dst.c3
-rw-r--r--net/decnet/dn_route.c3
-rw-r--r--net/ipv4/inetpeer.c3
-rw-r--r--net/ipv6/addrconf.c3
-rw-r--r--net/ipv6/ip6_fib.c2
-rw-r--r--net/ipv6/ip6_flowlabel.c2
-rw-r--r--net/netrom/nr_loopback.c2
-rw-r--r--net/sched/sch_api.c2
-rw-r--r--sound/oss/midibuf.c2
-rw-r--r--sound/oss/soundcard.c3
-rw-r--r--sound/oss/sys_timer.c3
-rw-r--r--sound/oss/uart6850.c3
45 files changed, 62 insertions, 89 deletions
diff --git a/arch/i386/kernel/time.c b/arch/i386/kernel/time.c
index eefea7c55008..2883a4d4f01f 100644
--- a/arch/i386/kernel/time.c
+++ b/arch/i386/kernel/time.c
@@ -329,8 +329,7 @@ EXPORT_SYMBOL(get_cmos_time);
329 329
330static void sync_cmos_clock(unsigned long dummy); 330static void sync_cmos_clock(unsigned long dummy);
331 331
332static struct timer_list sync_cmos_timer = 332static DEFINE_TIMER(sync_cmos_timer, sync_cmos_clock, 0, 0);
333 TIMER_INITIALIZER(sync_cmos_clock, 0, 0);
334 333
335static void sync_cmos_clock(unsigned long dummy) 334static void sync_cmos_clock(unsigned long dummy)
336{ 335{
diff --git a/arch/m68k/amiga/amisound.c b/arch/m68k/amiga/amisound.c
index cb5d93630467..bd5d134e9f12 100644
--- a/arch/m68k/amiga/amisound.c
+++ b/arch/m68k/amiga/amisound.c
@@ -63,7 +63,7 @@ void __init amiga_init_sound(void)
63} 63}
64 64
65static void nosound( unsigned long ignored ); 65static void nosound( unsigned long ignored );
66static struct timer_list sound_timer = TIMER_INITIALIZER(nosound, 0, 0); 66static DEFINE_TIMER(sound_timer, nosound, 0, 0);
67 67
68void amiga_mksound( unsigned int hz, unsigned int ticks ) 68void amiga_mksound( unsigned int hz, unsigned int ticks )
69{ 69{
diff --git a/arch/m68k/mac/macboing.c b/arch/m68k/mac/macboing.c
index 44c5cd2ad6a8..8f0640847ad2 100644
--- a/arch/m68k/mac/macboing.c
+++ b/arch/m68k/mac/macboing.c
@@ -56,8 +56,7 @@ static void ( *mac_special_bell )( unsigned int, unsigned int, unsigned int );
56/* 56/*
57 * our timer to start/continue/stop the bell 57 * our timer to start/continue/stop the bell
58 */ 58 */
59static struct timer_list mac_sound_timer = 59static DEFINE_TIMER(mac_sound_timer, mac_nosound, 0, 0);
60 TIMER_INITIALIZER(mac_nosound, 0, 0);
61 60
62/* 61/*
63 * Sort of initialize the sound chip (called from mac_mksound on the first 62 * Sort of initialize the sound chip (called from mac_mksound on the first
diff --git a/arch/ppc/8xx_io/cs4218_tdm.c b/arch/ppc/8xx_io/cs4218_tdm.c
index 89fe0ceeaa40..2ca9ec7ec3a7 100644
--- a/arch/ppc/8xx_io/cs4218_tdm.c
+++ b/arch/ppc/8xx_io/cs4218_tdm.c
@@ -1380,7 +1380,7 @@ static void cs_nosound(unsigned long xx)
1380 spin_unlock_irqrestore(&cs4218_lock, flags); 1380 spin_unlock_irqrestore(&cs4218_lock, flags);
1381} 1381}
1382 1382
1383static struct timer_list beep_timer = TIMER_INITIALIZER(cs_nosound, 0, 0); 1383static DEFINE_TIMER(beep_timer, cs_nosound, 0, 0);
1384}; 1384};
1385 1385
1386static void cs_mksound(unsigned int hz, unsigned int ticks) 1386static void cs_mksound(unsigned int hz, unsigned int ticks)
diff --git a/drivers/acorn/block/fd1772.c b/drivers/acorn/block/fd1772.c
index c0a37d98b4f3..048542341204 100644
--- a/drivers/acorn/block/fd1772.c
+++ b/drivers/acorn/block/fd1772.c
@@ -376,19 +376,15 @@ static void do_fd_request(request_queue_t *);
376 376
377/************************* End of Prototypes **************************/ 377/************************* End of Prototypes **************************/
378 378
379static struct timer_list motor_off_timer = 379static DEFINE_TIMER(motor_off_timer, fd_motor_off_timer, 0, 0);
380 TIMER_INITIALIZER(fd_motor_off_timer, 0, 0);
381 380
382#ifdef TRACKBUFFER 381#ifdef TRACKBUFFER
383static struct timer_list readtrack_timer = 382static DEFINE_TIMER(readtrack_timer, fd_readtrack_check, 0, 0);
384 TIMER_INITIALIZER(fd_readtrack_check, 0, 0);
385#endif 383#endif
386 384
387static struct timer_list timeout_timer = 385static DEFINE_TIMER(timeout_timer, fd_times_out, 0, 0);
388 TIMER_INITIALIZER(fd_times_out, 0, 0);
389 386
390static struct timer_list fd_timer = 387static DEFINE_TIMER(fd_timer, check_change, 0, 0);
391 TIMER_INITIALIZER(check_change, 0, 0);
392 388
393/* DAG: Haven't got a clue what this is? */ 389/* DAG: Haven't got a clue what this is? */
394int stdma_islocked(void) 390int stdma_islocked(void)
diff --git a/drivers/atm/idt77105.c b/drivers/atm/idt77105.c
index b8c260ed4b27..0aabfc2a59d9 100644
--- a/drivers/atm/idt77105.c
+++ b/drivers/atm/idt77105.c
@@ -50,10 +50,8 @@ static void idt77105_stats_timer_func(unsigned long);
50static void idt77105_restart_timer_func(unsigned long); 50static void idt77105_restart_timer_func(unsigned long);
51 51
52 52
53static struct timer_list stats_timer = 53static DEFINE_TIMER(stats_timer, idt77105_stats_timer_func, 0, 0);
54 TIMER_INITIALIZER(idt77105_stats_timer_func, 0, 0); 54static DEFINE_TIMER(restart_timer, idt77105_restart_timer_func, 0, 0);
55static struct timer_list restart_timer =
56 TIMER_INITIALIZER(idt77105_restart_timer_func, 0, 0);
57static int start_timer = 1; 55static int start_timer = 1;
58static struct idt77105_priv *idt77105_all = NULL; 56static struct idt77105_priv *idt77105_all = NULL;
59 57
diff --git a/drivers/atm/iphase.c b/drivers/atm/iphase.c
index a43575acb2c1..2e2e50e1167a 100644
--- a/drivers/atm/iphase.c
+++ b/drivers/atm/iphase.c
@@ -79,7 +79,7 @@ static IADEV *ia_dev[8];
79static struct atm_dev *_ia_dev[8]; 79static struct atm_dev *_ia_dev[8];
80static int iadev_count; 80static int iadev_count;
81static void ia_led_timer(unsigned long arg); 81static void ia_led_timer(unsigned long arg);
82static struct timer_list ia_timer = TIMER_INITIALIZER(ia_led_timer, 0, 0); 82static DEFINE_TIMER(ia_timer, ia_led_timer, 0, 0);
83static int IA_TX_BUF = DFL_TX_BUFFERS, IA_TX_BUF_SZ = DFL_TX_BUF_SZ; 83static int IA_TX_BUF = DFL_TX_BUFFERS, IA_TX_BUF_SZ = DFL_TX_BUF_SZ;
84static int IA_RX_BUF = DFL_RX_BUFFERS, IA_RX_BUF_SZ = DFL_RX_BUF_SZ; 84static int IA_RX_BUF = DFL_RX_BUFFERS, IA_RX_BUF_SZ = DFL_RX_BUF_SZ;
85static uint IADebugFlag = /* IF_IADBG_ERR | IF_IADBG_CBR| IF_IADBG_INIT_ADAPTER 85static uint IADebugFlag = /* IF_IADBG_ERR | IF_IADBG_CBR| IF_IADBG_INIT_ADAPTER
diff --git a/drivers/block/acsi.c b/drivers/block/acsi.c
index ce933de48084..0e1f34fef0c8 100644
--- a/drivers/block/acsi.c
+++ b/drivers/block/acsi.c
@@ -371,7 +371,7 @@ static int acsi_revalidate (struct gendisk *disk);
371/************************* End of Prototypes **************************/ 371/************************* End of Prototypes **************************/
372 372
373 373
374struct timer_list acsi_timer = TIMER_INITIALIZER(acsi_times_out, 0, 0); 374DEFINE_TIMER(acsi_timer, acsi_times_out, 0, 0);
375 375
376 376
377#ifdef CONFIG_ATARI_SLM 377#ifdef CONFIG_ATARI_SLM
diff --git a/drivers/block/acsi_slm.c b/drivers/block/acsi_slm.c
index e3be8c31a74c..a5c1c8e871ec 100644
--- a/drivers/block/acsi_slm.c
+++ b/drivers/block/acsi_slm.c
@@ -268,7 +268,7 @@ static int slm_get_pagesize( int device, int *w, int *h );
268/************************* End of Prototypes **************************/ 268/************************* End of Prototypes **************************/
269 269
270 270
271static struct timer_list slm_timer = TIMER_INITIALIZER(slm_test_ready, 0, 0); 271static DEFINE_TIMER(slm_timer, slm_test_ready, 0, 0);
272 272
273static struct file_operations slm_fops = { 273static struct file_operations slm_fops = {
274 .owner = THIS_MODULE, 274 .owner = THIS_MODULE,
diff --git a/drivers/block/ataflop.c b/drivers/block/ataflop.c
index db05a5a99f35..22bda05fc693 100644
--- a/drivers/block/ataflop.c
+++ b/drivers/block/ataflop.c
@@ -371,16 +371,10 @@ static int floppy_release( struct inode * inode, struct file * filp );
371 371
372/************************* End of Prototypes **************************/ 372/************************* End of Prototypes **************************/
373 373
374static struct timer_list motor_off_timer = 374static DEFINE_TIMER(motor_off_timer, fd_motor_off_timer, 0, 0);
375 TIMER_INITIALIZER(fd_motor_off_timer, 0, 0); 375static DEFINE_TIMER(readtrack_timer, fd_readtrack_check, 0, 0);
376static struct timer_list readtrack_timer = 376static DEFINE_TIMER(timeout_timer, fd_times_out, 0, 0);
377 TIMER_INITIALIZER(fd_readtrack_check, 0, 0); 377static DEFINE_TIMER(fd_timer, check_change, 0, 0);
378
379static struct timer_list timeout_timer =
380 TIMER_INITIALIZER(fd_times_out, 0, 0);
381
382static struct timer_list fd_timer =
383 TIMER_INITIALIZER(check_change, 0, 0);
384 378
385static inline void start_motor_off_timer(void) 379static inline void start_motor_off_timer(void)
386{ 380{
diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c
index 888dad5eef34..00895477155e 100644
--- a/drivers/block/floppy.c
+++ b/drivers/block/floppy.c
@@ -628,7 +628,7 @@ static inline void debugt(const char *message) { }
628#endif /* DEBUGT */ 628#endif /* DEBUGT */
629 629
630typedef void (*timeout_fn) (unsigned long); 630typedef void (*timeout_fn) (unsigned long);
631static struct timer_list fd_timeout = TIMER_INITIALIZER(floppy_shutdown, 0, 0); 631static DEFINE_TIMER(fd_timeout, floppy_shutdown, 0, 0);
632 632
633static const char *timeout_message; 633static const char *timeout_message;
634 634
@@ -1012,7 +1012,7 @@ static void schedule_bh(void (*handler) (void))
1012 schedule_work(&floppy_work); 1012 schedule_work(&floppy_work);
1013} 1013}
1014 1014
1015static struct timer_list fd_timer = TIMER_INITIALIZER(NULL, 0, 0); 1015static DEFINE_TIMER(fd_timer, NULL, 0, 0);
1016 1016
1017static void cancel_activity(void) 1017static void cancel_activity(void)
1018{ 1018{
diff --git a/drivers/block/ps2esdi.c b/drivers/block/ps2esdi.c
index 29548784cb7b..29d1518be72a 100644
--- a/drivers/block/ps2esdi.c
+++ b/drivers/block/ps2esdi.c
@@ -99,8 +99,7 @@ static DECLARE_WAIT_QUEUE_HEAD(ps2esdi_int);
99static int no_int_yet; 99static int no_int_yet;
100static int ps2esdi_drives; 100static int ps2esdi_drives;
101static u_short io_base; 101static u_short io_base;
102static struct timer_list esdi_timer = 102static DEFINE_TIMER(esdi_timer, ps2esdi_reset_timer, 0, 0);
103 TIMER_INITIALIZER(ps2esdi_reset_timer, 0, 0);
104static int reset_status; 103static int reset_status;
105static int ps2esdi_slot = -1; 104static int ps2esdi_slot = -1;
106static int tp720esdi = 0; /* Is it Integrated ESDI of ThinkPad-720? */ 105static int tp720esdi = 0; /* Is it Integrated ESDI of ThinkPad-720? */
diff --git a/drivers/cdrom/aztcd.c b/drivers/cdrom/aztcd.c
index 43bf1e5dc38a..ce4a1ce59d6a 100644
--- a/drivers/cdrom/aztcd.c
+++ b/drivers/cdrom/aztcd.c
@@ -297,7 +297,7 @@ static char azt_auto_eject = AZT_AUTO_EJECT;
297 297
298static int AztTimeout, AztTries; 298static int AztTimeout, AztTries;
299static DECLARE_WAIT_QUEUE_HEAD(azt_waitq); 299static DECLARE_WAIT_QUEUE_HEAD(azt_waitq);
300static struct timer_list delay_timer = TIMER_INITIALIZER(NULL, 0, 0); 300static DEFINE_TIMER(delay_timer, NULL, 0, 0);
301 301
302static struct azt_DiskInfo DiskInfo; 302static struct azt_DiskInfo DiskInfo;
303static struct azt_Toc Toc[MAX_TRACKS]; 303static struct azt_Toc Toc[MAX_TRACKS];
diff --git a/drivers/cdrom/gscd.c b/drivers/cdrom/gscd.c
index 7eac10e63b23..ad5464ab99bc 100644
--- a/drivers/cdrom/gscd.c
+++ b/drivers/cdrom/gscd.c
@@ -146,7 +146,7 @@ static int AudioStart_f;
146static int AudioEnd_m; 146static int AudioEnd_m;
147static int AudioEnd_f; 147static int AudioEnd_f;
148 148
149static struct timer_list gscd_timer = TIMER_INITIALIZER(NULL, 0, 0); 149static DEFINE_TIMER(gscd_timer, NULL, 0, 0);
150static DEFINE_SPINLOCK(gscd_lock); 150static DEFINE_SPINLOCK(gscd_lock);
151static struct request_queue *gscd_queue; 151static struct request_queue *gscd_queue;
152 152
diff --git a/drivers/cdrom/optcd.c b/drivers/cdrom/optcd.c
index 351a01dd503a..0b0eab4f40fa 100644
--- a/drivers/cdrom/optcd.c
+++ b/drivers/cdrom/optcd.c
@@ -264,7 +264,7 @@ static inline int flag_low(int flag, unsigned long timeout)
264static int sleep_timeout; /* max # of ticks to sleep */ 264static int sleep_timeout; /* max # of ticks to sleep */
265static DECLARE_WAIT_QUEUE_HEAD(waitq); 265static DECLARE_WAIT_QUEUE_HEAD(waitq);
266static void sleep_timer(unsigned long data); 266static void sleep_timer(unsigned long data);
267static struct timer_list delay_timer = TIMER_INITIALIZER(sleep_timer, 0, 0); 267static DEFINE_TIMER(delay_timer, sleep_timer, 0, 0);
268static DEFINE_SPINLOCK(optcd_lock); 268static DEFINE_SPINLOCK(optcd_lock);
269static struct request_queue *opt_queue; 269static struct request_queue *opt_queue;
270 270
diff --git a/drivers/cdrom/sbpcd.c b/drivers/cdrom/sbpcd.c
index 452d34675159..30a897755361 100644
--- a/drivers/cdrom/sbpcd.c
+++ b/drivers/cdrom/sbpcd.c
@@ -742,13 +742,10 @@ static struct sbpcd_drive *current_drive = D_S;
742unsigned long cli_sti; /* for saving the processor flags */ 742unsigned long cli_sti; /* for saving the processor flags */
743#endif 743#endif
744/*==========================================================================*/ 744/*==========================================================================*/
745static struct timer_list delay_timer = 745static DEFINE_TIMER(delay_timer, mark_timeout_delay, 0, 0);
746 TIMER_INITIALIZER(mark_timeout_delay, 0, 0); 746static DEFINE_TIMER(data_timer, mark_timeout_data, 0, 0);
747static struct timer_list data_timer =
748 TIMER_INITIALIZER(mark_timeout_data, 0, 0);
749#if 0 747#if 0
750static struct timer_list audio_timer = 748static DEFINE_TIMER(audio_timer, mark_timeout_audio, 0, 0);
751 TIMER_INITIALIZER(mark_timeout_audio, 0, 0);
752#endif 749#endif
753/*==========================================================================*/ 750/*==========================================================================*/
754/* 751/*
diff --git a/drivers/cdrom/sjcd.c b/drivers/cdrom/sjcd.c
index 4e7a342ec36f..74b1cadbf161 100644
--- a/drivers/cdrom/sjcd.c
+++ b/drivers/cdrom/sjcd.c
@@ -151,7 +151,7 @@ static struct sjcd_stat statistic;
151/* 151/*
152 * Timer. 152 * Timer.
153 */ 153 */
154static struct timer_list sjcd_delay_timer = TIMER_INITIALIZER(NULL, 0, 0); 154static DEFINE_TIMER(sjcd_delay_timer, NULL, 0, 0);
155 155
156#define SJCD_SET_TIMER( func, tmout ) \ 156#define SJCD_SET_TIMER( func, tmout ) \
157 ( sjcd_delay_timer.expires = jiffies+tmout, \ 157 ( sjcd_delay_timer.expires = jiffies+tmout, \
diff --git a/drivers/char/cyclades.c b/drivers/char/cyclades.c
index 6a5337bf0936..cf4c3648463d 100644
--- a/drivers/char/cyclades.c
+++ b/drivers/char/cyclades.c
@@ -865,7 +865,7 @@ static void cyz_poll(unsigned long);
865static long cyz_polling_cycle = CZ_DEF_POLL; 865static long cyz_polling_cycle = CZ_DEF_POLL;
866 866
867static int cyz_timeron = 0; 867static int cyz_timeron = 0;
868static struct timer_list cyz_timerlist = TIMER_INITIALIZER(cyz_poll, 0, 0); 868static DEFINE_TIMER(cyz_timerlist, cyz_poll, 0, 0);
869 869
870#else /* CONFIG_CYZ_INTR */ 870#else /* CONFIG_CYZ_INTR */
871static void cyz_rx_restart(unsigned long); 871static void cyz_rx_restart(unsigned long);
diff --git a/drivers/char/hangcheck-timer.c b/drivers/char/hangcheck-timer.c
index 81d811edf3c5..a54bc93353af 100644
--- a/drivers/char/hangcheck-timer.c
+++ b/drivers/char/hangcheck-timer.c
@@ -149,8 +149,7 @@ static unsigned long long hangcheck_tsc, hangcheck_tsc_margin;
149 149
150static void hangcheck_fire(unsigned long); 150static void hangcheck_fire(unsigned long);
151 151
152static struct timer_list hangcheck_ticktock = 152static DEFINE_TIMER(hangcheck_ticktock, hangcheck_fire, 0, 0);
153 TIMER_INITIALIZER(hangcheck_fire, 0, 0);
154 153
155 154
156static void hangcheck_fire(unsigned long data) 155static void hangcheck_fire(unsigned long data)
diff --git a/drivers/char/ip2main.c b/drivers/char/ip2main.c
index 066d7b5cb76d..9e4e26aef94e 100644
--- a/drivers/char/ip2main.c
+++ b/drivers/char/ip2main.c
@@ -254,7 +254,7 @@ static unsigned long bh_counter = 0;
254 * selected, the board is serviced periodically to see if anything needs doing. 254 * selected, the board is serviced periodically to see if anything needs doing.
255 */ 255 */
256#define POLL_TIMEOUT (jiffies + 1) 256#define POLL_TIMEOUT (jiffies + 1)
257static struct timer_list PollTimer = TIMER_INITIALIZER(ip2_poll, 0, 0); 257static DEFINE_TIMER(PollTimer, ip2_poll, 0, 0);
258static char TimerOn; 258static char TimerOn;
259 259
260#ifdef IP2DEBUG_TRACE 260#ifdef IP2DEBUG_TRACE
diff --git a/drivers/char/istallion.c b/drivers/char/istallion.c
index 52a073eee201..9c19e5435a11 100644
--- a/drivers/char/istallion.c
+++ b/drivers/char/istallion.c
@@ -780,7 +780,7 @@ static struct file_operations stli_fsiomem = {
780 * much cheaper on host cpu than using interrupts. It turns out to 780 * much cheaper on host cpu than using interrupts. It turns out to
781 * not increase character latency by much either... 781 * not increase character latency by much either...
782 */ 782 */
783static struct timer_list stli_timerlist = TIMER_INITIALIZER(stli_poll, 0, 0); 783static DEFINE_TIMER(stli_timerlist, stli_poll, 0, 0);
784 784
785static int stli_timeron; 785static int stli_timeron;
786 786
diff --git a/drivers/char/keyboard.c b/drivers/char/keyboard.c
index 523fd3c8bbaa..1745065d8f78 100644
--- a/drivers/char/keyboard.c
+++ b/drivers/char/keyboard.c
@@ -233,8 +233,7 @@ static void kd_nosound(unsigned long ignored)
233 } 233 }
234} 234}
235 235
236static struct timer_list kd_mksound_timer = 236static DEFINE_TIMER(kd_mksound_timer, kd_nosound, 0, 0);
237 TIMER_INITIALIZER(kd_nosound, 0, 0);
238 237
239void kd_mksound(unsigned int hz, unsigned int ticks) 238void kd_mksound(unsigned int hz, unsigned int ticks)
240{ 239{
diff --git a/drivers/char/watchdog/mixcomwd.c b/drivers/char/watchdog/mixcomwd.c
index c9b301dccec3..7fc2188386d9 100644
--- a/drivers/char/watchdog/mixcomwd.c
+++ b/drivers/char/watchdog/mixcomwd.c
@@ -59,7 +59,7 @@ static unsigned long mixcomwd_opened; /* long req'd for setbit --RR */
59 59
60static int watchdog_port; 60static int watchdog_port;
61static int mixcomwd_timer_alive; 61static int mixcomwd_timer_alive;
62static struct timer_list mixcomwd_timer = TIMER_INITIALIZER(NULL, 0, 0); 62static DEFINE_TIMER(mixcomwd_timer, NULL, 0, 0);
63static char expect_close; 63static char expect_close;
64 64
65static int nowayout = WATCHDOG_NOWAYOUT; 65static int nowayout = WATCHDOG_NOWAYOUT;
diff --git a/drivers/net/atari_bionet.c b/drivers/net/atari_bionet.c
index 1798ce7262c9..0095384ff454 100644
--- a/drivers/net/atari_bionet.c
+++ b/drivers/net/atari_bionet.c
@@ -155,7 +155,7 @@ static int bionet_close(struct net_device *dev);
155static struct net_device_stats *net_get_stats(struct net_device *dev); 155static struct net_device_stats *net_get_stats(struct net_device *dev);
156static void bionet_tick(unsigned long); 156static void bionet_tick(unsigned long);
157 157
158static struct timer_list bionet_timer = TIMER_INITIALIZER(bionet_tick, 0, 0); 158static DEFINE_TIMER(bionet_timer, bionet_tick, 0, 0);
159 159
160#define STRAM_ADDR(a) (((a) & 0xff000000) == 0) 160#define STRAM_ADDR(a) (((a) & 0xff000000) == 0)
161 161
diff --git a/drivers/net/atari_pamsnet.c b/drivers/net/atari_pamsnet.c
index 81c362c8cb97..8b997809f9de 100644
--- a/drivers/net/atari_pamsnet.c
+++ b/drivers/net/atari_pamsnet.c
@@ -165,7 +165,7 @@ static void pamsnet_tick(unsigned long);
165 165
166static irqreturn_t pamsnet_intr(int irq, void *data, struct pt_regs *fp); 166static irqreturn_t pamsnet_intr(int irq, void *data, struct pt_regs *fp);
167 167
168static struct timer_list pamsnet_timer = TIMER_INITIALIZER(pamsnet_tick, 0, 0); 168static DEFINE_TIMER(pamsnet_timer, pamsnet_tick, 0, 0);
169 169
170#define STRAM_ADDR(a) (((a) & 0xff000000) == 0) 170#define STRAM_ADDR(a) (((a) & 0xff000000) == 0)
171 171
diff --git a/drivers/net/cris/eth_v10.c b/drivers/net/cris/eth_v10.c
index 442670860fca..b68b9cad76e9 100644
--- a/drivers/net/cris/eth_v10.c
+++ b/drivers/net/cris/eth_v10.c
@@ -384,8 +384,8 @@ static unsigned int mdio_phy_addr; /* Transciever address */
384static unsigned int network_tr_ctrl_shadow = 0; 384static unsigned int network_tr_ctrl_shadow = 0;
385 385
386/* Network speed indication. */ 386/* Network speed indication. */
387static struct timer_list speed_timer = TIMER_INITIALIZER(NULL, 0, 0); 387static DEFINE_TIMER(speed_timer, NULL, 0, 0);
388static struct timer_list clear_led_timer = TIMER_INITIALIZER(NULL, 0, 0); 388static DEFINE_TIMER(clear_led_timer, NULL, 0, 0);
389static int current_speed; /* Speed read from transceiver */ 389static int current_speed; /* Speed read from transceiver */
390static int current_speed_selection; /* Speed selected by user */ 390static int current_speed_selection; /* Speed selected by user */
391static unsigned long led_next_time; 391static unsigned long led_next_time;
@@ -393,7 +393,7 @@ static int led_active;
393static int rx_queue_len; 393static int rx_queue_len;
394 394
395/* Duplex */ 395/* Duplex */
396static struct timer_list duplex_timer = TIMER_INITIALIZER(NULL, 0, 0); 396static DEFINE_TIMER(duplex_timer, NULL, 0, 0);
397static int full_duplex; 397static int full_duplex;
398static enum duplex current_duplex; 398static enum duplex current_duplex;
399 399
diff --git a/drivers/net/hamradio/yam.c b/drivers/net/hamradio/yam.c
index 41213ef602dc..f52ee3162c51 100644
--- a/drivers/net/hamradio/yam.c
+++ b/drivers/net/hamradio/yam.c
@@ -170,7 +170,7 @@ static char ax25_bcast[7] =
170static char ax25_test[7] = 170static char ax25_test[7] =
171{'L' << 1, 'I' << 1, 'N' << 1, 'U' << 1, 'X' << 1, ' ' << 1, '1' << 1}; 171{'L' << 1, 'I' << 1, 'N' << 1, 'U' << 1, 'X' << 1, ' ' << 1, '1' << 1};
172 172
173static struct timer_list yam_timer = TIMER_INITIALIZER(NULL, 0, 0); 173static DEFINE_TIMER(yam_timer, NULL, 0, 0);
174 174
175/* --------------------------------------------------------------------- */ 175/* --------------------------------------------------------------------- */
176 176
diff --git a/drivers/sbus/char/aurora.c b/drivers/sbus/char/aurora.c
index d96cc47de566..672f9f2b2163 100644
--- a/drivers/sbus/char/aurora.c
+++ b/drivers/sbus/char/aurora.c
@@ -871,8 +871,7 @@ static irqreturn_t aurora_interrupt(int irq, void * dev_id, struct pt_regs * reg
871#ifdef AURORA_INT_DEBUG 871#ifdef AURORA_INT_DEBUG
872static void aurora_timer (unsigned long ignored); 872static void aurora_timer (unsigned long ignored);
873 873
874static struct timer_list aurora_poll_timer = 874static DEFINE_TIMER(aurora_poll_timer, aurora_timer, 0, 0);
875 TIMER_INITIALIZER(aurora_timer, 0, 0);
876 875
877static void 876static void
878aurora_timer (unsigned long ignored) 877aurora_timer (unsigned long ignored)
diff --git a/drivers/scsi/pluto.c b/drivers/scsi/pluto.c
index 623082d3a83f..c89da7d5b6df 100644
--- a/drivers/scsi/pluto.c
+++ b/drivers/scsi/pluto.c
@@ -95,8 +95,7 @@ int __init pluto_detect(Scsi_Host_Template *tpnt)
95 int i, retry, nplutos; 95 int i, retry, nplutos;
96 fc_channel *fc; 96 fc_channel *fc;
97 Scsi_Device dev; 97 Scsi_Device dev;
98 struct timer_list fc_timer = 98 DEFINE_TIMER(fc_timer, pluto_detect_timeout, 0, 0);
99 TIMER_INITIALIZER(pluto_detect_timeout, 0, 0);
100 99
101 tpnt->proc_name = "pluto"; 100 tpnt->proc_name = "pluto";
102 fcscount = 0; 101 fcscount = 0;
diff --git a/drivers/usb/host/hc_crisv10.c b/drivers/usb/host/hc_crisv10.c
index 81f8f6b7fdce..a8267cf17db4 100644
--- a/drivers/usb/host/hc_crisv10.c
+++ b/drivers/usb/host/hc_crisv10.c
@@ -178,8 +178,8 @@ static __u8 root_hub_hub_des[] =
178 0xff /* __u8 PortPwrCtrlMask; *** 7 ports max *** */ 178 0xff /* __u8 PortPwrCtrlMask; *** 7 ports max *** */
179}; 179};
180 180
181static struct timer_list bulk_start_timer = TIMER_INITIALIZER(NULL, 0, 0); 181static DEFINE_TIMER(bulk_start_timer, NULL, 0, 0);
182static struct timer_list bulk_eot_timer = TIMER_INITIALIZER(NULL, 0, 0); 182static DEFINE_TIMER(bulk_eot_timer, NULL, 0, 0);
183 183
184/* We want the start timer to expire before the eot timer, because the former might start 184/* We want the start timer to expire before the eot timer, because the former might start
185 traffic, thus making it unnecessary for the latter to time out. */ 185 traffic, thus making it unnecessary for the latter to time out. */
diff --git a/include/linux/timer.h b/include/linux/timer.h
index 221f81ac2002..3340f3bd135d 100644
--- a/include/linux/timer.h
+++ b/include/linux/timer.h
@@ -32,6 +32,10 @@ extern struct timer_base_s __init_timer_base;
32 .magic = TIMER_MAGIC, \ 32 .magic = TIMER_MAGIC, \
33 } 33 }
34 34
35#define DEFINE_TIMER(_name, _function, _expires, _data) \
36 struct timer_list _name = \
37 TIMER_INITIALIZER(_function, _expires, _data)
38
35void fastcall init_timer(struct timer_list * timer); 39void fastcall init_timer(struct timer_list * timer);
36 40
37/*** 41/***
diff --git a/mm/page-writeback.c b/mm/page-writeback.c
index a6329fa8f862..0166ea15c9ee 100644
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -368,10 +368,8 @@ int wakeup_pdflush(long nr_pages)
368static void wb_timer_fn(unsigned long unused); 368static void wb_timer_fn(unsigned long unused);
369static void laptop_timer_fn(unsigned long unused); 369static void laptop_timer_fn(unsigned long unused);
370 370
371static struct timer_list wb_timer = 371static DEFINE_TIMER(wb_timer, wb_timer_fn, 0, 0);
372 TIMER_INITIALIZER(wb_timer_fn, 0, 0); 372static DEFINE_TIMER(laptop_mode_wb_timer, laptop_timer_fn, 0, 0);
373static struct timer_list laptop_mode_wb_timer =
374 TIMER_INITIALIZER(laptop_timer_fn, 0, 0);
375 373
376/* 374/*
377 * Periodic writeback of "old" data. 375 * Periodic writeback of "old" data.
diff --git a/net/atm/mpc.c b/net/atm/mpc.c
index 17a81ebe7e6e..526d9531411f 100644
--- a/net/atm/mpc.c
+++ b/net/atm/mpc.c
@@ -105,7 +105,7 @@ extern void mpc_proc_clean(void);
105 105
106struct mpoa_client *mpcs = NULL; /* FIXME */ 106struct mpoa_client *mpcs = NULL; /* FIXME */
107static struct atm_mpoa_qos *qos_head = NULL; 107static struct atm_mpoa_qos *qos_head = NULL;
108static struct timer_list mpc_timer = TIMER_INITIALIZER(NULL, 0, 0); 108static DEFINE_TIMER(mpc_timer, NULL, 0, 0);
109 109
110 110
111static struct mpoa_client *find_mpc_by_itfnum(int itf) 111static struct mpoa_client *find_mpc_by_itfnum(int itf)
diff --git a/net/core/dst.c b/net/core/dst.c
index 334790da9f16..470c05bc4cb2 100644
--- a/net/core/dst.c
+++ b/net/core/dst.c
@@ -39,8 +39,7 @@ static unsigned long dst_gc_timer_inc = DST_GC_MAX;
39static void dst_run_gc(unsigned long); 39static void dst_run_gc(unsigned long);
40static void ___dst_free(struct dst_entry * dst); 40static void ___dst_free(struct dst_entry * dst);
41 41
42static struct timer_list dst_gc_timer = 42static DEFINE_TIMER(dst_gc_timer, dst_run_gc, DST_GC_MIN, 0);
43 TIMER_INITIALIZER(dst_run_gc, DST_GC_MIN, 0);
44 43
45static void dst_run_gc(unsigned long dummy) 44static void dst_run_gc(unsigned long dummy)
46{ 45{
diff --git a/net/decnet/dn_route.c b/net/decnet/dn_route.c
index 2c915f305be3..3407f190afe8 100644
--- a/net/decnet/dn_route.c
+++ b/net/decnet/dn_route.c
@@ -117,8 +117,7 @@ static struct dn_rt_hash_bucket *dn_rt_hash_table;
117static unsigned dn_rt_hash_mask; 117static unsigned dn_rt_hash_mask;
118 118
119static struct timer_list dn_route_timer; 119static struct timer_list dn_route_timer;
120static struct timer_list dn_rt_flush_timer = 120static DEFINE_TIMER(dn_rt_flush_timer, dn_run_flush, 0, 0);
121 TIMER_INITIALIZER(dn_run_flush, 0, 0);
122int decnet_dst_gc_interval = 2; 121int decnet_dst_gc_interval = 2;
123 122
124static struct dst_ops dn_dst_ops = { 123static struct dst_ops dn_dst_ops = {
diff --git a/net/ipv4/inetpeer.c b/net/ipv4/inetpeer.c
index f84ba9c96551..2fc3fd38924f 100644
--- a/net/ipv4/inetpeer.c
+++ b/net/ipv4/inetpeer.c
@@ -100,8 +100,7 @@ DEFINE_SPINLOCK(inet_peer_unused_lock);
100#define PEER_MAX_CLEANUP_WORK 30 100#define PEER_MAX_CLEANUP_WORK 30
101 101
102static void peer_check_expire(unsigned long dummy); 102static void peer_check_expire(unsigned long dummy);
103static struct timer_list peer_periodic_timer = 103static DEFINE_TIMER(peer_periodic_timer, peer_check_expire, 0, 0);
104 TIMER_INITIALIZER(peer_check_expire, 0, 0);
105 104
106/* Exported for sysctl_net_ipv4. */ 105/* Exported for sysctl_net_ipv4. */
107int inet_peer_gc_mintime = 10 * HZ, 106int inet_peer_gc_mintime = 10 * HZ,
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index 6d6fb74f3b52..2fea3f4402a0 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -123,8 +123,7 @@ DEFINE_RWLOCK(addrconf_lock);
123 123
124static void addrconf_verify(unsigned long); 124static void addrconf_verify(unsigned long);
125 125
126static struct timer_list addr_chk_timer = 126static DEFINE_TIMER(addr_chk_timer, addrconf_verify, 0, 0);
127 TIMER_INITIALIZER(addrconf_verify, 0, 0);
128static DEFINE_SPINLOCK(addrconf_verify_lock); 127static DEFINE_SPINLOCK(addrconf_verify_lock);
129 128
130static void addrconf_join_anycast(struct inet6_ifaddr *ifp); 129static void addrconf_join_anycast(struct inet6_ifaddr *ifp);
diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c
index 16af874c9e8f..4fcc5a7acf6e 100644
--- a/net/ipv6/ip6_fib.c
+++ b/net/ipv6/ip6_fib.c
@@ -92,7 +92,7 @@ static struct fib6_node * fib6_repair_tree(struct fib6_node *fn);
92 92
93static __u32 rt_sernum; 93static __u32 rt_sernum;
94 94
95static struct timer_list ip6_fib_timer = TIMER_INITIALIZER(fib6_run_gc, 0, 0); 95static DEFINE_TIMER(ip6_fib_timer, fib6_run_gc, 0, 0);
96 96
97struct fib6_walker_t fib6_walker_list = { 97struct fib6_walker_t fib6_walker_list = {
98 .prev = &fib6_walker_list, 98 .prev = &fib6_walker_list,
diff --git a/net/ipv6/ip6_flowlabel.c b/net/ipv6/ip6_flowlabel.c
index a7db762de14a..f841bde30c18 100644
--- a/net/ipv6/ip6_flowlabel.c
+++ b/net/ipv6/ip6_flowlabel.c
@@ -50,7 +50,7 @@ static atomic_t fl_size = ATOMIC_INIT(0);
50static struct ip6_flowlabel *fl_ht[FL_HASH_MASK+1]; 50static struct ip6_flowlabel *fl_ht[FL_HASH_MASK+1];
51 51
52static void ip6_fl_gc(unsigned long dummy); 52static void ip6_fl_gc(unsigned long dummy);
53static struct timer_list ip6_fl_gc_timer = TIMER_INITIALIZER(ip6_fl_gc, 0, 0); 53static DEFINE_TIMER(ip6_fl_gc_timer, ip6_fl_gc, 0, 0);
54 54
55/* FL hash table lock: it protects only of GC */ 55/* FL hash table lock: it protects only of GC */
56 56
diff --git a/net/netrom/nr_loopback.c b/net/netrom/nr_loopback.c
index 165b2abce110..e856ae1b360a 100644
--- a/net/netrom/nr_loopback.c
+++ b/net/netrom/nr_loopback.c
@@ -17,7 +17,7 @@
17static void nr_loopback_timer(unsigned long); 17static void nr_loopback_timer(unsigned long);
18 18
19static struct sk_buff_head loopback_queue; 19static struct sk_buff_head loopback_queue;
20static struct timer_list loopback_timer = TIMER_INITIALIZER(nr_loopback_timer, 0, 0); 20static DEFINE_TIMER(loopback_timer, nr_loopback_timer, 0, 0);
21 21
22void __init nr_loopback_init(void) 22void __init nr_loopback_init(void)
23{ 23{
diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c
index 737681cb9a92..31570b9a6e9a 100644
--- a/net/sched/sch_api.c
+++ b/net/sched/sch_api.c
@@ -1194,7 +1194,7 @@ EXPORT_SYMBOL(psched_time_base);
1194 * with 32-bit get_cycles(). Safe up to 4GHz CPU. 1194 * with 32-bit get_cycles(). Safe up to 4GHz CPU.
1195 */ 1195 */
1196static void psched_tick(unsigned long); 1196static void psched_tick(unsigned long);
1197static struct timer_list psched_timer = TIMER_INITIALIZER(psched_tick, 0, 0); 1197static DEFINE_TIMER(psched_timer, psched_tick, 0, 0);
1198 1198
1199static void psched_tick(unsigned long dummy) 1199static void psched_tick(unsigned long dummy)
1200{ 1200{
diff --git a/sound/oss/midibuf.c b/sound/oss/midibuf.c
index b2676fa34630..6982556ded56 100644
--- a/sound/oss/midibuf.c
+++ b/sound/oss/midibuf.c
@@ -50,7 +50,7 @@ static struct midi_parms parms[MAX_MIDI_DEV];
50static void midi_poll(unsigned long dummy); 50static void midi_poll(unsigned long dummy);
51 51
52 52
53static struct timer_list poll_timer = TIMER_INITIALIZER(midi_poll, 0, 0); 53static DEFINE_TIMER(poll_timer, midi_poll, 0, 0);
54 54
55static volatile int open_devs; 55static volatile int open_devs;
56static DEFINE_SPINLOCK(lock); 56static DEFINE_SPINLOCK(lock);
diff --git a/sound/oss/soundcard.c b/sound/oss/soundcard.c
index a686be936aff..95fa81e26de2 100644
--- a/sound/oss/soundcard.c
+++ b/sound/oss/soundcard.c
@@ -681,8 +681,7 @@ static void do_sequencer_timer(unsigned long dummy)
681} 681}
682 682
683 683
684static struct timer_list seq_timer = 684static DEFINE_TIMER(seq_timer, do_sequencer_timer, 0, 0);
685 TIMER_INITIALIZER(do_sequencer_timer, 0, 0);
686 685
687void request_sound_timer(int count) 686void request_sound_timer(int count)
688{ 687{
diff --git a/sound/oss/sys_timer.c b/sound/oss/sys_timer.c
index 6afe29b763b7..c9d04518b172 100644
--- a/sound/oss/sys_timer.c
+++ b/sound/oss/sys_timer.c
@@ -28,8 +28,7 @@ static unsigned long prev_event_time;
28 28
29static void poll_def_tmr(unsigned long dummy); 29static void poll_def_tmr(unsigned long dummy);
30static DEFINE_SPINLOCK(lock); 30static DEFINE_SPINLOCK(lock);
31 31static DEFINE_TIMER(def_tmr, poll_def_tmr, 0, 0);
32static struct timer_list def_tmr = TIMER_INITIALIZER(poll_def_tmr, 0, 0);
33 32
34static unsigned long 33static unsigned long
35tmr2ticks(int tmr_value) 34tmr2ticks(int tmr_value)
diff --git a/sound/oss/uart6850.c b/sound/oss/uart6850.c
index be00cf128651..74ae75f9e2dc 100644
--- a/sound/oss/uart6850.c
+++ b/sound/oss/uart6850.c
@@ -78,8 +78,7 @@ static void (*midi_input_intr) (int dev, unsigned char data);
78static void poll_uart6850(unsigned long dummy); 78static void poll_uart6850(unsigned long dummy);
79 79
80 80
81static struct timer_list uart6850_timer = 81static DEFINE_TIMER(uart6850_timer, poll_uart6850, 0, 0);
82 TIMER_INITIALIZER(poll_uart6850, 0, 0);
83 82
84static void uart6850_input_loop(void) 83static void uart6850_input_loop(void)
85{ 84{