1#include "timespec.h"
2
3void timespec_add(struct timespec* ts, double increment)
4{
5 double integral;
6 double frac = modf(increment, &integral);
7 frac *= 1'000'000'000;
8 ts->tv_sec += integral;
9 ts->tv_nsec += frac;
10 if (ts->tv_nsec >= 1'000'000'000) {
11 ts->tv_nsec -= 1'000'000'000;
12 ts->tv_sec++;
13 }
14}
15
16void timespec_sub(struct timespec* a, struct timespec* b)
17{
18 a->tv_sec -= b->tv_sec;
19 if (a->tv_nsec < b->tv_nsec) {
20 a->tv_sec--;
21 a->tv_nsec += 1000'000'000UL;
22 }
23 a->tv_nsec -= b->tv_nsec;
24}