From: Justin Pettit <jpettit@nicira.com>
Date: Sun, 1 Aug 2010 00:09:31 +0000 (-0700)
Subject: datapath: Clean-up previous undefined symbol commit
X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a644bae6eec521119252221d4aa989168eccc22b;p=openvswitch

datapath: Clean-up previous undefined symbol commit

The previous commit still had some issues with the
"set_normalized_timespec" symbol being undefined.  Here we just replace
it.  We can search for a more elegant solution later if necessary.
---

diff --git a/datapath/linux-2.6/.gitignore b/datapath/linux-2.6/.gitignore
index 4b5658b2..bd99f240 100644
--- a/datapath/linux-2.6/.gitignore
+++ b/datapath/linux-2.6/.gitignore
@@ -25,6 +25,7 @@
 /random32.c
 /skbuff-openvswitch.c
 /table.c
+/time.c
 /tmp
 /veth.c
 /vport-generic.c
diff --git a/datapath/linux-2.6/Modules.mk b/datapath/linux-2.6/Modules.mk
index b6cb3e92..7f4cae6e 100644
--- a/datapath/linux-2.6/Modules.mk
+++ b/datapath/linux-2.6/Modules.mk
@@ -5,7 +5,8 @@ openvswitch_sources += \
 	linux-2.6/compat-2.6/ip_output-openvswitch.c \
 	linux-2.6/compat-2.6/kmemdup.c \
 	linux-2.6/compat-2.6/random32.c \
-	linux-2.6/compat-2.6/skbuff-openvswitch.c
+	linux-2.6/compat-2.6/skbuff-openvswitch.c \
+	linux-2.6/compat-2.6/time.c
 openvswitch_headers += \
 	linux-2.6/compat-2.6/compat26.h \
 	linux-2.6/compat-2.6/include/asm-generic/bug.h \
@@ -38,7 +39,6 @@ openvswitch_headers += \
 	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 \
diff --git a/datapath/linux-2.6/compat-2.6/include/linux/time.h b/datapath/linux-2.6/compat-2.6/include/linux/time.h
deleted file mode 100644
index fa325fae..00000000
--- a/datapath/linux-2.6/compat-2.6/include/linux/time.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#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
diff --git a/datapath/linux-2.6/compat-2.6/time.c b/datapath/linux-2.6/compat-2.6/time.c
new file mode 100644
index 00000000..b07ee267
--- /dev/null
+++ b/datapath/linux-2.6/compat-2.6/time.c
@@ -0,0 +1,39 @@
+#include <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. */
+
+/**
+ * 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 !
+ */
+void 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 */