core-rtclock: introduce pa_timespec_store() akin pa_timeval_store()
authorLennart Poettering <lennart@poettering.net>
Fri, 18 Sep 2009 02:08:36 +0000 (04:08 +0200)
committerLennart Poettering <lennart@poettering.net>
Fri, 18 Sep 2009 02:14:37 +0000 (04:14 +0200)
src/pulsecore/core-rtclock.c
src/pulsecore/core-rtclock.h

index 3b3e3a6..7690ab7 100644 (file)
@@ -151,6 +151,20 @@ pa_usec_t pa_timespec_load(const struct timespec *ts) {
         (pa_usec_t) ts->tv_nsec / PA_NSEC_PER_USEC;
 }
 
+struct timespec* pa_timespec_store(struct timespec *ts, pa_usec_t v) {
+    pa_assert(ts);
+
+    if (PA_UNLIKELY(v == PA_USEC_INVALID)) {
+        ts->tv_sec = PA_INT_TYPE_MAX(time_t);
+        ts->tv_nsec = (long) (PA_NSEC_PER_SEC-1);
+        return NULL;
+    }
+
+    ts->tv_sec = (time_t) (v / PA_USEC_PER_SEC);
+    ts->tv_nsec = (long) ((v % PA_USEC_PER_SEC) * PA_NSEC_PER_USEC);
+
+    return ts;
+}
 
 static struct timeval* wallclock_from_rtclock(struct timeval *tv) {
 
index 9f5ae2d..3b393ed 100644 (file)
@@ -44,6 +44,7 @@ void pa_rtclock_hrtimer_enable(void);
 struct timeval* pa_rtclock_from_wallclock(struct timeval *tv);
 
 pa_usec_t pa_timespec_load(const struct timespec *ts);
+struct timespec* pa_timespec_store(struct timespec *ts, pa_usec_t v);
 
 struct timeval* pa_timeval_rtstore(struct timeval *tv, pa_usec_t v, pa_bool_t rtclock);