aboutsummaryrefslogtreecommitdiffstats
path: root/src/diagnostic/diagnostic.c
diff options
context:
space:
mode:
authorGravatar Gediminas Jakutis <gediminas@varciai.lt> 2019-10-24 14:20:49 +0300
committerGravatar Gediminas Jakutis <gediminas@varciai.lt> 2019-10-24 14:20:49 +0300
commit69933c5b521eacd968c4d78ad769ea7a3d6b872f (patch)
tree851b8e5c618f1f1b9666395942ec77e386a274a6 /src/diagnostic/diagnostic.c
parentab8851b48622dba2d2954306cd48c5c14c91db72 (diff)
downloadlibrin-69933c5b521eacd968c4d78ad769ea7a3d6b872f.tar.gz
librin-69933c5b521eacd968c4d78ad769ea7a3d6b872f.tar.bz2
librin-69933c5b521eacd968c4d78ad769ea7a3d6b872f.zip
diagnostic: print time since program start instead.
Signed-off-by: Gediminas Jakutis <gediminas@varciai.lt>
Diffstat (limited to 'src/diagnostic/diagnostic.c')
-rw-r--r--src/diagnostic/diagnostic.c28
1 files changed, 16 insertions, 12 deletions
diff --git a/src/diagnostic/diagnostic.c b/src/diagnostic/diagnostic.c
index 4d67573..4c4a993 100644
--- a/src/diagnostic/diagnostic.c
+++ b/src/diagnostic/diagnostic.c
@@ -23,16 +23,29 @@
#include <string.h>
#include <time.h>
#include "rin/diagnostic.h"
+#include "rin/time.h"
#include "rin/definitions.h"
static struct iostate {
+ struct timespec start;
FILE *err;
FILE *warn;
FILE *fixme;
FILE *info;
unsigned int flags;
char pidconv[8];
-} state = {NULL, NULL, NULL, NULL, RIN_DIAG_PREFIX, "%08x:"};
+} state = {{0, 0}, NULL, NULL, NULL, NULL, RIN_DIAG_PREFIX, "%08x:"};
+
+void rin_diag_init(void)
+{
+ static const char convstr[8] = "%04hx:";
+
+ if (sizeof(pid_t) == 4) {
+ memcpy(state.pidconv, convstr, sizeof(convstr));
+ }
+
+ clock_gettime(RIN_CLOCK_WALL_COUNTER, &state.start);
+}
int rin_diag_flags(int flag, int action)
{
@@ -102,8 +115,6 @@ void rin_info(const char *format, ...)
static void __rin_msg(FILE *stream, const char *prefix, const char *format, va_list args)
{
- rin_once(__rin_pidconvadjust());
-
if (state.flags & RIN_DIAG_PREFIX) {
fprintf(stream, "%s:", prefix);
}
@@ -114,18 +125,11 @@ static void __rin_msg(FILE *stream, const char *prefix, const char *format, va_l
if (state.flags & RIN_DIAG_TIME) {
struct timespec t;
- clock_gettime(CLOCK_REALTIME, &t);
+ clock_gettime(RIN_CLOCK_WALL_COUNTER, &t);
+ t = rin_time_sub(&t, &state.start);
fprintf(stream, "%lu.%lu:", t.tv_sec, t.tv_nsec);
}
vfprintf(stream, format, args);
fputc('\n', stream);
}
-
-static void __rin_pidconvadjust(void)
-{
- if (sizeof(pid_t) == 4) {
- const char convstr[8] = "%04hx:";
- memcpy(state.pidconv, convstr, sizeof(convstr));
- }
-}