| From: Thomas Gleixner <tglx@linutronix.de> |
| Date: Thu, 31 Aug 2017 11:03:11 +0000 |
| Subject: [PATCH 22/25] softirq: Remove tasklet_hrtimer |
| |
| There are no more tasklet_hrtimer users of this interface. |
| Remove it. |
| |
| Signed-off-by: Thomas Gleixner <tglx@linutronix.de> |
| Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de> |
| Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> |
| --- |
| include/linux/interrupt.h | 25 ---------------------- |
| kernel/softirq.c | 51 ---------------------------------------------- |
| 2 files changed, 76 deletions(-) |
| |
| --- a/include/linux/interrupt.h |
| +++ b/include/linux/interrupt.h |
| @@ -622,31 +622,6 @@ extern void tasklet_kill_immediate(struc |
| extern void tasklet_init(struct tasklet_struct *t, |
| void (*func)(unsigned long), unsigned long data); |
| |
| -struct tasklet_hrtimer { |
| - struct hrtimer timer; |
| - struct tasklet_struct tasklet; |
| - enum hrtimer_restart (*function)(struct hrtimer *); |
| -}; |
| - |
| -extern void |
| -tasklet_hrtimer_init(struct tasklet_hrtimer *ttimer, |
| - enum hrtimer_restart (*function)(struct hrtimer *), |
| - clockid_t which_clock, enum hrtimer_mode mode); |
| - |
| -static inline |
| -void tasklet_hrtimer_start(struct tasklet_hrtimer *ttimer, ktime_t time, |
| - const enum hrtimer_mode mode) |
| -{ |
| - hrtimer_start(&ttimer->timer, time, mode); |
| -} |
| - |
| -static inline |
| -void tasklet_hrtimer_cancel(struct tasklet_hrtimer *ttimer) |
| -{ |
| - hrtimer_cancel(&ttimer->timer); |
| - tasklet_kill(&ttimer->tasklet); |
| -} |
| - |
| /* |
| * Autoprobing for irqs: |
| * |
| --- a/kernel/softirq.c |
| +++ b/kernel/softirq.c |
| @@ -594,57 +594,6 @@ void tasklet_kill(struct tasklet_struct |
| } |
| EXPORT_SYMBOL(tasklet_kill); |
| |
| -/* |
| - * tasklet_hrtimer |
| - */ |
| - |
| -/* |
| - * The trampoline is called when the hrtimer expires. It schedules a tasklet |
| - * to run __tasklet_hrtimer_trampoline() which in turn will call the intended |
| - * hrtimer callback, but from softirq context. |
| - */ |
| -static enum hrtimer_restart __hrtimer_tasklet_trampoline(struct hrtimer *timer) |
| -{ |
| - struct tasklet_hrtimer *ttimer = |
| - container_of(timer, struct tasklet_hrtimer, timer); |
| - |
| - tasklet_hi_schedule(&ttimer->tasklet); |
| - return HRTIMER_NORESTART; |
| -} |
| - |
| -/* |
| - * Helper function which calls the hrtimer callback from |
| - * tasklet/softirq context |
| - */ |
| -static void __tasklet_hrtimer_trampoline(unsigned long data) |
| -{ |
| - struct tasklet_hrtimer *ttimer = (void *)data; |
| - enum hrtimer_restart restart; |
| - |
| - restart = ttimer->function(&ttimer->timer); |
| - if (restart != HRTIMER_NORESTART) |
| - hrtimer_restart(&ttimer->timer); |
| -} |
| - |
| -/** |
| - * tasklet_hrtimer_init - Init a tasklet/hrtimer combo for softirq callbacks |
| - * @ttimer: tasklet_hrtimer which is initialized |
| - * @function: hrtimer callback function which gets called from softirq context |
| - * @which_clock: clock id (CLOCK_MONOTONIC/CLOCK_REALTIME) |
| - * @mode: hrtimer mode (HRTIMER_MODE_ABS/HRTIMER_MODE_REL) |
| - */ |
| -void tasklet_hrtimer_init(struct tasklet_hrtimer *ttimer, |
| - enum hrtimer_restart (*function)(struct hrtimer *), |
| - clockid_t which_clock, enum hrtimer_mode mode) |
| -{ |
| - hrtimer_init(&ttimer->timer, which_clock, mode); |
| - ttimer->timer.function = __hrtimer_tasklet_trampoline; |
| - tasklet_init(&ttimer->tasklet, __tasklet_hrtimer_trampoline, |
| - (unsigned long)ttimer); |
| - ttimer->function = function; |
| -} |
| -EXPORT_SYMBOL_GPL(tasklet_hrtimer_init); |
| - |
| void __init softirq_init(void) |
| { |
| int cpu; |