diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-11-30 13:05:31 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-11-30 13:05:31 -0800 |
commit | 7bbc67fbf60b698b43692fc6ea16c526bf1c5e26 (patch) | |
tree | 35b4c929ecea3d3fc54f221501a25c136bd6b1a6 /kernel/trace/trace_mmiotrace.c | |
parent | 66a45cc4cc1c1f7d1ccae4d0fee261eab5560682 (diff) | |
parent | 4f5a7f40ddbae98569acbb99118a98570315579c (diff) | |
download | kernel_samsung_smdk4412-7bbc67fbf60b698b43692fc6ea16c526bf1c5e26.zip kernel_samsung_smdk4412-7bbc67fbf60b698b43692fc6ea16c526bf1c5e26.tar.gz kernel_samsung_smdk4412-7bbc67fbf60b698b43692fc6ea16c526bf1c5e26.tar.bz2 |
Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
ftrace: prevent recursion
tracing, doc: update mmiotrace documentation
x86, mmiotrace: fix buffer overrun detection
function tracing: fix wrong position computing of stack_trace
Diffstat (limited to 'kernel/trace/trace_mmiotrace.c')
-rw-r--r-- | kernel/trace/trace_mmiotrace.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/kernel/trace/trace_mmiotrace.c b/kernel/trace/trace_mmiotrace.c index f284846..e62cbf7 100644 --- a/kernel/trace/trace_mmiotrace.c +++ b/kernel/trace/trace_mmiotrace.c @@ -18,12 +18,14 @@ struct header_iter { static struct trace_array *mmio_trace_array; static bool overrun_detected; +static unsigned long prev_overruns; static void mmio_reset_data(struct trace_array *tr) { int cpu; overrun_detected = false; + prev_overruns = 0; tr->time_start = ftrace_now(tr->cpu); for_each_online_cpu(cpu) @@ -128,16 +130,12 @@ static void mmio_close(struct trace_iterator *iter) static unsigned long count_overruns(struct trace_iterator *iter) { - int cpu; unsigned long cnt = 0; -/* FIXME: */ -#if 0 - for_each_online_cpu(cpu) { - cnt += iter->overrun[cpu]; - iter->overrun[cpu] = 0; - } -#endif - (void)cpu; + unsigned long over = ring_buffer_overruns(iter->tr->buffer); + + if (over > prev_overruns) + cnt = over - prev_overruns; + prev_overruns = over; return cnt; } |