linux-2.6/compat-2.6/include/linux/slab.h \
linux-2.6/compat-2.6/include/linux/stddef.h \
linux-2.6/compat-2.6/include/linux/tcp.h \
+ linux-2.6/compat-2.6/include/linux/time.h \
linux-2.6/compat-2.6/include/linux/timer.h \
linux-2.6/compat-2.6/include/linux/types.h \
linux-2.6/compat-2.6/include/linux/udp.h \
--- /dev/null
+#ifndef __LINUX_TIME_WRAPPER_H
+#define __LINUX_TIME_WRAPPER_H 1
+
+#include_next <linux/time.h>
+
+#include <linux/version.h>
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26)
+
+/* "set_normalized_timespec" is defined but not exported in kernels
+ * before 2.6.26. */
+#define set_normalized_timespec(ts, sec, nsec) \
+ rpl_set_normalized_timespec(ts, sec, nsec)
+
+/**
+ * set_normalized_timespec - set timespec sec and nsec parts and normalize
+ *
+ * @ts: pointer to timespec variable to be set
+ * @sec: seconds to set
+ * @nsec: nanoseconds to set
+ *
+ * Set seconds and nanoseconds field of a timespec variable and
+ * normalize to the timespec storage format
+ *
+ * Note: The tv_nsec part is always in the range of
+ * 0 <= tv_nsec < NSEC_PER_SEC
+ * For negative values only the tv_sec field is negative !
+ */
+static inline void rpl_set_normalized_timespec(struct timespec *ts,
+ time_t sec, long nsec)
+{
+ while (nsec >= NSEC_PER_SEC) {
+ nsec -= NSEC_PER_SEC;
+ ++sec;
+ }
+ while (nsec < 0) {
+ nsec += NSEC_PER_SEC;
+ --sec;
+ }
+ ts->tv_sec = sec;
+ ts->tv_nsec = nsec;
+}
+
+#endif /* linux kernel < 2.6.26 */
+
+#endif