summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnuradha Karuppiah <anuradhak@cumulusnetworks.com>2020-03-27 07:30:20 -0700
committerAnuradha Karuppiah <anuradhak@cumulusnetworks.com>2020-08-05 06:46:12 -0700
commit0447957e62c83edb3d9e4da092742426551f4932 (patch)
tree0eb8890964394d4a7038a2a0825f1eff561129f6
parent19bfb2748633e14ccc0c5e62bf116d647dbb7a7b (diff)
lib: timer: move the timer string api to lib
This api was earlier present in the daemon code but as multiple daemons need it moving it to lib will avoid unnecessary copy-paste. Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
-rw-r--r--lib/thread.c30
-rw-r--r--lib/thread.h4
2 files changed, 34 insertions, 0 deletions
diff --git a/lib/thread.c b/lib/thread.c
index 5c7c104842..1df4eee25c 100644
--- a/lib/thread.c
+++ b/lib/thread.c
@@ -634,6 +634,36 @@ struct timeval thread_timer_remain(struct thread *thread)
return remain;
}
+static int time_hhmmss(char *buf, int buf_size, long sec)
+{
+ long hh;
+ long mm;
+ int wr;
+
+ zassert(buf_size >= 8);
+
+ hh = sec / 3600;
+ sec %= 3600;
+ mm = sec / 60;
+ sec %= 60;
+
+ wr = snprintf(buf, buf_size, "%02ld:%02ld:%02ld", hh, mm, sec);
+
+ return wr != 8;
+}
+
+char *thread_timer_to_hhmmss(char *buf, int buf_size,
+ struct thread *t_timer)
+{
+ if (t_timer) {
+ time_hhmmss(buf, buf_size,
+ thread_timer_remain_second(t_timer));
+ } else {
+ snprintf(buf, buf_size, "--:--:--");
+ }
+ return buf;
+}
+
/* Get new thread. */
static struct thread *thread_get(struct thread_master *m, uint8_t type,
int (*func)(struct thread *), void *arg,
diff --git a/lib/thread.h b/lib/thread.h
index 412a4d93bf..c22b2105cd 100644
--- a/lib/thread.h
+++ b/lib/thread.h
@@ -140,6 +140,8 @@ struct cpu_thread_history {
/* Thread yield time. */
#define THREAD_YIELD_TIME_SLOT 10 * 1000L /* 10ms */
+#define THREAD_TIMER_STRLEN 12
+
/* Macros. */
#define THREAD_ARG(X) ((X)->arg)
#define THREAD_FD(X) ((X)->u.fd)
@@ -228,6 +230,8 @@ extern unsigned long thread_consumed_time(RUSAGE_T *after, RUSAGE_T *before,
/* only for use in logging functions! */
extern pthread_key_t thread_current;
+extern char *thread_timer_to_hhmmss(char *buf, int buf_size,
+ struct thread *t_timer);
#ifdef __cplusplus
}