2020-07-30 01:26:55 -04:00
|
|
|
#include <patty/timer.h>
|
|
|
|
|
|
|
|
int patty_timer_expired(struct timeval *timer) {
|
2020-07-31 01:06:48 -04:00
|
|
|
return timer->tv_sec <= 0? 1: 0;
|
2020-07-30 01:26:55 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
void patty_timer_cancel(struct timeval *timer) {
|
|
|
|
timer->tv_sec = 0;
|
|
|
|
timer->tv_usec = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
void patty_timer_start(struct timeval *timer,
|
|
|
|
struct timeval *target,
|
|
|
|
time_t ms) {
|
|
|
|
timer->tv_sec = ms / 1000;
|
|
|
|
timer->tv_usec = (ms % 1000) * 1000;
|
|
|
|
|
|
|
|
if (timercmp(timer, target, >)) {
|
2020-07-31 01:07:38 -04:00
|
|
|
target->tv_sec = timer->tv_sec;
|
|
|
|
target->tv_usec = timer->tv_usec;
|
2020-07-30 01:26:55 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void patty_timer_tick(struct timeval *timer,
|
|
|
|
struct timeval *elapsed) {
|
|
|
|
struct timeval res;
|
|
|
|
|
|
|
|
timersub(timer, elapsed, &res);
|
|
|
|
|
|
|
|
timer->tv_sec = res.tv_sec;
|
|
|
|
timer->tv_usec = res.tv_usec;
|
|
|
|
}
|