summaryrefslogtreecommitdiff
path: root/defines.h
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2021-11-18 09:26:20 +1100
committerDamien Miller <djm@mindrot.org>2021-11-18 09:26:20 +1100
commit76292787a1e93e668f10e36b4bf59ce0ae28e156 (patch)
treef68ea40770fda24b3fbcce38de549bef1cb73632 /defines.h
parentfd7e7de4ddb4399c7e929b44f2bbfc118eddfcf8 (diff)
downloadopenssh-git-76292787a1e93e668f10e36b4bf59ce0ae28e156.tar.gz
compat for timespecsub() and friends
Diffstat (limited to 'defines.h')
-rw-r--r--defines.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/defines.h b/defines.h
index 857abb8b..36c06edd 100644
--- a/defines.h
+++ b/defines.h
@@ -532,6 +532,39 @@ struct winsize {
((tsp)->tv_sec cmp (usp)->tv_sec))
#endif
+/* Operations on timespecs. */
+#ifndef timespecclear
+#define timespecclear(tsp) (tsp)->tv_sec = (tsp)->tv_nsec = 0
+#endif
+#ifndef timespeccmp
+#define timespeccmp(tsp, usp, cmp) \
+ (((tsp)->tv_sec == (usp)->tv_sec) ? \
+ ((tsp)->tv_nsec cmp (usp)->tv_nsec) : \
+ ((tsp)->tv_sec cmp (usp)->tv_sec))
+#endif
+#ifndef timespecadd
+#define timespecadd(tsp, usp, vsp) \
+ do { \
+ (vsp)->tv_sec = (tsp)->tv_sec + (usp)->tv_sec; \
+ (vsp)->tv_nsec = (tsp)->tv_nsec + (usp)->tv_nsec; \
+ if ((vsp)->tv_nsec >= 1000000000L) { \
+ (vsp)->tv_sec++; \
+ (vsp)->tv_nsec -= 1000000000L; \
+ } \
+ } while (0)
+#endif
+#ifndef timespecsub
+#define timespecsub(tsp, usp, vsp) \
+ do { \
+ (vsp)->tv_sec = (tsp)->tv_sec - (usp)->tv_sec; \
+ (vsp)->tv_nsec = (tsp)->tv_nsec - (usp)->tv_nsec; \
+ if ((vsp)->tv_nsec < 0) { \
+ (vsp)->tv_sec--; \
+ (vsp)->tv_nsec += 1000000000L; \
+ } \
+ } while (0)
+#endif
+
#ifndef __P
# define __P(x) x
#endif