|
@@ -70,7 +70,7 @@ char *softirq_to_name[NR_SOFTIRQS] = {
|
|
|
static void wakeup_softirqd(void)
|
|
|
{
|
|
|
/* Interrupts are disabled: no need to stop preemption */
|
|
|
- struct task_struct *tsk = __get_cpu_var(ksoftirqd);
|
|
|
+ struct task_struct *tsk = __this_cpu_read(ksoftirqd);
|
|
|
|
|
|
if (tsk && tsk->state != TASK_RUNNING)
|
|
|
wake_up_process(tsk);
|
|
@@ -388,8 +388,8 @@ void __tasklet_schedule(struct tasklet_struct *t)
|
|
|
|
|
|
local_irq_save(flags);
|
|
|
t->next = NULL;
|
|
|
- *__get_cpu_var(tasklet_vec).tail = t;
|
|
|
- __get_cpu_var(tasklet_vec).tail = &(t->next);
|
|
|
+ *__this_cpu_read(tasklet_vec.tail) = t;
|
|
|
+ __this_cpu_write(tasklet_vec.tail, &(t->next));
|
|
|
raise_softirq_irqoff(TASKLET_SOFTIRQ);
|
|
|
local_irq_restore(flags);
|
|
|
}
|
|
@@ -402,8 +402,8 @@ void __tasklet_hi_schedule(struct tasklet_struct *t)
|
|
|
|
|
|
local_irq_save(flags);
|
|
|
t->next = NULL;
|
|
|
- *__get_cpu_var(tasklet_hi_vec).tail = t;
|
|
|
- __get_cpu_var(tasklet_hi_vec).tail = &(t->next);
|
|
|
+ *__this_cpu_read(tasklet_hi_vec.tail) = t;
|
|
|
+ __this_cpu_write(tasklet_hi_vec.tail, &(t->next));
|
|
|
raise_softirq_irqoff(HI_SOFTIRQ);
|
|
|
local_irq_restore(flags);
|
|
|
}
|
|
@@ -414,8 +414,8 @@ void __tasklet_hi_schedule_first(struct tasklet_struct *t)
|
|
|
{
|
|
|
BUG_ON(!irqs_disabled());
|
|
|
|
|
|
- t->next = __get_cpu_var(tasklet_hi_vec).head;
|
|
|
- __get_cpu_var(tasklet_hi_vec).head = t;
|
|
|
+ t->next = __this_cpu_read(tasklet_hi_vec.head);
|
|
|
+ __this_cpu_write(tasklet_hi_vec.head, t);
|
|
|
__raise_softirq_irqoff(HI_SOFTIRQ);
|
|
|
}
|
|
|
|
|
@@ -426,9 +426,9 @@ static void tasklet_action(struct softirq_action *a)
|
|
|
struct tasklet_struct *list;
|
|
|
|
|
|
local_irq_disable();
|
|
|
- list = __get_cpu_var(tasklet_vec).head;
|
|
|
- __get_cpu_var(tasklet_vec).head = NULL;
|
|
|
- __get_cpu_var(tasklet_vec).tail = &__get_cpu_var(tasklet_vec).head;
|
|
|
+ list = __this_cpu_read(tasklet_vec.head);
|
|
|
+ __this_cpu_write(tasklet_vec.head, NULL);
|
|
|
+ __this_cpu_write(tasklet_vec.tail, &__get_cpu_var(tasklet_vec).head);
|
|
|
local_irq_enable();
|
|
|
|
|
|
while (list) {
|
|
@@ -449,8 +449,8 @@ static void tasklet_action(struct softirq_action *a)
|
|
|
|
|
|
local_irq_disable();
|
|
|
t->next = NULL;
|
|
|
- *__get_cpu_var(tasklet_vec).tail = t;
|
|
|
- __get_cpu_var(tasklet_vec).tail = &(t->next);
|
|
|
+ *__this_cpu_read(tasklet_vec.tail) = t;
|
|
|
+ __this_cpu_write(tasklet_vec.tail, &(t->next));
|
|
|
__raise_softirq_irqoff(TASKLET_SOFTIRQ);
|
|
|
local_irq_enable();
|
|
|
}
|
|
@@ -461,9 +461,9 @@ static void tasklet_hi_action(struct softirq_action *a)
|
|
|
struct tasklet_struct *list;
|
|
|
|
|
|
local_irq_disable();
|
|
|
- list = __get_cpu_var(tasklet_hi_vec).head;
|
|
|
- __get_cpu_var(tasklet_hi_vec).head = NULL;
|
|
|
- __get_cpu_var(tasklet_hi_vec).tail = &__get_cpu_var(tasklet_hi_vec).head;
|
|
|
+ list = __this_cpu_read(tasklet_hi_vec.head);
|
|
|
+ __this_cpu_write(tasklet_hi_vec.head, NULL);
|
|
|
+ __this_cpu_write(tasklet_hi_vec.tail, &__get_cpu_var(tasklet_hi_vec).head);
|
|
|
local_irq_enable();
|
|
|
|
|
|
while (list) {
|
|
@@ -484,8 +484,8 @@ static void tasklet_hi_action(struct softirq_action *a)
|
|
|
|
|
|
local_irq_disable();
|
|
|
t->next = NULL;
|
|
|
- *__get_cpu_var(tasklet_hi_vec).tail = t;
|
|
|
- __get_cpu_var(tasklet_hi_vec).tail = &(t->next);
|
|
|
+ *__this_cpu_read(tasklet_hi_vec.tail) = t;
|
|
|
+ __this_cpu_write(tasklet_hi_vec.tail, &(t->next));
|
|
|
__raise_softirq_irqoff(HI_SOFTIRQ);
|
|
|
local_irq_enable();
|
|
|
}
|
|
@@ -802,16 +802,16 @@ static void takeover_tasklets(unsigned int cpu)
|
|
|
|
|
|
/* Find end, append list for that CPU. */
|
|
|
if (&per_cpu(tasklet_vec, cpu).head != per_cpu(tasklet_vec, cpu).tail) {
|
|
|
- *(__get_cpu_var(tasklet_vec).tail) = per_cpu(tasklet_vec, cpu).head;
|
|
|
- __get_cpu_var(tasklet_vec).tail = per_cpu(tasklet_vec, cpu).tail;
|
|
|
+ *__this_cpu_read(tasklet_vec.tail) = per_cpu(tasklet_vec, cpu).head;
|
|
|
+ this_cpu_write(tasklet_vec.tail, per_cpu(tasklet_vec, cpu).tail);
|
|
|
per_cpu(tasklet_vec, cpu).head = NULL;
|
|
|
per_cpu(tasklet_vec, cpu).tail = &per_cpu(tasklet_vec, cpu).head;
|
|
|
}
|
|
|
raise_softirq_irqoff(TASKLET_SOFTIRQ);
|
|
|
|
|
|
if (&per_cpu(tasklet_hi_vec, cpu).head != per_cpu(tasklet_hi_vec, cpu).tail) {
|
|
|
- *__get_cpu_var(tasklet_hi_vec).tail = per_cpu(tasklet_hi_vec, cpu).head;
|
|
|
- __get_cpu_var(tasklet_hi_vec).tail = per_cpu(tasklet_hi_vec, cpu).tail;
|
|
|
+ *__this_cpu_read(tasklet_hi_vec.tail) = per_cpu(tasklet_hi_vec, cpu).head;
|
|
|
+ __this_cpu_write(tasklet_hi_vec.tail, per_cpu(tasklet_hi_vec, cpu).tail);
|
|
|
per_cpu(tasklet_hi_vec, cpu).head = NULL;
|
|
|
per_cpu(tasklet_hi_vec, cpu).tail = &per_cpu(tasklet_hi_vec, cpu).head;
|
|
|
}
|