mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-04-01 12:04:08 +00:00
[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: Oleg Nesterov <oleg@tv-sign.ru> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
9e4e23bccb
commit
a8db2db1e6
3 changed files with 15 additions and 10 deletions
|
@ -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)
|
||||||
|
|
||||||
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)
|
||||||
* 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;
|
||||||
|
|
||||||
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)
|
||||||
|
|
||||||
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);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue