aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/trace/trace_mmiotrace.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-11-30 13:05:31 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2008-11-30 13:05:31 -0800
commit7bbc67fbf60b698b43692fc6ea16c526bf1c5e26 (patch)
tree35b4c929ecea3d3fc54f221501a25c136bd6b1a6 /kernel/trace/trace_mmiotrace.c
parent66a45cc4cc1c1f7d1ccae4d0fee261eab5560682 (diff)
parent4f5a7f40ddbae98569acbb99118a98570315579c (diff)
downloadkernel_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.c16
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;
}