Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 100685
b: refs/heads/master
c: 0f476b6
h: refs/heads/master
i:
  100683: 90d26e6
v: v3
  • Loading branch information
Johannes Berg authored and Ingo Molnar committed Jun 20, 2008
1 parent ee75481 commit f9a4624
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 38 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 4620b49f76096fa5183eecad7d689faa898a4c82
refs/heads/master: 0f476b6d91a1395bda6464e653ce66ea9bea7167
48 changes: 11 additions & 37 deletions trunk/kernel/softirq.c
Original file line number Diff line number Diff line change
Expand Up @@ -131,23 +131,17 @@ void _local_bh_enable(void)

EXPORT_SYMBOL(_local_bh_enable);

void local_bh_enable(void)
static inline void _local_bh_enable_ip(unsigned long ip)
{
WARN_ON_ONCE(in_irq() || irqs_disabled());
#ifdef CONFIG_TRACE_IRQFLAGS
unsigned long flags;

WARN_ON_ONCE(in_irq());
#endif
WARN_ON_ONCE(irqs_disabled());

#ifdef CONFIG_TRACE_IRQFLAGS
local_irq_save(flags);
local_irq_disable();
#endif
/*
* Are softirqs going to be turned on now:
*/
if (softirq_count() == SOFTIRQ_OFFSET)
trace_softirqs_on((unsigned long)__builtin_return_address(0));
trace_softirqs_on(ip);
/*
* Keep preemption disabled until we are done with
* softirq processing:
Expand All @@ -159,40 +153,20 @@ void local_bh_enable(void)

dec_preempt_count();
#ifdef CONFIG_TRACE_IRQFLAGS
local_irq_restore(flags);
local_irq_enable();
#endif
preempt_check_resched();
}

void local_bh_enable(void)
{
_local_bh_enable_ip((unsigned long)__builtin_return_address(0));
}
EXPORT_SYMBOL(local_bh_enable);

void local_bh_enable_ip(unsigned long ip)
{
#ifdef CONFIG_TRACE_IRQFLAGS
unsigned long flags;

WARN_ON_ONCE(in_irq());

local_irq_save(flags);
#endif
/*
* Are softirqs going to be turned on now:
*/
if (softirq_count() == SOFTIRQ_OFFSET)
trace_softirqs_on(ip);
/*
* Keep preemption disabled until we are done with
* softirq processing:
*/
sub_preempt_count(SOFTIRQ_OFFSET - 1);

if (unlikely(!in_interrupt() && local_softirq_pending()))
do_softirq();

dec_preempt_count();
#ifdef CONFIG_TRACE_IRQFLAGS
local_irq_restore(flags);
#endif
preempt_check_resched();
_local_bh_enable_ip(ip);
}
EXPORT_SYMBOL(local_bh_enable_ip);

Expand Down

0 comments on commit f9a4624

Please sign in to comment.