aboutsummaryrefslogtreecommitdiff
path: root/process/do_process.cpp
diff options
context:
space:
mode:
authorArjan van de Ven <arjan@linux.intel.com>2010-08-19 21:13:49 -0700
committerArjan van de Ven <arjan@linux.intel.com>2010-08-19 21:13:49 -0700
commita1203ee199aa7e14a86b1f4c16ee3cdc2c29f021 (patch)
tree1c53b57def1e4fedc4263db33169f0843cb5a882 /process/do_process.cpp
parent9b406c80f380ec9926e45dd27711a23b2647889f (diff)
downloadpowertop-a1203ee199aa7e14a86b1f4c16ee3cdc2c29f021.tar.gz
better wakeup accounting
Diffstat (limited to 'process/do_process.cpp')
-rw-r--r--process/do_process.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/process/do_process.cpp b/process/do_process.cpp
index 7807226..529ef04 100644
--- a/process/do_process.cpp
+++ b/process/do_process.cpp
@@ -172,7 +172,9 @@ void perf_process_bundle::handle_trace_point(int type, void *trace, int cpu, uin
/* start new process */
new_proc->schedule_thread(time, sw->next_pid);
- change_blame(cpu, new_proc, LEVEL_PROCESS);
+
+ if (sw->next_pid)
+ change_blame(cpu, new_proc, LEVEL_PROCESS);
consume_blame(cpu);
}
@@ -268,6 +270,12 @@ void perf_process_bundle::handle_trace_point(int type, void *trace, int cpu, uin
tmr = (struct timer_cancel *)trace;
}
+ if (strcmp(event_name, "power:power_start") == 0) {
+ set_wakeup_pending(cpu);
+ }
+ if (strcmp(event_name, "power:power_end") == 0) {
+ consume_blame(cpu);
+ }
}
void start_process_measurement(void)
@@ -282,6 +290,8 @@ void start_process_measurement(void)
perf_events->add_event("irq:softirq_exit");
perf_events->add_event("timer:timer_expire_entry");
perf_events->add_event("timer:timer_expire_exit");
+ perf_events->add_event("power:power_start");
+ perf_events->add_event("power:power_end");
}
perf_events->start();