mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-15 16:53:54 +08:00
tasklet: Remove tasklet_kill_immediate
Ever since RCU was converted to softirq, it has no users. Signed-off-by: Davidlohr Bueso <dbueso@suse.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Acked-by: Paul E. McKenney <paulmck@kernel.org> Link: https://lore.kernel.org/r/20210306213658.12862-1-dave@stgolabs.net
This commit is contained in:
parent
cbe16f35be
commit
3a0ade0c52
@ -716,7 +716,6 @@ static inline void tasklet_enable(struct tasklet_struct *t)
|
|||||||
}
|
}
|
||||||
|
|
||||||
extern void tasklet_kill(struct tasklet_struct *t);
|
extern void tasklet_kill(struct tasklet_struct *t);
|
||||||
extern void tasklet_kill_immediate(struct tasklet_struct *t, unsigned int cpu);
|
|
||||||
extern void tasklet_init(struct tasklet_struct *t,
|
extern void tasklet_init(struct tasklet_struct *t,
|
||||||
void (*func)(unsigned long), unsigned long data);
|
void (*func)(unsigned long), unsigned long data);
|
||||||
extern void tasklet_setup(struct tasklet_struct *t,
|
extern void tasklet_setup(struct tasklet_struct *t,
|
||||||
|
@ -658,38 +658,6 @@ static void run_ksoftirqd(unsigned int cpu)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_HOTPLUG_CPU
|
#ifdef CONFIG_HOTPLUG_CPU
|
||||||
/*
|
|
||||||
* tasklet_kill_immediate is called to remove a tasklet which can already be
|
|
||||||
* scheduled for execution on @cpu.
|
|
||||||
*
|
|
||||||
* Unlike tasklet_kill, this function removes the tasklet
|
|
||||||
* _immediately_, even if the tasklet is in TASKLET_STATE_SCHED state.
|
|
||||||
*
|
|
||||||
* When this function is called, @cpu must be in the CPU_DEAD state.
|
|
||||||
*/
|
|
||||||
void tasklet_kill_immediate(struct tasklet_struct *t, unsigned int cpu)
|
|
||||||
{
|
|
||||||
struct tasklet_struct **i;
|
|
||||||
|
|
||||||
BUG_ON(cpu_online(cpu));
|
|
||||||
BUG_ON(test_bit(TASKLET_STATE_RUN, &t->state));
|
|
||||||
|
|
||||||
if (!test_bit(TASKLET_STATE_SCHED, &t->state))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* CPU is dead, so no lock needed. */
|
|
||||||
for (i = &per_cpu(tasklet_vec, cpu).head; *i; i = &(*i)->next) {
|
|
||||||
if (*i == t) {
|
|
||||||
*i = t->next;
|
|
||||||
/* If this was the tail element, move the tail ptr */
|
|
||||||
if (*i == NULL)
|
|
||||||
per_cpu(tasklet_vec, cpu).tail = i;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
BUG();
|
|
||||||
}
|
|
||||||
|
|
||||||
static int takeover_tasklets(unsigned int cpu)
|
static int takeover_tasklets(unsigned int cpu)
|
||||||
{
|
{
|
||||||
/* CPU is dead, so no lock needed. */
|
/* CPU is dead, so no lock needed. */
|
||||||
|
Loading…
Reference in New Issue
Block a user