From 031a72de7dc0a4394f0bc6305c79631174cc272d Mon Sep 17 00:00:00 2001
From: Cedric Roux <cedric.roux@eurecom.fr>
Date: Mon, 5 Dec 2016 15:08:27 +0100
Subject: [PATCH] T: new function 'bps'

This function is used to print rates (say '1kb/s' or '16Mb/s').
---
 common/utils/T/tracer/utils.c | 11 +++++++++++
 common/utils/T/tracer/utils.h |  1 +
 2 files changed, 12 insertions(+)

diff --git a/common/utils/T/tracer/utils.c b/common/utils/T/tracer/utils.c
index a22e0a0565..5071546735 100644
--- a/common/utils/T/tracer/utils.c
+++ b/common/utils/T/tracer/utils.c
@@ -7,6 +7,7 @@
 #include <ctype.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
+#include <math.h>
 
 void new_thread(void *(*f)(void *), void *data)
 {
@@ -36,6 +37,16 @@ void sleepms(int ms)
   if (nanosleep(&t, NULL)) abort();
 }
 
+void bps(char *out, float v, char *suffix)
+{
+  static char *bps_unit[4] = { "", "k", "M", "G" };
+  int flog;
+  if (v < 1000) flog = 0; else flog = floor(floor(log10(v)) / 3);
+  if (flog > 3) flog = 3;
+  v /= pow(10, flog*3);
+  sprintf(out, "%g%s%s", round(v*100)/100, bps_unit[flog], suffix);
+}
+
 /****************************************************************************/
 /* list                                                                     */
 /****************************************************************************/
diff --git a/common/utils/T/tracer/utils.h b/common/utils/T/tracer/utils.h
index 086e92b5dc..3be6cfe1a7 100644
--- a/common/utils/T/tracer/utils.h
+++ b/common/utils/T/tracer/utils.h
@@ -3,6 +3,7 @@
 
 void new_thread(void *(*f)(void *), void *data);
 void sleepms(int ms);
+void bps(char *out, float v, char *suffix);
 
 /****************************************************************************/
 /* list                                                                     */
-- 
GitLab