A crisper implementation makes profiling a tad easier.
Signed-off-by: Øyvind Harboe <[email protected]>
---
src/helper/time_support.c | 16 ++++++++++++++++
1 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/src/helper/time_support.c b/src/helper/time_support.c
index 693528f..4e69c42 100644
--- a/src/helper/time_support.c
+++ b/src/helper/time_support.c
@@ -29,6 +29,9 @@
#include "time_support.h"
+#if BUILD_ECOSBOARD == 1
+#include <cyg/kernel/kapi.h>
+#endif
/* calculate difference between two struct timeval values */
int timeval_subtract(struct timeval *result, struct timeval *x, struct timeval
*y)
@@ -73,13 +76,26 @@ int timeval_add_time(struct timeval *result, long sec, long
usec)
return 0;
}
+/* simple and low overhead fetching of ms counter. Use only
+ * the difference between ms counters returned from this fn.
+ */
int64_t timeval_ms()
{
+#if BUILD_ECOSBOARD == 0
struct timeval now;
int retval = gettimeofday(&now, NULL);
if (retval < 0)
return retval;
return (int64_t)now.tv_sec * 1000 + now.tv_usec / 1000;
+#else
+ /* Faster/less noisy implementation of getting ms when
+ * profiling
+ */
+ static const int ms_per_tick =
+ (CYGNUM_HAL_RTC_NUMERATOR / CYGNUM_HAL_RTC_DENOMINATOR)
/ 1000000;
+ cyg_tick_count_t cur_time = cyg_current_time();
+ return ((int)cur_time) * ms_per_tick;
+#endif
}
--
1.6.3.3
_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development