diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/include/skalibs/tai.h | 8 | ||||
-rw-r--r-- | src/libstddjb/tain_now_set_stopwatch.c | 13 | ||||
-rw-r--r-- | src/libstddjb/tain_now_set_wallclock.c | 3 | ||||
-rw-r--r-- | src/libstddjb/tain_stopwatch.c | 13 |
4 files changed, 22 insertions, 15 deletions
diff --git a/src/include/skalibs/tai.h b/src/include/skalibs/tai.h index 2bdf524..82f2e23 100644 --- a/src/include/skalibs/tai.h +++ b/src/include/skalibs/tai.h @@ -94,15 +94,17 @@ extern int sysclock_from_tain (tain_t *, tain_t const *) ; extern tain_clockread_func_t sysclock_get ; extern tain_clockread_func_t tain_wallclock_read ; #define tain_wallclock_read_g() tain_wallclock_read(&STAMP) -extern int tain_stopwatch_init (clock_t, tain_t *) ; +extern int tain_stopwatch_init (tain_t *, clock_t, tain_t *) ; extern int tain_stopwatch_read (tain_t *, clock_t, tain_t const *) ; #define tain_stopwatch_read_g(cl, offset) tain_stopwatch_read(&STAMP, (cl), offset) extern tain_clockread_func_t_ref tain_now ; #define tain_now_g() (*tain_now)(&STAMP) #define tain_copynow(t) (*(t) = STAMP) -extern void tain_now_set_wallclock (void) ; -extern void tain_now_set_stopwatch (void) ; +extern tain_clockread_func_t tain_now_set_wallclock ; +#define tain_now_set_wallclock_g() tain_now_set_wallclock(&STAMP) +extern tain_clockread_func_t tain_now_set_stopwatch ; +#define tain_now_set_stopwatch_g() tain_now_set_stopwatch(&STAMP) extern int sysclock_set (tain_t const *) ; extern int tain_setnow (tain_t const *) ; diff --git a/src/libstddjb/tain_now_set_stopwatch.c b/src/libstddjb/tain_now_set_stopwatch.c index ef869f7..a770141 100644 --- a/src/libstddjb/tain_now_set_stopwatch.c +++ b/src/libstddjb/tain_now_set_stopwatch.c @@ -17,21 +17,24 @@ static tain_t offset ; -static int tain_now_stopwatch (tain_t *a) +static int tain_now_stopwatch (tain_t *now) { - return tain_stopwatch_read(a, SKALIBS_STOPWATCH, &offset) ; + return tain_stopwatch_read(now, SKALIBS_STOPWATCH, &offset) ; } -void tain_now_set_stopwatch (void) +int tain_now_set_stopwatch (tain_t *now) { - if (!tain_stopwatch_init(SKALIBS_STOPWATCH, &offset)) return ; + if (!tain_stopwatch_init(now, SKALIBS_STOPWATCH, &offset)) + return tain_now_set_wallclock(now) ; tain_now = &tain_now_stopwatch ; + return 1 ; } #else -void tain_now_set_stopwatch (void) +int tain_now_set_stopwatch (tain_t *now) { + return tain_now_set_wallclock(now) ; } #endif diff --git a/src/libstddjb/tain_now_set_wallclock.c b/src/libstddjb/tain_now_set_wallclock.c index a3d8b61..34a44cc 100644 --- a/src/libstddjb/tain_now_set_wallclock.c +++ b/src/libstddjb/tain_now_set_wallclock.c @@ -4,7 +4,8 @@ #include <skalibs/tai.h> -void tain_now_set_wallclock (void) +int tain_now_set_wallclock (tain_t *now) { tain_now = &tain_wallclock_read ; + return tain_wallclock_read(now) ; } diff --git a/src/libstddjb/tain_stopwatch.c b/src/libstddjb/tain_stopwatch.c index 2bb4974..adcaace 100644 --- a/src/libstddjb/tain_stopwatch.c +++ b/src/libstddjb/tain_stopwatch.c @@ -7,15 +7,15 @@ #include <time.h> -int tain_stopwatch_init (clock_t cl, tain_t *offset) +int tain_stopwatch_init (tain_t *now, clock_t cl, tain_t *offset) { tain_t a, b ; struct timespec ts ; - if (!tain_wallclock_read(&a)) return 0 ; if (clock_gettime(cl, &ts) < 0) return 0 ; if (!tain_from_timespec(&b, &ts)) return 0 ; - tain_add(&a, &a, &tain_nano500) ; + if (!tain_wallclock_read(&a)) return 0 ; tain_sub(offset, &a, &b) ; + *now = a ; return 1 ; } @@ -32,16 +32,17 @@ int tain_stopwatch_read (tain_t *a, clock_t cl, tain_t const *offset) #include <errno.h> -int tain_stopwatch_init (clock_t cl, tain_t *offset) +int tain_stopwatch_init (tain_t *now, clock_t cl, tain_t *offset) { + (void)now ; (void)cl ; (void)offset ; return (errno = ENOSYS, 0) ; } -int tain_stopwatch_read (tain_t *a, clock_t cl, tain_t const *offset) +int tain_stopwatch_read (tain_t *now, clock_t cl, tain_t const *offset) { - (void)a ; + (void)now ; (void)cl ; (void)offset ; return (errno = ENOSYS, 0) ; |