提交 66cc3ada 编写于 作者: A Arnaldo Carvalho de Melo

perf timechart: Move power_events list to 'struct timechart'

Removing another global variable.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stanislav Fomichev <stfomichev@yandex-team.ru>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-2akef3p9caau56itf5mugd2b@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
上级 5e22f6d2
...@@ -42,10 +42,12 @@ ...@@ -42,10 +42,12 @@
#define PWR_EVENT_EXIT -1 #define PWR_EVENT_EXIT -1
struct per_pid; struct per_pid;
struct power_event;
struct timechart { struct timechart {
struct perf_tool tool; struct perf_tool tool;
struct per_pid *all_data; struct per_pid *all_data;
struct power_event *power_events;
int proc_num; int proc_num;
unsigned int numcpus; unsigned int numcpus;
u64 min_freq, /* Lowest CPU frequency seen */ u64 min_freq, /* Lowest CPU frequency seen */
...@@ -146,7 +148,6 @@ struct wake_event { ...@@ -146,7 +148,6 @@ struct wake_event {
const char *backtrace; const char *backtrace;
}; };
static struct power_event *power_events;
static struct wake_event *wake_events; static struct wake_event *wake_events;
struct process_filter { struct process_filter {
...@@ -312,7 +313,7 @@ static void c_state_start(int cpu, u64 timestamp, int state) ...@@ -312,7 +313,7 @@ static void c_state_start(int cpu, u64 timestamp, int state)
cpus_cstate_state[cpu] = state; cpus_cstate_state[cpu] = state;
} }
static void c_state_end(int cpu, u64 timestamp) static void c_state_end(struct timechart *tchart, int cpu, u64 timestamp)
{ {
struct power_event *pwr = zalloc(sizeof(*pwr)); struct power_event *pwr = zalloc(sizeof(*pwr));
...@@ -324,9 +325,9 @@ static void c_state_end(int cpu, u64 timestamp) ...@@ -324,9 +325,9 @@ static void c_state_end(int cpu, u64 timestamp)
pwr->end_time = timestamp; pwr->end_time = timestamp;
pwr->cpu = cpu; pwr->cpu = cpu;
pwr->type = CSTATE; pwr->type = CSTATE;
pwr->next = power_events; pwr->next = tchart->power_events;
power_events = pwr; tchart->power_events = pwr;
} }
static void p_state_change(struct timechart *tchart, int cpu, u64 timestamp, u64 new_freq) static void p_state_change(struct timechart *tchart, int cpu, u64 timestamp, u64 new_freq)
...@@ -345,12 +346,12 @@ static void p_state_change(struct timechart *tchart, int cpu, u64 timestamp, u64 ...@@ -345,12 +346,12 @@ static void p_state_change(struct timechart *tchart, int cpu, u64 timestamp, u64
pwr->end_time = timestamp; pwr->end_time = timestamp;
pwr->cpu = cpu; pwr->cpu = cpu;
pwr->type = PSTATE; pwr->type = PSTATE;
pwr->next = power_events; pwr->next = tchart->power_events;
if (!pwr->start_time) if (!pwr->start_time)
pwr->start_time = tchart->first_time; pwr->start_time = tchart->first_time;
power_events = pwr; tchart->power_events = pwr;
cpus_pstate_state[cpu] = new_freq; cpus_pstate_state[cpu] = new_freq;
cpus_pstate_start_times[cpu] = timestamp; cpus_pstate_start_times[cpu] = timestamp;
...@@ -551,7 +552,7 @@ process_sample_cpu_idle(struct timechart *tchart __maybe_unused, ...@@ -551,7 +552,7 @@ process_sample_cpu_idle(struct timechart *tchart __maybe_unused,
u32 cpu_id = perf_evsel__intval(evsel, sample, "cpu_id"); u32 cpu_id = perf_evsel__intval(evsel, sample, "cpu_id");
if (state == (u32)PWR_EVENT_EXIT) if (state == (u32)PWR_EVENT_EXIT)
c_state_end(cpu_id, sample->time); c_state_end(tchart, cpu_id, sample->time);
else else
c_state_start(cpu_id, sample->time, state); c_state_start(cpu_id, sample->time, state);
return 0; return 0;
...@@ -614,12 +615,12 @@ process_sample_power_start(struct timechart *tchart __maybe_unused, ...@@ -614,12 +615,12 @@ process_sample_power_start(struct timechart *tchart __maybe_unused,
} }
static int static int
process_sample_power_end(struct timechart *tchart __maybe_unused, process_sample_power_end(struct timechart *tchart,
struct perf_evsel *evsel __maybe_unused, struct perf_evsel *evsel __maybe_unused,
struct perf_sample *sample, struct perf_sample *sample,
const char *backtrace __maybe_unused) const char *backtrace __maybe_unused)
{ {
c_state_end(sample->cpu, sample->time); c_state_end(tchart, sample->cpu, sample->time);
return 0; return 0;
} }
...@@ -658,9 +659,9 @@ static void end_sample_processing(struct timechart *tchart) ...@@ -658,9 +659,9 @@ static void end_sample_processing(struct timechart *tchart)
pwr->end_time = tchart->last_time; pwr->end_time = tchart->last_time;
pwr->cpu = cpu; pwr->cpu = cpu;
pwr->type = CSTATE; pwr->type = CSTATE;
pwr->next = power_events; pwr->next = tchart->power_events;
power_events = pwr; tchart->power_events = pwr;
#endif #endif
/* P state */ /* P state */
...@@ -673,13 +674,13 @@ static void end_sample_processing(struct timechart *tchart) ...@@ -673,13 +674,13 @@ static void end_sample_processing(struct timechart *tchart)
pwr->end_time = tchart->last_time; pwr->end_time = tchart->last_time;
pwr->cpu = cpu; pwr->cpu = cpu;
pwr->type = PSTATE; pwr->type = PSTATE;
pwr->next = power_events; pwr->next = tchart->power_events;
if (!pwr->start_time) if (!pwr->start_time)
pwr->start_time = tchart->first_time; pwr->start_time = tchart->first_time;
if (!pwr->state) if (!pwr->state)
pwr->state = tchart->min_freq; pwr->state = tchart->min_freq;
power_events = pwr; tchart->power_events = pwr;
} }
} }
...@@ -735,7 +736,7 @@ static void sort_pids(struct timechart *tchart) ...@@ -735,7 +736,7 @@ static void sort_pids(struct timechart *tchart)
static void draw_c_p_states(struct timechart *tchart) static void draw_c_p_states(struct timechart *tchart)
{ {
struct power_event *pwr; struct power_event *pwr;
pwr = power_events; pwr = tchart->power_events;
/* /*
* two pass drawing so that the P state bars are on top of the C state blocks * two pass drawing so that the P state bars are on top of the C state blocks
...@@ -746,7 +747,7 @@ static void draw_c_p_states(struct timechart *tchart) ...@@ -746,7 +747,7 @@ static void draw_c_p_states(struct timechart *tchart)
pwr = pwr->next; pwr = pwr->next;
} }
pwr = power_events; pwr = tchart->power_events;
while (pwr) { while (pwr) {
if (pwr->type == PSTATE) { if (pwr->type == PSTATE) {
if (!pwr->state) if (!pwr->state)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册