In some cases (for instance with kernel threads) it may be desireable to use on-stack deferrable timers to get their power saving benefits. Add interfaces to support this for the IPS driver.
Showing the changes to kernel/timer.c (1 of 2 files). Show all
Unified · Split
| @@ -577,6 +577,19 @@ static void __init_timer(struct timer_list *timer, · 576 unmodified lines | ||
| 577 | 577 | lockdep_init_map(&timer->lockdep_map, name, key, 0); |
| 578 | 578 | } |
| 579 | 579 | |
| 580 | +void setup_deferrable_timer_on_stack_key(struct timer_list *timer, | |
| 581 | + const char *name, | |
| 582 | + struct lock_class_key *key, | |
| 583 | + void (*function)(unsigned long), | |
| 584 | + unsigned long data) | |
| 585 | +{ | |
| 586 | + timer->function = function; | |
| 587 | + timer->data = data; | |
| 588 | + init_timer_on_stack_key(timer, name, key); | |
| 589 | + timer_set_deferrable(timer); | |
| 590 | +} | |
| 591 | +EXPORT_SYMBOL_GPL(setup_deferrable_timer_on_stack_key); | |
| 592 | + | |
| 580 | 593 | /** |
| 581 | 594 | * init_timer_key - initialize a timer |
| 582 | 595 | * @timer: the timer to be initialized |