Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 121073
b: refs/heads/master
c: e168e05
h: refs/heads/master
i:
  121071: a3e5541
v: v3
  • Loading branch information
Steven Rostedt authored and Ingo Molnar committed Nov 8, 2008
1 parent 8b7e409 commit c197b6f
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 15 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: 75f5c47da386445ba0c5a8b7e3ca0c906e763369
refs/heads/master: e168e0516e476070faa9e8e7b23dfcba79b76d82
4 changes: 3 additions & 1 deletion trunk/kernel/trace/trace.h
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,9 @@ void trace_function(struct trace_array *tr,

void tracing_start_cmdline_record(void);
void tracing_stop_cmdline_record(void);
void tracing_cmdline_assign_trace(struct trace_array *tr);
void tracing_sched_switch_assign_trace(struct trace_array *tr);
void tracing_stop_sched_switch_record(void);
void tracing_start_sched_switch_record(void);
int register_tracer(struct tracer *type);
void unregister_tracer(struct tracer *type);

Expand Down
6 changes: 3 additions & 3 deletions trunk/kernel/trace/trace_boot.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,13 @@ void start_boot_trace(void)
void enable_boot_trace(void)
{
if (pre_initcalls_finished)
tracing_start_cmdline_record();
tracing_start_sched_switch_record();
}

void disable_boot_trace(void)
{
if (pre_initcalls_finished)
tracing_stop_cmdline_record();
tracing_stop_sched_switch_record();
}

static void reset_boot_trace(struct trace_array *tr)
Expand All @@ -55,7 +55,7 @@ static void boot_trace_init(struct trace_array *tr)
for_each_cpu_mask(cpu, cpu_possible_map)
tracing_reset(tr, cpu);

tracing_cmdline_assign_trace(tr);
tracing_sched_switch_assign_trace(tr);
}

static void boot_trace_ctrl_update(struct trace_array *tr)
Expand Down
50 changes: 40 additions & 10 deletions trunk/kernel/trace/trace_sched_switch.c
Original file line number Diff line number Diff line change
Expand Up @@ -125,20 +125,16 @@ static void tracing_sched_unregister(void)
static void tracing_start_sched_switch(void)
{
mutex_lock(&sched_register_mutex);
if (!(sched_ref++)) {
tracer_enabled = 1;
if (!(sched_ref++))
tracing_sched_register();
}
mutex_unlock(&sched_register_mutex);
}

static void tracing_stop_sched_switch(void)
{
mutex_lock(&sched_register_mutex);
if (!(--sched_ref)) {
if (!(--sched_ref))
tracing_sched_unregister();
tracer_enabled = 0;
}
mutex_unlock(&sched_register_mutex);
}

Expand All @@ -153,27 +149,61 @@ void tracing_stop_cmdline_record(void)
}

/**
* tracing_cmdline_assign_trace - assign a trace array for ctx switch
* tracing_start_sched_switch_record - start tracing context switches
*
* Turns on context switch tracing for a tracer.
*/
void tracing_start_sched_switch_record(void)
{
if (unlikely(!ctx_trace)) {
WARN_ON(1);
return;
}

tracing_start_sched_switch();

mutex_lock(&sched_register_mutex);
tracer_enabled++;
mutex_unlock(&sched_register_mutex);
}

/**
* tracing_stop_sched_switch_record - start tracing context switches
*
* Turns off context switch tracing for a tracer.
*/
void tracing_stop_sched_switch_record(void)
{
mutex_lock(&sched_register_mutex);
tracer_enabled--;
WARN_ON(tracer_enabled < 0);
mutex_unlock(&sched_register_mutex);

tracing_stop_sched_switch();
}

/**
* tracing_sched_switch_assign_trace - assign a trace array for ctx switch
* @tr: trace array pointer to assign
*
* Some tracers might want to record the context switches in their
* trace. This function lets those tracers assign the trace array
* to use.
*/
void tracing_cmdline_assign_trace(struct trace_array *tr)
void tracing_sched_switch_assign_trace(struct trace_array *tr)
{
ctx_trace = tr;
}

static void start_sched_trace(struct trace_array *tr)
{
sched_switch_reset(tr);
tracing_start_cmdline_record();
tracing_start_sched_switch_record();
}

static void stop_sched_trace(struct trace_array *tr)
{
tracing_stop_cmdline_record();
tracing_stop_sched_switch_record();
}

static void sched_switch_trace_init(struct trace_array *tr)
Expand Down

0 comments on commit c197b6f

Please sign in to comment.