diff options
author | Lorenz Meier <lm@inf.ethz.ch> | 2013-01-24 21:41:50 +0100 |
---|---|---|
committer | Lorenz Meier <lm@inf.ethz.ch> | 2013-01-24 21:41:50 +0100 |
commit | 4baa1821cbf36f6b22636eb79325c9656332fb6b (patch) | |
tree | cbdd6fe477506029309a982dab49ea5a4cb36091 /apps/systemlib | |
parent | 2ebb1812f1eea47f06e79650242416493ce279b9 (diff) | |
parent | beb45222985f1eb9fbe21b22b95c30ab8ca5bbac (diff) | |
download | px4-firmware-4baa1821cbf36f6b22636eb79325c9656332fb6b.tar.gz px4-firmware-4baa1821cbf36f6b22636eb79325c9656332fb6b.tar.bz2 px4-firmware-4baa1821cbf36f6b22636eb79325c9656332fb6b.zip |
Merge branch 'master' of github.com:PX4/Firmware into airspeed
Diffstat (limited to 'apps/systemlib')
-rw-r--r-- | apps/systemlib/perf_counter.c | 45 | ||||
-rw-r--r-- | apps/systemlib/perf_counter.h | 13 |
2 files changed, 58 insertions, 0 deletions
diff --git a/apps/systemlib/perf_counter.c b/apps/systemlib/perf_counter.c index ff15ef479..879f4715a 100644 --- a/apps/systemlib/perf_counter.c +++ b/apps/systemlib/perf_counter.c @@ -219,6 +219,40 @@ perf_end(perf_counter_t handle) } void +perf_reset(perf_counter_t handle) +{ + if (handle == NULL) + return; + + switch (handle->type) { + case PC_COUNT: + ((struct perf_ctr_count *)handle)->event_count = 0; + break; + + case PC_ELAPSED: { + struct perf_ctr_elapsed *pce = (struct perf_ctr_elapsed *)handle; + pce->event_count = 0; + pce->time_start = 0; + pce->time_total = 0; + pce->time_least = 0; + pce->time_most = 0; + break; + } + + case PC_INTERVAL: { + struct perf_ctr_interval *pci = (struct perf_ctr_interval *)handle; + pci->event_count = 0; + pci->time_event = 0; + pci->time_first = 0; + pci->time_last = 0; + pci->time_least = 0; + pci->time_most = 0; + break; + } + } +} + +void perf_print_counter(perf_counter_t handle) { if (handle == NULL) @@ -270,3 +304,14 @@ perf_print_all(void) handle = (perf_counter_t)sq_next(&handle->link); } } + +void +perf_reset_all(void) +{ + perf_counter_t handle = (perf_counter_t)sq_peek(&perf_counters); + + while (handle != NULL) { + perf_reset(handle); + handle = (perf_counter_t)sq_next(&handle->link); + } +} diff --git a/apps/systemlib/perf_counter.h b/apps/systemlib/perf_counter.h index 6e6c80d5b..5c2cb15b2 100644 --- a/apps/systemlib/perf_counter.h +++ b/apps/systemlib/perf_counter.h @@ -97,6 +97,14 @@ __EXPORT extern void perf_begin(perf_counter_t handle); */ __EXPORT extern void perf_end(perf_counter_t handle); +/** + * Reset a performance event. + * + * This call resets performance counter to initial state + * + * @param handle The handle returned from perf_alloc. + */ +__EXPORT extern void perf_reset(perf_counter_t handle); /** * Print one performance counter. @@ -110,6 +118,11 @@ __EXPORT extern void perf_print_counter(perf_counter_t handle); */ __EXPORT extern void perf_print_all(void); +/** + * Reset all of the performance counters. + */ +__EXPORT extern void perf_reset_all(void); + __END_DECLS #endif |