kni: fix build with kernel 3.18
authorJincheng Miao <jmiao@redhat.com>
Wed, 10 Dec 2014 03:33:02 +0000 (11:33 +0800)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Thu, 11 Dec 2014 00:42:02 +0000 (01:42 +0100)
From upstream kernel commit 3db2e9cd, strict_strto* serial functions
are removed. So that we should directly used kstrtoul instead.

Add kni/compat.h to be compatible with older kernel.

Signed-off-by: Jincheng Miao <jmiao@redhat.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
lib/librte_eal/linuxapp/kni/compat.h [new file with mode: 0644]
lib/librte_eal/linuxapp/kni/kni_vhost.c

diff --git a/lib/librte_eal/linuxapp/kni/compat.h b/lib/librte_eal/linuxapp/kni/compat.h
new file mode 100644 (file)
index 0000000..0d87421
--- /dev/null
@@ -0,0 +1,15 @@
+/*
+ * Minimal wrappers to allow compiling kni on older kernels.
+ */
+
+#ifndef RHEL_RELEASE_VERSION
+#define RHEL_RELEASE_VERSION(a, b) (((a) << 8) + (b))
+#endif
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39) && \
+       (!(defined(RHEL_RELEASE_CODE) && \
+          RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(6, 4)))
+
+#define kstrtoul strict_strtoul
+
+#endif /* < 2.6.39 */
index 7bcc985..c05c868 100644 (file)
@@ -740,7 +740,7 @@ set_sock_en(struct device *dev, struct device_attribute *attr,
        unsigned long en;
        int err = 0;
 
-       if (0 != strict_strtoul(buf, 0, &en))
+       if (0 != kstrtoul(buf, 0, &en))
                return -EINVAL;
 
        if (en)