eal_thread.c has minor difference between Linux and BSD, move
into common directory.
Use RTE_EXEC_ENV_BSDAPP to differentiate minor difference.
Rename eal_thread.c to eal_common_thread.c
Makefile changes to reflect file move and name change.
Fix checkpatch warnings.

Signed-off-by: Ravi Kerur <rkerur at gmail.com>
---
 lib/librte_eal/bsdapp/eal/Makefile        |   6 +-
 lib/librte_eal/bsdapp/eal/eal_thread.c    | 233 ----------------------------
 lib/librte_eal/common/eal_common_thread.c | 248 ++++++++++++++++++++++++++++++
 lib/librte_eal/linuxapp/eal/Makefile      |   6 +-
 lib/librte_eal/linuxapp/eal/eal_thread.c  | 233 ----------------------------
 5 files changed, 254 insertions(+), 472 deletions(-)
 delete mode 100644 lib/librte_eal/bsdapp/eal/eal_thread.c
 create mode 100644 lib/librte_eal/common/eal_common_thread.c
 delete mode 100644 lib/librte_eal/linuxapp/eal/eal_thread.c

diff --git a/lib/librte_eal/bsdapp/eal/Makefile 
b/lib/librte_eal/bsdapp/eal/Makefile
index 9b83e11..92dd9a6 100644
--- a/lib/librte_eal/bsdapp/eal/Makefile
+++ b/lib/librte_eal/bsdapp/eal/Makefile
@@ -50,7 +50,6 @@ CFLAGS += $(WERROR_FLAGS) -O3
 SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) := eal.c
 SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_memory.c
 SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_hugepage_info.c
-SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_thread.c
 SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_log.c
 SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_pci.c
 SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_lcore.c
@@ -73,16 +72,17 @@ SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_common_devargs.c
 SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_common_dev.c
 SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_common_options.c
 SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_common_debug.c
+SRCS-$(CONFIG_RTE_LIBRTE_EAL_BSDAPP) += eal_common_thread.c

 CFLAGS_eal.o := -D_GNU_SOURCE
-#CFLAGS_eal_thread.o := -D_GNU_SOURCE
+#CFLAGS_eal_common_thread.o := -D_GNU_SOURCE
 CFLAGS_eal_log.o := -D_GNU_SOURCE
 CFLAGS_eal_common_log.o := -D_GNU_SOURCE

 # workaround for a gcc bug with noreturn attribute
 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12603
 ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y)
-CFLAGS_eal_thread.o += -Wno-return-type
+CFLAGS_eal_common_thread.o += -Wno-return-type
 CFLAGS_eal_hpet.o += -Wno-return-type
 endif

diff --git a/lib/librte_eal/bsdapp/eal/eal_thread.c 
b/lib/librte_eal/bsdapp/eal/eal_thread.c
deleted file mode 100644
index ab05368..0000000
--- a/lib/librte_eal/bsdapp/eal/eal_thread.c
+++ /dev/null
@@ -1,233 +0,0 @@
-/*-
- *   BSD LICENSE
- *
- *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
- *   All rights reserved.
- *
- *   Redistribution and use in source and binary forms, with or without
- *   modification, are permitted provided that the following conditions
- *   are met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in
- *       the documentation and/or other materials provided with the
- *       distribution.
- *     * Neither the name of Intel Corporation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <unistd.h>
-#include <sched.h>
-#include <pthread_np.h>
-#include <sys/queue.h>
-
-#include <rte_debug.h>
-#include <rte_atomic.h>
-#include <rte_launch.h>
-#include <rte_log.h>
-#include <rte_memory.h>
-#include <rte_memzone.h>
-#include <rte_per_lcore.h>
-#include <rte_tailq.h>
-#include <rte_eal.h>
-#include <rte_per_lcore.h>
-#include <rte_lcore.h>
-
-#include "eal_private.h"
-#include "eal_thread.h"
-
-RTE_DEFINE_PER_LCORE(unsigned, _lcore_id);
-
-/*
- * Send a message to a slave lcore identified by slave_id to call a
- * function f with argument arg. Once the execution is done, the
- * remote lcore switch in FINISHED state.
- */
-int
-rte_eal_remote_launch(int (*f)(void *), void *arg, unsigned slave_id)
-{
-       int n;
-       char c = 0;
-       int m2s = lcore_config[slave_id].pipe_master2slave[1];
-       int s2m = lcore_config[slave_id].pipe_slave2master[0];
-
-       if (lcore_config[slave_id].state != WAIT)
-               return -EBUSY;
-
-       lcore_config[slave_id].f = f;
-       lcore_config[slave_id].arg = arg;
-
-       /* send message */
-       n = 0;
-       while (n == 0 || (n < 0 && errno == EINTR))
-               n = write(m2s, &c, 1);
-       if (n < 0)
-               rte_panic("cannot write on configuration pipe\n");
-
-       /* wait ack */
-       do {
-               n = read(s2m, &c, 1);
-       } while (n < 0 && errno == EINTR);
-
-       if (n <= 0)
-               rte_panic("cannot read on configuration pipe\n");
-
-       return 0;
-}
-
-/* set affinity for current thread */
-static int
-eal_thread_set_affinity(void)
-{
-       int s;
-       pthread_t thread;
-
-/*
- * According to the section VERSIONS of the CPU_ALLOC man page:
- *
- * The CPU_ZERO(), CPU_SET(), CPU_CLR(), and CPU_ISSET() macros were added
- * in glibc 2.3.3.
- *
- * CPU_COUNT() first appeared in glibc 2.6.
- *
- * CPU_AND(),     CPU_OR(),     CPU_XOR(),    CPU_EQUAL(),    CPU_ALLOC(),
- * CPU_ALLOC_SIZE(), CPU_FREE(), CPU_ZERO_S(),  CPU_SET_S(),  CPU_CLR_S(),
- * CPU_ISSET_S(),  CPU_AND_S(), CPU_OR_S(), CPU_XOR_S(), and CPU_EQUAL_S()
- * first appeared in glibc 2.7.
- */
-#if defined(CPU_ALLOC)
-       size_t size;
-       cpu_set_t *cpusetp;
-
-       cpusetp = CPU_ALLOC(RTE_MAX_LCORE);
-       if (cpusetp == NULL) {
-               RTE_LOG(ERR, EAL, "CPU_ALLOC failed\n");
-               return -1;
-       }
-
-       size = CPU_ALLOC_SIZE(RTE_MAX_LCORE);
-       CPU_ZERO_S(size, cpusetp);
-       CPU_SET_S(rte_lcore_id(), size, cpusetp);
-
-       thread = pthread_self();
-       s = pthread_setaffinity_np(thread, size, cpusetp);
-       if (s != 0) {
-               RTE_LOG(ERR, EAL, "pthread_setaffinity_np failed\n");
-               CPU_FREE(cpusetp);
-               return -1;
-       }
-
-       CPU_FREE(cpusetp);
-#else /* CPU_ALLOC */
-       cpuset_t cpuset;
-       CPU_ZERO( &cpuset );
-       CPU_SET( rte_lcore_id(), &cpuset );
-
-       thread = pthread_self();
-       s = pthread_setaffinity_np(thread, sizeof( cpuset ), &cpuset);
-       if (s != 0) {
-               RTE_LOG(ERR, EAL, "pthread_setaffinity_np failed\n");
-               return -1;
-       }
-#endif
-       return 0;
-}
-
-void eal_thread_init_master(unsigned lcore_id)
-{
-       /* set the lcore ID in per-lcore memory area */
-       RTE_PER_LCORE(_lcore_id) = lcore_id;
-
-       /* set CPU affinity */
-       if (eal_thread_set_affinity() < 0)
-               rte_panic("cannot set affinity\n");
-}
-
-/* main loop of threads */
-__attribute__((noreturn)) void *
-eal_thread_loop(__attribute__((unused)) void *arg)
-{
-       char c;
-       int n, ret;
-       unsigned lcore_id;
-       pthread_t thread_id;
-       int m2s, s2m;
-
-       thread_id = pthread_self();
-
-       /* retrieve our lcore_id from the configuration structure */
-       RTE_LCORE_FOREACH_SLAVE(lcore_id) {
-               if (thread_id == lcore_config[lcore_id].thread_id)
-                       break;
-       }
-       if (lcore_id == RTE_MAX_LCORE)
-               rte_panic("cannot retrieve lcore id\n");
-
-       RTE_LOG(DEBUG, EAL, "Core %u is ready (tid=%p)\n",
-               lcore_id, thread_id);
-
-       m2s = lcore_config[lcore_id].pipe_master2slave[0];
-       s2m = lcore_config[lcore_id].pipe_slave2master[1];
-
-       /* set the lcore ID in per-lcore memory area */
-       RTE_PER_LCORE(_lcore_id) = lcore_id;
-
-       /* set CPU affinity */
-       if (eal_thread_set_affinity() < 0)
-               rte_panic("cannot set affinity\n");
-
-       /* read on our pipe to get commands */
-       while (1) {
-               void *fct_arg;
-
-               /* wait command */
-               do {
-                       n = read(m2s, &c, 1);
-               } while (n < 0 && errno == EINTR);
-
-               if (n <= 0)
-                       rte_panic("cannot read on configuration pipe\n");
-
-               lcore_config[lcore_id].state = RUNNING;
-
-               /* send ack */
-               n = 0;
-               while (n == 0 || (n < 0 && errno == EINTR))
-                       n = write(s2m, &c, 1);
-               if (n < 0)
-                       rte_panic("cannot write on configuration pipe\n");
-
-               if (lcore_config[lcore_id].f == NULL)
-                       rte_panic("NULL function pointer\n");
-
-               /* call the function and store the return value */
-               fct_arg = lcore_config[lcore_id].arg;
-               ret = lcore_config[lcore_id].f(fct_arg);
-               lcore_config[lcore_id].ret = ret;
-               rte_wmb();
-               lcore_config[lcore_id].state = FINISHED;
-       }
-
-       /* never reached */
-       /* pthread_exit(NULL); */
-       /* return NULL; */
-}
diff --git a/lib/librte_eal/common/eal_common_thread.c 
b/lib/librte_eal/common/eal_common_thread.c
new file mode 100644
index 0000000..9688f9a
--- /dev/null
+++ b/lib/librte_eal/common/eal_common_thread.c
@@ -0,0 +1,248 @@
+/*-
+ *   BSD LICENSE
+ *
+ *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+ *   All rights reserved.
+ *
+ *   Redistribution and use in source and binary forms, with or without
+ *   modification, are permitted provided that the following conditions
+ *   are met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in
+ *       the documentation and/or other materials provided with the
+ *       distribution.
+ *     * Neither the name of Intel Corporation nor the names of its
+ *       contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <unistd.h>
+
+#ifdef RTE_EXEC_ENV_BSDAPP
+#include <pthread_np.h>
+#else  /* RTE_EXEC_ENV_BSDAPP */
+#include <pthread.h>
+#endif /* RTE_EXEC_ENV_BSDAPP */
+
+#include <sched.h>
+#include <sys/queue.h>
+
+#include <rte_debug.h>
+#include <rte_atomic.h>
+#include <rte_launch.h>
+#include <rte_log.h>
+#include <rte_memory.h>
+#include <rte_memzone.h>
+#include <rte_per_lcore.h>
+#include <rte_tailq.h>
+#include <rte_eal.h>
+#include <rte_per_lcore.h>
+#include <rte_lcore.h>
+
+#include "eal_private.h"
+#include "eal_thread.h"
+
+RTE_DEFINE_PER_LCORE(unsigned, _lcore_id);
+
+/*
+ * Send a message to a slave lcore identified by slave_id to call a
+ * function f with argument arg. Once the execution is done, the
+ * remote lcore switch in FINISHED state.
+ */
+int
+rte_eal_remote_launch(int (*f)(void *), void *arg, unsigned slave_id)
+{
+       int n;
+       char c = 0;
+       int m2s = lcore_config[slave_id].pipe_master2slave[1];
+       int s2m = lcore_config[slave_id].pipe_slave2master[0];
+
+       if (lcore_config[slave_id].state != WAIT)
+               return -EBUSY;
+
+       lcore_config[slave_id].f = f;
+       lcore_config[slave_id].arg = arg;
+
+       /* send message */
+       n = 0;
+       while (n == 0 || (n < 0 && errno == EINTR))
+               n = write(m2s, &c, 1);
+       if (n < 0)
+               rte_panic("cannot write on configuration pipe\n");
+
+       /* wait ack */
+       do {
+               n = read(s2m, &c, 1);
+       } while (n < 0 && errno == EINTR);
+
+       if (n <= 0)
+               rte_panic("cannot read on configuration pipe\n");
+
+       return 0;
+}
+
+/* set affinity for current thread */
+static int
+eal_thread_set_affinity(void)
+{
+       int s;
+       pthread_t thread;
+
+/*
+ * According to the section VERSIONS of the CPU_ALLOC man page:
+ *
+ * The CPU_ZERO(), CPU_SET(), CPU_CLR(), and CPU_ISSET() macros were added
+ * in glibc 2.3.3.
+ *
+ * CPU_COUNT() first appeared in glibc 2.6.
+ *
+ * CPU_AND(),     CPU_OR(),     CPU_XOR(),    CPU_EQUAL(),    CPU_ALLOC(),
+ * CPU_ALLOC_SIZE(), CPU_FREE(), CPU_ZERO_S(),  CPU_SET_S(),  CPU_CLR_S(),
+ * CPU_ISSET_S(),  CPU_AND_S(), CPU_OR_S(), CPU_XOR_S(), and CPU_EQUAL_S()
+ * first appeared in glibc 2.7.
+ */
+#if defined(CPU_ALLOC)
+       size_t size;
+       cpu_set_t *cpusetp;
+
+       cpusetp = CPU_ALLOC(RTE_MAX_LCORE);
+       if (cpusetp == NULL) {
+               RTE_LOG(ERR, EAL, "CPU_ALLOC failed\n");
+               return -1;
+       }
+
+       size = CPU_ALLOC_SIZE(RTE_MAX_LCORE);
+       CPU_ZERO_S(size, cpusetp);
+       CPU_SET_S(rte_lcore_id(), size, cpusetp);
+
+       thread = pthread_self();
+       s = pthread_setaffinity_np(thread, size, cpusetp);
+       if (s != 0) {
+               RTE_LOG(ERR, EAL, "pthread_setaffinity_np failed\n");
+               CPU_FREE(cpusetp);
+               return -1;
+       }
+
+       CPU_FREE(cpusetp);
+#else /* CPU_ALLOC */
+#ifdef RTE_EXEC_ENV_BSDAPP
+       cpuset_t cpuset;
+#else  /* RTE_EXEC_ENV_BSDAPP */
+       cpu_set_t cpuset;
+#endif /* RTE_EXEC_ENV_BSDAPP */
+       CPU_ZERO(&cpuset);
+       CPU_SET(rte_lcore_id(), &cpuset);
+
+       thread = pthread_self();
+       s = pthread_setaffinity_np(thread, sizeof(cpuset), &cpuset);
+       if (s != 0) {
+               RTE_LOG(ERR, EAL, "pthread_setaffinity_np failed\n");
+               return -1;
+       }
+#endif
+       return 0;
+}
+
+void eal_thread_init_master(unsigned lcore_id)
+{
+       /* set the lcore ID in per-lcore memory area */
+       RTE_PER_LCORE(_lcore_id) = lcore_id;
+
+       /* set CPU affinity */
+       if (eal_thread_set_affinity() < 0)
+               rte_panic("cannot set affinity\n");
+}
+
+/* main loop of threads */
+__attribute__((noreturn)) void *
+eal_thread_loop(__attribute__((unused)) void *arg)
+{
+       char c;
+       int n, ret;
+       unsigned lcore_id;
+       pthread_t thread_id;
+       int m2s, s2m;
+
+       thread_id = pthread_self();
+
+       /* retrieve our lcore_id from the configuration structure */
+       RTE_LCORE_FOREACH_SLAVE(lcore_id) {
+               if (thread_id == lcore_config[lcore_id].thread_id)
+                       break;
+       }
+       if (lcore_id == RTE_MAX_LCORE)
+               rte_panic("cannot retrieve lcore id\n");
+
+#ifdef RTE_EXEC_ENV_BSDAPP
+       RTE_LOG(DEBUG, EAL, "Core %u is ready (tid=%p)\n",
+               lcore_id, thread_id);
+#else  /* RTE_EXEC_ENV_BSDAPP */
+       RTE_LOG(DEBUG, EAL, "Core %u is ready (tid=%x)\n",
+               lcore_id, (int)thread_id);
+#endif /* RTE_EXEC_ENV_BSDAPP */
+
+       m2s = lcore_config[lcore_id].pipe_master2slave[0];
+       s2m = lcore_config[lcore_id].pipe_slave2master[1];
+
+       /* set the lcore ID in per-lcore memory area */
+       RTE_PER_LCORE(_lcore_id) = lcore_id;
+
+       /* set CPU affinity */
+       if (eal_thread_set_affinity() < 0)
+               rte_panic("cannot set affinity\n");
+
+       /* read on our pipe to get commands */
+       while (1) {
+               void *fct_arg;
+
+               /* wait command */
+               do {
+                       n = read(m2s, &c, 1);
+               } while (n < 0 && errno == EINTR);
+
+               if (n <= 0)
+                       rte_panic("cannot read on configuration pipe\n");
+
+               lcore_config[lcore_id].state = RUNNING;
+
+               /* send ack */
+               n = 0;
+               while (n == 0 || (n < 0 && errno == EINTR))
+                       n = write(s2m, &c, 1);
+               if (n < 0)
+                       rte_panic("cannot write on configuration pipe\n");
+
+               if (lcore_config[lcore_id].f == NULL)
+                       rte_panic("NULL function pointer\n");
+
+               /* call the function and store the return value */
+               fct_arg = lcore_config[lcore_id].arg;
+               ret = lcore_config[lcore_id].f(fct_arg);
+               lcore_config[lcore_id].ret = ret;
+               rte_wmb();
+               lcore_config[lcore_id].state = FINISHED;
+       }
+
+       /* never reached */
+       /* pthread_exit(NULL); */
+       /* return NULL; */
+}
diff --git a/lib/librte_eal/linuxapp/eal/Makefile 
b/lib/librte_eal/linuxapp/eal/Makefile
index 87b9bfc..9252333 100644
--- a/lib/librte_eal/linuxapp/eal/Makefile
+++ b/lib/librte_eal/linuxapp/eal/Makefile
@@ -56,7 +56,6 @@ SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_memory.c
 ifeq ($(CONFIG_RTE_LIBRTE_XEN_DOM0),y)
 SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_xen_memory.c
 endif
-SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_thread.c
 SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_log.c
 SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_pci.c
 SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_pci_uio.c
@@ -85,9 +84,10 @@ SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += 
eal_common_devargs.c
 SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_common_dev.c
 SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_common_options.c
 SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_common_debug.c
+SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_common_thread.c

 CFLAGS_eal.o := -D_GNU_SOURCE
-CFLAGS_eal_thread.o := -D_GNU_SOURCE
+CFLAGS_eal_common_thread.o := -D_GNU_SOURCE
 CFLAGS_eal_log.o := -D_GNU_SOURCE
 CFLAGS_eal_common_log.o := -D_GNU_SOURCE
 CFLAGS_eal_hugepage_info.o := -D_GNU_SOURCE
@@ -98,7 +98,7 @@ CFLAGS_eal_common_whitelist.o := -D_GNU_SOURCE
 # workaround for a gcc bug with noreturn attribute
 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12603
 ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y)
-CFLAGS_eal_thread.o += -Wno-return-type
+CFLAGS_eal_common_thread.o += -Wno-return-type
 endif

 INC := rte_interrupts.h rte_kni_common.h rte_dom0_common.h
diff --git a/lib/librte_eal/linuxapp/eal/eal_thread.c 
b/lib/librte_eal/linuxapp/eal/eal_thread.c
deleted file mode 100644
index 80a985f..0000000
--- a/lib/librte_eal/linuxapp/eal/eal_thread.c
+++ /dev/null
@@ -1,233 +0,0 @@
-/*-
- *   BSD LICENSE
- *
- *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
- *   All rights reserved.
- *
- *   Redistribution and use in source and binary forms, with or without
- *   modification, are permitted provided that the following conditions
- *   are met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in
- *       the documentation and/or other materials provided with the
- *       distribution.
- *     * Neither the name of Intel Corporation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <unistd.h>
-#include <pthread.h>
-#include <sched.h>
-#include <sys/queue.h>
-
-#include <rte_debug.h>
-#include <rte_atomic.h>
-#include <rte_launch.h>
-#include <rte_log.h>
-#include <rte_memory.h>
-#include <rte_memzone.h>
-#include <rte_per_lcore.h>
-#include <rte_tailq.h>
-#include <rte_eal.h>
-#include <rte_per_lcore.h>
-#include <rte_lcore.h>
-
-#include "eal_private.h"
-#include "eal_thread.h"
-
-RTE_DEFINE_PER_LCORE(unsigned, _lcore_id);
-
-/*
- * Send a message to a slave lcore identified by slave_id to call a
- * function f with argument arg. Once the execution is done, the
- * remote lcore switch in FINISHED state.
- */
-int
-rte_eal_remote_launch(int (*f)(void *), void *arg, unsigned slave_id)
-{
-       int n;
-       char c = 0;
-       int m2s = lcore_config[slave_id].pipe_master2slave[1];
-       int s2m = lcore_config[slave_id].pipe_slave2master[0];
-
-       if (lcore_config[slave_id].state != WAIT)
-               return -EBUSY;
-
-       lcore_config[slave_id].f = f;
-       lcore_config[slave_id].arg = arg;
-
-       /* send message */
-       n = 0;
-       while (n == 0 || (n < 0 && errno == EINTR))
-               n = write(m2s, &c, 1);
-       if (n < 0)
-               rte_panic("cannot write on configuration pipe\n");
-
-       /* wait ack */
-       do {
-               n = read(s2m, &c, 1);
-       } while (n < 0 && errno == EINTR);
-
-       if (n <= 0)
-               rte_panic("cannot read on configuration pipe\n");
-
-       return 0;
-}
-
-/* set affinity for current thread */
-static int
-eal_thread_set_affinity(void)
-{
-       int s;
-       pthread_t thread;
-
-/*
- * According to the section VERSIONS of the CPU_ALLOC man page:
- *
- * The CPU_ZERO(), CPU_SET(), CPU_CLR(), and CPU_ISSET() macros were added
- * in glibc 2.3.3.
- *
- * CPU_COUNT() first appeared in glibc 2.6.
- *
- * CPU_AND(),     CPU_OR(),     CPU_XOR(),    CPU_EQUAL(),    CPU_ALLOC(),
- * CPU_ALLOC_SIZE(), CPU_FREE(), CPU_ZERO_S(),  CPU_SET_S(),  CPU_CLR_S(),
- * CPU_ISSET_S(),  CPU_AND_S(), CPU_OR_S(), CPU_XOR_S(), and CPU_EQUAL_S()
- * first appeared in glibc 2.7.
- */
-#if defined(CPU_ALLOC)
-       size_t size;
-       cpu_set_t *cpusetp;
-
-       cpusetp = CPU_ALLOC(RTE_MAX_LCORE);
-       if (cpusetp == NULL) {
-               RTE_LOG(ERR, EAL, "CPU_ALLOC failed\n");
-               return -1;
-       }
-
-       size = CPU_ALLOC_SIZE(RTE_MAX_LCORE);
-       CPU_ZERO_S(size, cpusetp);
-       CPU_SET_S(rte_lcore_id(), size, cpusetp);
-
-       thread = pthread_self();
-       s = pthread_setaffinity_np(thread, size, cpusetp);
-       if (s != 0) {
-               RTE_LOG(ERR, EAL, "pthread_setaffinity_np failed\n");
-               CPU_FREE(cpusetp);
-               return -1;
-       }
-
-       CPU_FREE(cpusetp);
-#else /* CPU_ALLOC */
-       cpu_set_t cpuset;
-       CPU_ZERO( &cpuset );
-       CPU_SET( rte_lcore_id(), &cpuset );
-
-       thread = pthread_self();
-       s = pthread_setaffinity_np(thread, sizeof( cpuset ), &cpuset);
-       if (s != 0) {
-               RTE_LOG(ERR, EAL, "pthread_setaffinity_np failed\n");
-               return -1;
-       }
-#endif
-       return 0;
-}
-
-void eal_thread_init_master(unsigned lcore_id)
-{
-       /* set the lcore ID in per-lcore memory area */
-       RTE_PER_LCORE(_lcore_id) = lcore_id;
-
-       /* set CPU affinity */
-       if (eal_thread_set_affinity() < 0)
-               rte_panic("cannot set affinity\n");
-}
-
-/* main loop of threads */
-__attribute__((noreturn)) void *
-eal_thread_loop(__attribute__((unused)) void *arg)
-{
-       char c;
-       int n, ret;
-       unsigned lcore_id;
-       pthread_t thread_id;
-       int m2s, s2m;
-
-       thread_id = pthread_self();
-
-       /* retrieve our lcore_id from the configuration structure */
-       RTE_LCORE_FOREACH_SLAVE(lcore_id) {
-               if (thread_id == lcore_config[lcore_id].thread_id)
-                       break;
-       }
-       if (lcore_id == RTE_MAX_LCORE)
-               rte_panic("cannot retrieve lcore id\n");
-
-       RTE_LOG(DEBUG, EAL, "Core %u is ready (tid=%x)\n",
-               lcore_id, (int)thread_id);
-
-       m2s = lcore_config[lcore_id].pipe_master2slave[0];
-       s2m = lcore_config[lcore_id].pipe_slave2master[1];
-
-       /* set the lcore ID in per-lcore memory area */
-       RTE_PER_LCORE(_lcore_id) = lcore_id;
-
-       /* set CPU affinity */
-       if (eal_thread_set_affinity() < 0)
-               rte_panic("cannot set affinity\n");
-
-       /* read on our pipe to get commands */
-       while (1) {
-               void *fct_arg;
-
-               /* wait command */
-               do {
-                       n = read(m2s, &c, 1);
-               } while (n < 0 && errno == EINTR);
-
-               if (n <= 0)
-                       rte_panic("cannot read on configuration pipe\n");
-
-               lcore_config[lcore_id].state = RUNNING;
-
-               /* send ack */
-               n = 0;
-               while (n == 0 || (n < 0 && errno == EINTR))
-                       n = write(s2m, &c, 1);
-               if (n < 0)
-                       rte_panic("cannot write on configuration pipe\n");
-
-               if (lcore_config[lcore_id].f == NULL)
-                       rte_panic("NULL function pointer\n");
-
-               /* call the function and store the return value */
-               fct_arg = lcore_config[lcore_id].arg;
-               ret = lcore_config[lcore_id].f(fct_arg);
-               lcore_config[lcore_id].ret = ret;
-               rte_wmb();
-               lcore_config[lcore_id].state = FINISHED;
-       }
-
-       /* never reached */
-       /* pthread_exit(NULL); */
-       /* return NULL; */
-}
-- 
1.9.1

Reply via email to