Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[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
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -494,7 +494,7 @@ void invalidate_interrupt7(void);
void thermal_interrupt(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 */
	udelay(10);
@@ -505,13 +505,13 @@ static void setup_timer(void)

static int timer_resume(struct sys_device *dev)
{
	setup_timer();
	setup_timer_hardware();
	return 0;
}

void i8254_timer_resume(void)
{
	setup_timer();
	setup_timer_hardware();
}

static struct sysdev_class timer_sysclass = {
@@ -594,7 +594,7 @@ void __init init_IRQ(void)
	 * Set the clock to HZ Hz, we already have a valid
	 * vector now:
	 */
	setup_timer();
	setup_timer_hardware();

	if (!acpi_ioapic)
		setup_irq(2, &irq2);
+9 −0
Original line number Diff line number Diff line
@@ -38,6 +38,15 @@ extern struct timer_base_s __init_timer_base;

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: the timer in question
+2 −6
Original line number Diff line number Diff line
@@ -1146,12 +1146,8 @@ fastcall signed long __sched schedule_timeout(signed long timeout)

	expire = timeout + jiffies;

	init_timer(&timer);
	timer.expires = expire;
	timer.data = (unsigned long) current;
	timer.function = process_timeout;

	add_timer(&timer);
	setup_timer(&timer, process_timeout, (unsigned long)current);
	__mod_timer(&timer, expire);
	schedule();
	del_singleshot_timer_sync(&timer);