aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/softirq.c
diff options
context:
space:
mode:
authorPeter Zijlstra <peterz@infradead.org>2013-09-10 06:15:23 -0400
committerIngo Molnar <mingo@kernel.org>2013-09-25 08:07:54 -0400
commitbdb43806589096ac4272fe1307e789846ac08d7c (patch)
treec854e7e508193766d5cbdd82e8709cfab5ea3be5 /kernel/softirq.c
parent01028747559ac6c6f642a7bbd2875cc4f66b2feb (diff)
sched: Extract the basic add/sub preempt_count modifiers
Rewrite the preempt_count macros in order to extract the 3 basic preempt_count value modifiers: __preempt_count_add() __preempt_count_sub() and the new: __preempt_count_dec_and_test() And since we're at it anyway, replace the unconventional $op_preempt_count names with the more conventional preempt_count_$op. Since these basic operators are equivalent to the previous _notrace() variants, do away with the _notrace() versions. Signed-off-by: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/n/tip-ewbpdbupy9xpsjhg960zwbv8@git.kernel.org Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel/softirq.c')
-rw-r--r--kernel/softirq.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/kernel/softirq.c b/kernel/softirq.c
index a90de70cf1f3..3e88612fc87e 100644
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
@@ -100,13 +100,13 @@ static void __local_bh_disable(unsigned long ip, unsigned int cnt)
100 100
101 raw_local_irq_save(flags); 101 raw_local_irq_save(flags);
102 /* 102 /*
103 * The preempt tracer hooks into add_preempt_count and will break 103 * The preempt tracer hooks into preempt_count_add and will break
104 * lockdep because it calls back into lockdep after SOFTIRQ_OFFSET 104 * lockdep because it calls back into lockdep after SOFTIRQ_OFFSET
105 * is set and before current->softirq_enabled is cleared. 105 * is set and before current->softirq_enabled is cleared.
106 * We must manually increment preempt_count here and manually 106 * We must manually increment preempt_count here and manually
107 * call the trace_preempt_off later. 107 * call the trace_preempt_off later.
108 */ 108 */
109 add_preempt_count_notrace(cnt); 109 __preempt_count_add(cnt);
110 /* 110 /*
111 * Were softirqs turned off above: 111 * Were softirqs turned off above:
112 */ 112 */
@@ -120,7 +120,7 @@ static void __local_bh_disable(unsigned long ip, unsigned int cnt)
120#else /* !CONFIG_TRACE_IRQFLAGS */ 120#else /* !CONFIG_TRACE_IRQFLAGS */
121static inline void __local_bh_disable(unsigned long ip, unsigned int cnt) 121static inline void __local_bh_disable(unsigned long ip, unsigned int cnt)
122{ 122{
123 add_preempt_count(cnt); 123 preempt_count_add(cnt);
124 barrier(); 124 barrier();
125} 125}
126#endif /* CONFIG_TRACE_IRQFLAGS */ 126#endif /* CONFIG_TRACE_IRQFLAGS */
@@ -139,7 +139,7 @@ static void __local_bh_enable(unsigned int cnt)
139 139
140 if (softirq_count() == cnt) 140 if (softirq_count() == cnt)
141 trace_softirqs_on(_RET_IP_); 141 trace_softirqs_on(_RET_IP_);
142 sub_preempt_count(cnt); 142 preempt_count_sub(cnt);
143} 143}
144 144
145/* 145/*
@@ -169,12 +169,12 @@ static inline void _local_bh_enable_ip(unsigned long ip)
169 * Keep preemption disabled until we are done with 169 * Keep preemption disabled until we are done with
170 * softirq processing: 170 * softirq processing:
171 */ 171 */
172 sub_preempt_count(SOFTIRQ_DISABLE_OFFSET - 1); 172 preempt_count_sub(SOFTIRQ_DISABLE_OFFSET - 1);
173 173
174 if (unlikely(!in_interrupt() && local_softirq_pending())) 174 if (unlikely(!in_interrupt() && local_softirq_pending()))
175 do_softirq(); 175 do_softirq();
176 176
177 dec_preempt_count(); 177 preempt_count_dec();
178#ifdef CONFIG_TRACE_IRQFLAGS 178#ifdef CONFIG_TRACE_IRQFLAGS
179 local_irq_enable(); 179 local_irq_enable();
180#endif 180#endif
@@ -360,7 +360,7 @@ void irq_exit(void)
360 360
361 account_irq_exit_time(current); 361 account_irq_exit_time(current);
362 trace_hardirq_exit(); 362 trace_hardirq_exit();
363 sub_preempt_count(HARDIRQ_OFFSET); 363 preempt_count_sub(HARDIRQ_OFFSET);
364 if (!in_interrupt() && local_softirq_pending()) 364 if (!in_interrupt() && local_softirq_pending())
365 invoke_softirq(); 365 invoke_softirq();
366 366