diff options
author | Andrew Tridgell <tridge@samba.org> | 2013-09-12 16:21:24 +1000 |
---|---|---|
committer | Lorenz Meier <lm@inf.ethz.ch> | 2013-09-12 09:25:08 +0200 |
commit | 7257642371f52a96c8d891795d090119437ea933 (patch) | |
tree | 21398dcd072381c4840df581e0fbca97a8927fd7 /src/modules/systemlib/perf_counter.c | |
parent | 0b7294a26ec33f707a9b5ddeee4269552b147e8b (diff) | |
download | px4-firmware-7257642371f52a96c8d891795d090119437ea933.tar.gz px4-firmware-7257642371f52a96c8d891795d090119437ea933.tar.bz2 px4-firmware-7257642371f52a96c8d891795d090119437ea933.zip |
perf: added perf_event_count() method
this allows drivers to get an event_count from a perf counter
Diffstat (limited to 'src/modules/systemlib/perf_counter.c')
-rw-r--r-- | src/modules/systemlib/perf_counter.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/modules/systemlib/perf_counter.c b/src/modules/systemlib/perf_counter.c index 3c1e10287..bf84b7945 100644 --- a/src/modules/systemlib/perf_counter.c +++ b/src/modules/systemlib/perf_counter.c @@ -321,6 +321,32 @@ perf_print_counter(perf_counter_t handle) } } +uint64_t +perf_event_count(perf_counter_t handle) +{ + if (handle == NULL) + return 0; + + switch (handle->type) { + case PC_COUNT: + return ((struct perf_ctr_count *)handle)->event_count; + + case PC_ELAPSED: { + struct perf_ctr_elapsed *pce = (struct perf_ctr_elapsed *)handle; + return pce->event_count; + } + + case PC_INTERVAL: { + struct perf_ctr_interval *pci = (struct perf_ctr_interval *)handle; + return pci->event_count; + } + + default: + break; + } + return 0; +} + void perf_print_all(void) { |