aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/diagnostic/diagnostic.c28
-rw-r--r--src/diagnostic/diagnostic_private.h1
-rw-r--r--src/time/benchmark.c7
3 files changed, 17 insertions, 19 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));
- }
-}
diff --git a/src/diagnostic/diagnostic_private.h b/src/diagnostic/diagnostic_private.h
index 96b1759..981bbe9 100644
--- a/src/diagnostic/diagnostic_private.h
+++ b/src/diagnostic/diagnostic_private.h
@@ -29,6 +29,5 @@
#include "rin/compat.h"
static void __rin_msg(FILE *stream, const char *prefix, const char *format, va_list args);
-static void __rin_pidconvadjust(void);
#endif /* LIBRIN_DIAGNOSTIC_PRIVATE_INCLUDED */
diff --git a/src/time/benchmark.c b/src/time/benchmark.c
index 543275a..4738676 100644
--- a/src/time/benchmark.c
+++ b/src/time/benchmark.c
@@ -22,14 +22,9 @@
#include <errno.h>
#include <sys/resource.h>
#include "rin/time.h"
+#include "rin/definitions.h"
#include "time_private.h"
-#if defined CLOCK_MONOTONIC
-# define RIN_CLOCK_WALL_COUNTER CLOCK_MONOTONIC
-#else
-# define RIN_CLOCK_WALL_COUNTER CLOCK_REALTIME
-#endif /* defined CLOCK_MONOTONIC */
-
static struct bench {
int status;
struct rusage runtime;