Commit a8db2db1 authored by Oleg Nesterov's avatar Oleg Nesterov Committed by Linus Torvalds

[PATCH] introduce setup_timer() helper

Every user of init_timer() also needs to initialize ->function and ->data
fields.  This patch adds a simple setup_timer() helper for that.

The schedule_timeout() is patched as an example of usage.
Signed-off-by: default avatarOleg Nesterov <oleg@tv-sign.ru>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 9e4e23bc
...@@ -494,7 +494,7 @@ void invalidate_interrupt7(void); ...@@ -494,7 +494,7 @@ void invalidate_interrupt7(void);
void thermal_interrupt(void); void thermal_interrupt(void);
void i8254_timer_resume(void); void i8254_timer_resume(void);
static void setup_timer(void) static void setup_timer_hardware(void)
{ {
outb_p(0x34,0x43); /* binary, mode 2, LSB/MSB, ch 0 */ outb_p(0x34,0x43); /* binary, mode 2, LSB/MSB, ch 0 */
udelay(10); udelay(10);
...@@ -505,13 +505,13 @@ static void setup_timer(void) ...@@ -505,13 +505,13 @@ static void setup_timer(void)
static int timer_resume(struct sys_device *dev) static int timer_resume(struct sys_device *dev)
{ {
setup_timer(); setup_timer_hardware();
return 0; return 0;
} }
void i8254_timer_resume(void) void i8254_timer_resume(void)
{ {
setup_timer(); setup_timer_hardware();
} }
static struct sysdev_class timer_sysclass = { static struct sysdev_class timer_sysclass = {
...@@ -594,7 +594,7 @@ void __init init_IRQ(void) ...@@ -594,7 +594,7 @@ void __init init_IRQ(void)
* Set the clock to HZ Hz, we already have a valid * Set the clock to HZ Hz, we already have a valid
* vector now: * vector now:
*/ */
setup_timer(); setup_timer_hardware();
if (!acpi_ioapic) if (!acpi_ioapic)
setup_irq(2, &irq2); setup_irq(2, &irq2);
......
...@@ -38,6 +38,15 @@ extern struct timer_base_s __init_timer_base; ...@@ -38,6 +38,15 @@ extern struct timer_base_s __init_timer_base;
void fastcall init_timer(struct timer_list * timer); 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->function = function;
timer->data = data;
init_timer(timer);
}
/*** /***
* timer_pending - is a timer pending? * timer_pending - is a timer pending?
* @timer: the timer in question * @timer: the timer in question
......
...@@ -1146,12 +1146,8 @@ fastcall signed long __sched schedule_timeout(signed long timeout) ...@@ -1146,12 +1146,8 @@ fastcall signed long __sched schedule_timeout(signed long timeout)
expire = timeout + jiffies; expire = timeout + jiffies;
init_timer(&timer); setup_timer(&timer, process_timeout, (unsigned long)current);
timer.expires = expire; __mod_timer(&timer, expire);
timer.data = (unsigned long) current;
timer.function = process_timeout;
add_timer(&timer);
schedule(); schedule();
del_singleshot_timer_sync(&timer); del_singleshot_timer_sync(&timer);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment