Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 100437
b: refs/heads/master
c: 89b2f97
h: refs/heads/master
i:
  100435: 38e8935
v: v3
  • Loading branch information
Steven Rostedt authored and Thomas Gleixner committed May 23, 2008
1 parent a9f60b4 commit 8fae6d0
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 14 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: 18cef379d30f5ded20cc31d7f2d342639d39919d
refs/heads/master: 89b2f97819dd074297bbe3e19eaa4afcc98845ad
6 changes: 5 additions & 1 deletion trunk/kernel/trace/trace.c
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@ update_max_tr(struct trace_array *tr, struct task_struct *tsk, int cpu)
memcpy(max_tr.data[i], data, sizeof(*data));
data->trace = save_trace;
data->trace_pages = save_pages;
tracing_reset(data);
}

__update_max_tr(tr, tsk, cpu);
Expand Down Expand Up @@ -183,6 +184,7 @@ update_max_tr_single(struct trace_array *tr, struct task_struct *tsk, int cpu)
memcpy(max_tr.data[cpu], data, sizeof(*data));
data->trace = save_trace;
data->trace_pages = save_pages;
tracing_reset(data);

__update_max_tr(tr, tsk, cpu);
spin_unlock(&ftrace_max_lock);
Expand Down Expand Up @@ -877,6 +879,8 @@ print_lat_fmt(struct seq_file *m, struct trace_iterator *iter,
entry->ctx.next_prio,
comm);
break;
default:
seq_printf(m, "Unknown type %d\n", entry->type);
}
}

Expand Down Expand Up @@ -1625,14 +1629,14 @@ __init static int tracer_alloc_buffers(void)
* round up a bit.
*/
global_trace.entries = ENTRIES_PER_PAGE;
max_tr.entries = global_trace.entries;
pages++;

while (global_trace.entries < trace_nr_entries) {
if (trace_alloc_page())
break;
pages++;
}
max_tr.entries = global_trace.entries;

pr_info("tracer: %d pages allocated for %ld",
pages, trace_nr_entries);
Expand Down
27 changes: 15 additions & 12 deletions trunk/kernel/trace/trace_irqsoff.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ static int tracer_enabled __read_mostly;

static DEFINE_PER_CPU(int, tracing_cpu);

static DEFINE_SPINLOCK(max_trace_lock);

enum {
TRACER_IRQS_OFF = (1 << 1),
TRACER_PREEMPT_OFF = (1 << 2),
Expand Down Expand Up @@ -126,7 +128,7 @@ check_critical_timing(struct trace_array *tr,
int cpu)
{
unsigned long latency, t0, t1;
cycle_t T0, T1, T2, delta;
cycle_t T0, T1, delta;
unsigned long flags;

/*
Expand All @@ -142,20 +144,18 @@ check_critical_timing(struct trace_array *tr,
if (!report_latency(delta))
goto out;

ftrace(tr, data, CALLER_ADDR0, parent_ip, flags);
/*
* Update the timestamp, because the trace entry above
* might change it (it can only get larger so the latency
* is fair to be reported):
*/
T2 = now(cpu);
spin_lock(&max_trace_lock);

delta = T2-T0;
/* check if we are still the max latency */
if (!report_latency(delta))
goto out_unlock;

ftrace(tr, data, CALLER_ADDR0, parent_ip, flags);

latency = nsecs_to_usecs(delta);

if (data->critical_sequence != max_sequence)
goto out;
goto out_unlock;

tracing_max_latency = delta;
t0 = nsecs_to_usecs(T0);
Expand Down Expand Up @@ -189,6 +189,9 @@ check_critical_timing(struct trace_array *tr,

max_sequence++;

out_unlock:
spin_unlock(&max_trace_lock);

out:
data->critical_sequence = max_sequence;
data->preempt_timestamp = now(cpu);
Expand Down Expand Up @@ -366,14 +369,14 @@ void notrace trace_preempt_off(unsigned long a0, unsigned long a1)

static void start_irqsoff_tracer(struct trace_array *tr)
{
tracer_enabled = 1;
register_ftrace_function(&trace_ops);
tracer_enabled = 1;
}

static void stop_irqsoff_tracer(struct trace_array *tr)
{
unregister_ftrace_function(&trace_ops);
tracer_enabled = 0;
unregister_ftrace_function(&trace_ops);
}

static void __irqsoff_tracer_init(struct trace_array *tr)
Expand Down

0 comments on commit 8fae6d0

Please sign in to comment.