+}*/
+
+/* takes number of microseconds since epoch and returns a
+ * ptr to a timespec suitable to be passed to clock_settime(3)
+ */
+static struct timespec* mktimespec(gint64 us) {
+
+ long nanoseconds;
+ time_t seconds;
+
+ gint64 div_buf_remainder, div_buf_s, div_buf_ns;
+ struct timespec *ret;
+
+ div_buf_s = (us / 1000000); /* us / 10^6 = s */
+ div_buf_remainder = (us % 1000000); /* fraction of second lost from prev. line */
+ div_buf_ns = div_buf_remainder * 1000; /* us * 10^3 = ns */
+
+ seconds = (time_t) div_buf_s; /* porting note: most systems use 32 bit time, adjust accordingly */
+ nanoseconds = (long) div_buf_ns;
+
+ ret = (struct timespec *) calloc(1, sizeof(struct timespec));
+
+ ret->tv_sec = seconds;
+ ret->tv_nsec = nanoseconds;
+
+ g_ptr_array_add(timedated_freeable, ret);
+
+ return ret;