1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
#include <sys/time.h>
#include "monoclock.h"
#include "tvmath.h"
/**
* tvmath_addctime(tv):
* Set tv += monoclock.
*/
int
tvmath_addctime(struct timeval * tv)
{
struct timeval tnow;
if (monoclock_get(&tnow))
goto err0;
tv->tv_sec += tnow.tv_sec;
tv->tv_usec += tnow.tv_usec;
if (tv->tv_usec >= 1000000) {
tv->tv_usec -= 1000000;
tv->tv_sec += 1;
}
/* Success! */
return (0);
err0:
/* Failure! */
return (-1);
}
/**
* tvmath_subctime(tv):
* Set tv -= monoclock.
*/
int
tvmath_subctime(struct timeval * tv)
{
struct timeval tnow;
if (monoclock_get(&tnow))
goto err0;
tv->tv_sec -= tnow.tv_sec;
tv->tv_usec -= tnow.tv_usec;
if (tv->tv_usec < 0) {
tv->tv_usec += 1000000;
tv->tv_sec -= 1;
}
/* Success! */
return (0);
err0:
/* Failure! */
return (-1);
}
/**
* tvmath_rsubctime(tv):
* Set tv = monoclock - tv.
*/
int
tvmath_rsubctime(struct timeval * tv)
{
struct timeval tnow;
if (monoclock_get(&tnow))
goto err0;
tv->tv_sec = tnow.tv_sec - tv->tv_sec;
tv->tv_usec = tnow.tv_usec - tv->tv_usec;
if (tv->tv_usec < 0) {
tv->tv_usec += 1000000;
tv->tv_sec -= 1;
}
/* Success! */
return (0);
err0:
/* Failure! */
return (-1);
}
|