android_kernel_motorola_sm6375/kernel/trace
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Steven Rostedt e4906eff9e ring-buffer: convert cpu buffer entries to local_t
The entries counter in cpu buffer is not atomic. It can be updated by
other interrupts or from another CPU (readers).

But making entries into "atomic_t" causes an atomic operation that can
hurt performance. Instead we convert it to a local_t that will increment
a counter with a local CPU atomic operation (if the arch supports it).

Instead of fighting with readers and overwrites that decrement the counter,
I added a "read" counter. Every time a reader reads an entry it is
incremented.

We already have a overrun counter and with that, the entries counter and
the read counter, we can calculate the total number of entries in the
buffer with:

  (entries - overrun) - read

As long as the total number of entries in the ring buffer is less than
the word size, this will work. But since the entries counter was previously
a long, this is no different than what we had before.

Thanks to Andrew Morton for pointing out in the first version that
atomic_t does not replace unsigned long. I switched to atomic_long_t
even though it is signed. A negative count is most likely a bug.

[ Impact: keep accurate count of cpu buffer entries ]

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
2009-05-05 14:25:44 -04:00
..
blktrace.c blktrace: fix context-info when mixed-using blk tracer and trace events 2009-04-16 10:11:01 +02:00
ftrace.c ftrace: use module notifier for function tracer 2009-04-17 16:59:15 +02:00
Kconfig tracing: rename EVENT_TRACER config to ENABLE_EVENT_TRACING 2009-04-20 17:55:35 +02:00
kmemtrace.c
Makefile tracing/events: move the ftrace event tracing code to core 2009-04-14 12:57:59 -04:00
ring_buffer.c ring-buffer: convert cpu buffer entries to local_t 2009-05-05 14:25:44 -04:00
trace.c tracing: export stats of ring buffers to userspace 2009-05-05 13:52:02 -04:00
trace.h tracing/filters: a better event parser 2009-04-29 14:06:11 +02:00
trace_boot.c
trace_branch.c
trace_clock.c
trace_event_profile.c tracing/events: convert event call sites to use a link list 2009-04-14 12:58:00 -04:00
trace_event_types.h tracing/filters: distinguish between signed and unsigned fields 2009-04-29 14:06:03 +02:00
trace_events.c tracing/filters: a better event parser 2009-04-29 14:06:11 +02:00
trace_events_filter.c tracing/filters: a better event parser 2009-04-29 14:06:11 +02:00
trace_export.c tracing/filters: distinguish between signed and unsigned fields 2009-04-29 14:06:03 +02:00
trace_functions.c
trace_functions_graph.c
trace_hw_branches.c
trace_irqsoff.c
trace_mmiotrace.c
trace_nop.c
trace_output.c tracing/events: reuse trace event ids after overflow 2009-04-24 23:06:00 -04:00
trace_output.h tracing/events: move declarations from trace directory to core include 2009-04-14 12:57:58 -04:00
trace_power.c
trace_printk.c
trace_sched_switch.c tracing/events: move trace point headers into include/trace/events 2009-04-14 22:05:43 -04:00
trace_sched_wakeup.c tracing/wakeup: move access to wakeup_cpu into spinlock 2009-04-23 23:01:36 -04:00
trace_selftest.c
trace_selftest_dynamic.c
trace_stack.c
trace_stat.c
trace_stat.h
trace_syscalls.c
trace_sysprof.c
trace_workqueue.c