#include "time.h" struct timespec timespec_add(struct timespec a, struct timespec b) { a.tv_sec += b.tv_sec; a.tv_nsec += b.tv_nsec; if (a.tv_nsec >= 1000000000) { a.tv_sec++; a.tv_nsec -= 1000000000; } return a; } struct timespec timespec_sub(struct timespec a, struct timespec b) { a.tv_sec -= b.tv_sec; a.tv_nsec -= b.tv_nsec; if (a.tv_nsec < 0) { a.tv_sec--; a.tv_nsec += 1000000000; } return a; } int timespec_cmp(struct timespec a, struct timespec b) { return a.tv_sec > b.tv_sec ? (1) : a.tv_sec < b.tv_sec ? (-1) : ( a.tv_nsec > b.tv_nsec ? (1) : a.tv_nsec < b.tv_nsec ? (-1) : 0 ); } struct timespec timespec_max(struct timespec a, struct timespec b) { return a.tv_sec > b.tv_sec ? a : a.tv_sec < b.tv_sec ? b : ( a.tv_nsec > b.tv_nsec ? a : b ); } struct timespec timespec_min(struct timespec a, struct timespec b) { return a.tv_sec < b.tv_sec ? a : a.tv_sec > b.tv_sec ? b : ( a.tv_nsec < b.tv_nsec ? a : b ); }