History

[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.

Oleg Nesterov committed 21 years ago

Commit a8db2db1 parent 9e4e23b3 files · +15 −10Browse files

Unified · Split

3 files
  1. arch/x86_64/kernel/i8259.c +4 −4
  2. include/linux/timer.h +9 −0
  3. kernel/timer.c +2 −6
arch/x86_64/kernel/i8259.c+4−4
@@ -494,7 +494,7 @@ void invalidate_interrupt7(void); · 493 unmodified lines
494void thermal_interrupt(void);494void thermal_interrupt(void);
495void i8254_timer_resume(void);495void i8254_timer_resume(void);
496 496
497static void setup_timer(void)497static void setup_timer_hardware(void)
498{498{
499 outb_p(0x34,0x43); /* binary, mode 2, LSB/MSB, ch 0 */499 outb_p(0x34,0x43); /* binary, mode 2, LSB/MSB, ch 0 */
500 udelay(10);500 udelay(10);
@@ -505,13 +505,13 @@ static void setup_timer(void) · 4 unmodified lines
505 505
506static int timer_resume(struct sys_device *dev)506static int timer_resume(struct sys_device *dev)
507{507{
508 setup_timer();508 setup_timer_hardware();
509 return 0;509 return 0;
510}510}
511 511
512void i8254_timer_resume(void)512void i8254_timer_resume(void)
513{513{
514 setup_timer();514 setup_timer_hardware();
515}515}
516 516
517static struct sysdev_class timer_sysclass = {517static struct sysdev_class timer_sysclass = {
@@ -594,7 +594,7 @@ void __init init_IRQ(void) · 76 unmodified lines
594 * Set the clock to HZ Hz, we already have a valid594 * Set the clock to HZ Hz, we already have a valid
595 * vector now:595 * vector now:
596 */596 */
597 setup_timer();597 setup_timer_hardware();
598 598
599 if (!acpi_ioapic)599 if (!acpi_ioapic)
600 setup_irq(2, &irq2);600 setup_irq(2, &irq2);
include/linux/timer.h+9−0
@@ -38,6 +38,15 @@ extern struct timer_base_s __init_timer_base; · 37 unmodified lines
38 38
39void fastcall init_timer(struct timer_list * timer);39void fastcall init_timer(struct timer_list * timer);
40 40
41static inline void setup_timer(struct timer_list * timer,
42 void (*function)(unsigned long),
43 unsigned long data)
44{
45 timer->function = function;
46 timer->data = data;
47 init_timer(timer);
48}
49
41/***50/***
42 * timer_pending - is a timer pending?51 * timer_pending - is a timer pending?
43 * @timer: the timer in question52 * @timer: the timer in question
kernel/timer.c+2−6
@@ -1146,12 +1146,8 @@ fastcall signed long __sched schedule_timeout(signed long timeout) · 1145 unmodified lines
1146 1146
1147 expire = timeout + jiffies;1147 expire = timeout + jiffies;
1148 1148
1149 init_timer(&timer);1149 setup_timer(&timer, process_timeout, (unsigned long)current);
1150 timer.expires = expire;1150 __mod_timer(&timer, expire);
1151 timer.data = (unsigned long) current;
1152 timer.function = process_timeout;
1153
1154 add_timer(&timer);
1155 schedule();1151 schedule();
1156 del_singleshot_timer_sync(&timer);1152 del_singleshot_timer_sync(&timer);
1157 1153

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t