| 75 | } |
| 76 | |
| 77 | static unsigned long long mtime_since(const struct timeval *s, |
| 78 | const struct timeval *e) |
| 79 | { |
| 80 | long long sec, usec; |
| 81 | |
| 82 | sec = e->tv_sec - s->tv_sec; |
| 83 | usec = (e->tv_usec - s->tv_usec); |
| 84 | if (sec > 0 && usec < 0) { |
| 85 | sec--; |
| 86 | usec += 1000000; |
| 87 | } |
| 88 | |
| 89 | sec *= 1000; |
| 90 | usec /= 1000; |
| 91 | return sec + usec; |
| 92 | } |
| 93 | |
| 94 | static unsigned long long mtime_since_now(struct timeval *tv) |
| 95 | { |