summaryrefslogtreecommitdiffstats
path: root/src/xtime.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/xtime.h')
-rw-r--r--src/xtime.h75
1 files changed, 62 insertions, 13 deletions
diff --git a/src/xtime.h b/src/xtime.h
index fb60ae4..b76fef2 100644
--- a/src/xtime.h
+++ b/src/xtime.h
@@ -13,9 +13,9 @@
/**
* mktime() wrapper that reports errors more reliably.
*
- * @param[in,out] tm
- * The struct tm to convert.
- * @param[out] timep
+ * @tm[in,out]
+ * The struct tm to convert and normalize.
+ * @timep[out]
* A pointer to the result.
* @return
* 0 on success, -1 on failure.
@@ -25,9 +25,9 @@ int xmktime(struct tm *tm, time_t *timep);
/**
* A portable timegm(), the inverse of gmtime().
*
- * @param[in,out] tm
- * The struct tm to convert.
- * @param[out] timep
+ * @tm[in,out]
+ * The struct tm to convert and normalize.
+ * @timep[out]
* A pointer to the result.
* @return
* 0 on success, -1 on failure.
@@ -37,9 +37,9 @@ int xtimegm(struct tm *tm, time_t *timep);
/**
* Parse an ISO 8601-style timestamp.
*
- * @param[in] str
+ * @str
* The string to parse.
- * @param[out] result
+ * @result[out]
* A pointer to the result.
* @return
* 0 on success, -1 on failure.
@@ -47,13 +47,62 @@ int xtimegm(struct tm *tm, time_t *timep);
int xgetdate(const char *str, struct timespec *result);
/**
- * Get the current time.
+ * Add to a timespec.
+ */
+void timespec_add(struct timespec *lhs, const struct timespec *rhs);
+
+/**
+ * Subtract from a timespec.
+ */
+void timespec_sub(struct timespec *lhs, const struct timespec *rhs);
+
+/**
+ * Compare two timespecs.
*
- * @param[out] result
- * A pointer to the result.
* @return
- * 0 on success, -1 on failure.
+ * An integer with the sign of (*lhs - *rhs).
+ */
+int timespec_cmp(const struct timespec *lhs, const struct timespec *rhs);
+
+/**
+ * Update a minimum timespec.
+ */
+void timespec_min(struct timespec *dest, const struct timespec *src);
+
+/**
+ * Update a maximum timespec.
+ */
+void timespec_max(struct timespec *dest, const struct timespec *src);
+
+/**
+ * Convert a timespec to floating point.
+ *
+ * @return
+ * The value in nanoseconds.
+ */
+double timespec_ns(const struct timespec *ts);
+
+/**
+ * A timer.
+ */
+struct timer;
+
+/**
+ * Start a timer.
+ *
+ * @interval
+ * The regular interval at which to send SIGALRM.
+ * @return
+ * The new timer on success, otherwise NULL.
+ */
+struct timer *xtimer_start(const struct timespec *interval);
+
+/**
+ * Stop a timer.
+ *
+ * @timer
+ * The timer to stop.
*/
-int xgettime(struct timespec *result);
+void xtimer_stop(struct timer *timer);
#endif // BFS_XTIME_H