[dpdk-dev] [PATCH v5 1/8] Move common functions in eal_thread.c

2015-04-16 Thread Ravi Kerur
On Tue, Apr 14, 2015 at 2:35 PM, Ravi Kerur  wrote:

>
>
> On Tue, Apr 14, 2015 at 6:59 AM, Thomas Monjalon <
> thomas.monjalon at 6wind.com> wrote:
>
>> Hi Ravi,
>>
>> 2015-04-09 12:40, Ravi Kerur:
>> > --- a/lib/librte_eal/common/eal_common_thread.c
>> > +++ b/lib/librte_eal/common/eal_common_thread.c
>> [...]
>> > +#ifdef RTE_EXEC_ENV_BSDAPP
>> > +#include 
>> > +#include 
>> > +#else /* RTE_EXEC_ENV_BSDAPP */
>> >  #include 
>> > +#endif /* RTE_EXEC_ENV_BSDAPP */
>> [...]
>> > +#ifdef RTE_EXEC_ENV_BSDAPP
>> > + RTE_LOG(DEBUG, EAL, "lcore %u is ready (tid=%p;cpuset=[%s%s])\n",
>> > + lcore_id, thread_id, cpuset, ret == 0 ? "" : "...");
>> > +#else /* RTE_EXEC_ENV_BSDAPP */
>> > + RTE_LOG(DEBUG, EAL, "lcore %u is ready (tid=%x;cpuset=[%s%s])\n",
>> > + lcore_id, (int)thread_id, cpuset, ret == 0 ? "" : "...");
>> > +#endif /* RTE_EXEC_ENV_BSDAPP */
>>
>> These lines should stay in bsdapp and linuxapp directory.
>> You can add a new function to eal_thread.h to format the thread id,
>> so you'll be able to use %s in generic log above.
>>
>
> Thomas, sure will make the changes. I will wait for additional comments if
> any for other patches and send v6 together.
>
> Thanks.
>
>
I plan to use pthread_setname_np after pthread_create and use
pthread_getname_np in RTE_LOG. Both these library calls are available in
BSD and Linux. Let me know if this is ok??


[dpdk-dev] [PATCH v5 1/8] Move common functions in eal_thread.c

2015-04-14 Thread Thomas Monjalon
Hi Ravi,

2015-04-09 12:40, Ravi Kerur:
> --- a/lib/librte_eal/common/eal_common_thread.c
> +++ b/lib/librte_eal/common/eal_common_thread.c
[...]
> +#ifdef RTE_EXEC_ENV_BSDAPP
> +#include 
> +#include 
> +#else /* RTE_EXEC_ENV_BSDAPP */
>  #include 
> +#endif /* RTE_EXEC_ENV_BSDAPP */
[...]
> +#ifdef RTE_EXEC_ENV_BSDAPP
> + RTE_LOG(DEBUG, EAL, "lcore %u is ready (tid=%p;cpuset=[%s%s])\n",
> + lcore_id, thread_id, cpuset, ret == 0 ? "" : "...");
> +#else /* RTE_EXEC_ENV_BSDAPP */
> + RTE_LOG(DEBUG, EAL, "lcore %u is ready (tid=%x;cpuset=[%s%s])\n",
> + lcore_id, (int)thread_id, cpuset, ret == 0 ? "" : "...");
> +#endif /* RTE_EXEC_ENV_BSDAPP */

These lines should stay in bsdapp and linuxapp directory.
You can add a new function to eal_thread.h to format the thread id,
so you'll be able to use %s in generic log above.


[dpdk-dev] [PATCH v5 1/8] Move common functions in eal_thread.c

2015-04-14 Thread Ravi Kerur
On Tue, Apr 14, 2015 at 6:59 AM, Thomas Monjalon 
wrote:

> Hi Ravi,
>
> 2015-04-09 12:40, Ravi Kerur:
> > --- a/lib/librte_eal/common/eal_common_thread.c
> > +++ b/lib/librte_eal/common/eal_common_thread.c
> [...]
> > +#ifdef RTE_EXEC_ENV_BSDAPP
> > +#include 
> > +#include 
> > +#else /* RTE_EXEC_ENV_BSDAPP */
> >  #include 
> > +#endif /* RTE_EXEC_ENV_BSDAPP */
> [...]
> > +#ifdef RTE_EXEC_ENV_BSDAPP
> > + RTE_LOG(DEBUG, EAL, "lcore %u is ready (tid=%p;cpuset=[%s%s])\n",
> > + lcore_id, thread_id, cpuset, ret == 0 ? "" : "...");
> > +#else /* RTE_EXEC_ENV_BSDAPP */
> > + RTE_LOG(DEBUG, EAL, "lcore %u is ready (tid=%x;cpuset=[%s%s])\n",
> > + lcore_id, (int)thread_id, cpuset, ret == 0 ? "" : "...");
> > +#endif /* RTE_EXEC_ENV_BSDAPP */
>
> These lines should stay in bsdapp and linuxapp directory.
> You can add a new function to eal_thread.h to format the thread id,
> so you'll be able to use %s in generic log above.
>

Thomas, sure will make the changes. I will wait for additional comments if
any for other patches and send v6 together.

Thanks.


[dpdk-dev] [PATCH v5 1/8] Move common functions in eal_thread.c

2015-04-09 Thread Ravi Kerur
Changes in v5
Rebase to latest code.

Changes in v4
None

Changes in v3
Changed subject to be more explicit on file name inclusion.

Changes in v2
None

Changes in v1
eal_thread.c has minor differences between Linux and BSD, move
entire file into common directory.
Use RTE_EXEC_ENV_BSDAPP to differentiate on minor differences.
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 
---
 lib/librte_eal/bsdapp/eal/Makefile|   2 +-
 lib/librte_eal/bsdapp/eal/eal_thread.c| 152 
 lib/librte_eal/common/eal_common_thread.c | 158 ++
 lib/librte_eal/linuxapp/eal/eal_thread.c  | 152 
 4 files changed, 159 insertions(+), 305 deletions(-)

diff --git a/lib/librte_eal/bsdapp/eal/Makefile 
b/lib/librte_eal/bsdapp/eal/Makefile
index 2357cfa..55971b9 100644
--- a/lib/librte_eal/bsdapp/eal/Makefile
+++ b/lib/librte_eal/bsdapp/eal/Makefile
@@ -87,7 +87,7 @@ 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
index 9a03437..5714b8f 100644
--- a/lib/librte_eal/bsdapp/eal/eal_thread.c
+++ b/lib/librte_eal/bsdapp/eal/eal_thread.c
@@ -35,163 +35,11 @@
 #include 
 #include 
 #include 
-#include 
-#include 
-#include 
-#include 
 #include 

-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
 #include "eal_private.h"
 #include "eal_thread.h"

-RTE_DEFINE_PER_LCORE(unsigned, _lcore_id) = LCORE_ID_ANY;
-RTE_DEFINE_PER_LCORE(unsigned, _socket_id) = (unsigned)SOCKET_ID_ANY;
-RTE_DEFINE_PER_LCORE(rte_cpuset_t, _cpuset);
-
-/*
- * 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)
-{
-   unsigned lcore_id = rte_lcore_id();
-
-   /* acquire system unique id  */
-   rte_gettid();
-
-   /* update EAL thread core affinity */
-   return rte_thread_set_affinity(&lcore_config[lcore_id].cpuset);
-}
-
-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;
-   char cpuset[RTE_CPU_AFFINITY_STR_LEN];
-
-   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");
-
-   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");
-
-   ret = eal_thread_dump_affinity(cpuset, RTE_CPU_AFFINITY_STR_LEN);
-
-   RTE_LOG(DEBUG, EAL, "lcore %u is ready (tid=%p;cpuset=[%s%s])\n",
-   lcore_id, thread_id, cpuset, ret == 0 ? "" : "...");
-
-   /* read on our pipe to get commands */
-   while (1) {
-   void *fct_arg;
-
-