Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 146045
b: refs/heads/master
c: aa18efb
h: refs/heads/master
i:
  146043: 9649a00
v: v3
  • Loading branch information
Steven Rostedt authored and Steven Rostedt committed Apr 20, 2009
1 parent f876e00 commit 2dacc18
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 30 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: e395898e98119085f666febbc7b631dd69bc637f
refs/heads/master: aa18efb2a2f07e1cf062039848e9d369bb358724
45 changes: 16 additions & 29 deletions trunk/kernel/trace/ring_buffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -1481,47 +1481,34 @@ rb_reserve_next_event(struct ring_buffer_per_cpu *cpu_buffer,
return event;
}

static int trace_irq_level(void)
{
return (hardirq_count() >> HARDIRQ_SHIFT) +
(softirq_count() >> + SOFTIRQ_SHIFT) +
!!in_nmi();
}
#define TRACE_RECURSIVE_DEPTH 16

static int trace_recursive_lock(void)
{
int level;

level = trace_irq_level();
current->trace_recursion++;

if (unlikely(current->trace_recursion & (1 << level))) {
/* Disable all tracing before we do anything else */
tracing_off_permanent();
if (likely(current->trace_recursion < TRACE_RECURSIVE_DEPTH))
return 0;

printk_once(KERN_WARNING "Tracing recursion: "
"HC[%lu]:SC[%lu]:NMI[%lu]\n",
hardirq_count() >> HARDIRQ_SHIFT,
softirq_count() >> SOFTIRQ_SHIFT,
in_nmi());
/* Disable all tracing before we do anything else */
tracing_off_permanent();

WARN_ON_ONCE(1);
return -1;
}
printk_once(KERN_WARNING "Tracing recursion: depth[%d]:"
"HC[%lu]:SC[%lu]:NMI[%lu]\n",
current->trace_recursion,
hardirq_count() >> HARDIRQ_SHIFT,
softirq_count() >> SOFTIRQ_SHIFT,
in_nmi());

current->trace_recursion |= 1 << level;

return 0;
WARN_ON_ONCE(1);
return -1;
}

static void trace_recursive_unlock(void)
{
int level;

level = trace_irq_level();

WARN_ON_ONCE(!current->trace_recursion & (1 << level));
WARN_ON_ONCE(!current->trace_recursion);

current->trace_recursion &= ~(1 << level);
current->trace_recursion--;
}

static DEFINE_PER_CPU(int, rb_need_resched);
Expand Down

0 comments on commit 2dacc18

Please sign in to comment.