examples: fix typdef in performance thread app
PATCH 1/1 examples: fix typdef in performance thread app
The function pthread_create() expects void *(*func) (void *) for function pointer, however, lthread_func_t was defined as void (*func) (void *), so now gcc 8.1 warns that the cast is incorrect, causing a compilation failure. This patch changes the declaration of lthread_func_t from returning a void to returning a void*, and then changes the sample app in the relevant places that are affected by the typedef change.
--- examples/performance-thread/common/lthread.c | 3 ++- examples/performance-thread/common/lthread_api.h | 2 +- examples/performance-thread/l3fwd-thread/main.c | 15 ++++++++------- examples/performance-thread/pthread_shim/main.c | 4 ++-- .../pthread_shim/pthread_shim.c | 4 ++-- 5 files changed, 15 insertions(+), 13 deletions(-)
examples/performance-thread/common/lthread.c +2 -1
@@ -320,13 +320,14 @@ struct lthread *lthread_current(void)/* * Tasklet to cancel a thread */ -static void +static void *_cancel (void *arg) {struct lthread *lt = (struct lthread *) arg; lt->state |=BIT (ST_LT_CANCELLED );lthread_detach (); +return NULL ; }
examples/performance-thread/common/lthread_api.h +1 -1
@@ -143,7 +143,7 @@ struct lthread_mutex;struct lthread_condattr ;struct lthread_mutexattr ; -typedef void (*lthread_func_t ) (void *); +typedef void *(*lthread_func_t ) (void *);/* * Define the size of stack for an lthread
examples/performance-thread/l3fwd-thread/main.c +8 -7
@@ -1990,7 +1990,7 @@ cpu_load_collector(__rte_unused void *arg) {* * This loop is used to start empty scheduler on lcore. */ -static void +static void * lthread_null(__rte_unused void *args) {int lcore_id =rte_lcore_id ();
@@ -2000,7 +2000,7 @@ lthread_null(__rte_unused void *args) }/* main processing loop */ -static void +static void *lthread_tx_per_ring (void *dummy) {int nb_rx;
@@ -2053,7 +2053,7 @@ lthread_tx_per_ring(void *dummy)* This lthread is used to spawn one new lthread per ring from producers. * */ -static void +static void *lthread_tx (void *args) {struct lthread *lt;
@@ -2100,7 +2100,7 @@ lthread_tx(void *args) } } -static void +static void *lthread_rx (void *dummy) {int ret;
@@ -2124,7 +2124,7 @@ lthread_rx(void *dummy)if (rx_conf->n_rx_queue ==0 ) {RTE_LOG (INFO ,L3FWD ,"lcore %u has nothing to do\n" ,rte_lcore_id ()); -return ; +return NULL ; }RTE_LOG (INFO ,L3FWD ,"Entering main Rx loop on lcore %u\n" ,rte_lcore_id ());
@@ -2204,8 +2204,9 @@ lthread_rx(void *dummy)* This lthread loop spawns all rx and tx lthreads on master lcore */ -static void -lthread_spawner(__rte_unused void *arg) { +static void * +lthread_spawner(__rte_unused void *arg) +{struct lthread *lt[MAX_THREAD ];int i;int n_thread =0 ;
examples/performance-thread/pthread_shim/main.c +2 -2
@@ -119,8 +119,8 @@ void *helloworld_pthread(void *arg)*/ __threadpthread_t tid[HELLOW_WORLD_MAX_LTHREADS ]; -static void initial_lthread (void *args); -static void initial_lthread (void *args __attribute__((unused))) +static void *initial_lthread (void *args); +static void *initial_lthread (void *args __attribute__((unused))) {int lcore = (int )rte_lcore_id ();/*
examples/performance-thread/pthread_shim/pthread_shim.c +2 -2
@@ -365,7 +365,7 @@ int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex)int pthread_create (pthread_t *__restrict tid,const pthread_attr_t *__restrict attr, -void *(func ) (void *), +lthread_func_t func,void *__restrict arg) {if (override) {
@@ -390,7 +390,7 @@ pthread_create(pthread_t *__restrict tid, } }return lthread_create ((struct lthread **)tid, lcore, - (void (*)(void *))func, arg); + func, arg); }return _sys_pthread_funcs.f_pthread_create (tid, attr, func, arg); }
Signature · 1 line
2.17.0
Quoted 17 lines
-----Original Message-----
From: dev [mailto:[email protected]] On Behalf Of David Hunt
Sent: Thursday, May 10, 2018 6:31 AM
To: [email protected]
Cc: Mcnamara, John <[email protected]>; Hunt, David <[email protected]>
Subject: [dpdk-dev] [PATCH] examples: fix typdef in performance thread appThe function
pthread_create()expects void *(*func) (void *) for function pointer, however,lthread_func_twas defined as void (*func) (void *), so now gcc 8.1 warns that the cast is incorrect, causing a compilation failure. This patch changes the declaration oflthread_func_tfrom returning a void to returning a void*, and then changes the sample app in the relevant places that are affected by the typedef change.
Quoted 3 lines
Fixes 116819b9ed0d ("examples/performance-thread: add lthread subsystem")Signed-off-by David Hunt <[email protected]>
Missing "Cc: [email protected]"
10/05/2018 07:31, David Hunt:
Quoted 12 lines
The function
pthread_create()expects void *(*func) (void *) for function pointer, however,lthread_func_twas defined as void (*func) (void *), so now gcc 8.1 warns that the cast is incorrect, causing a compilation failure. This patch changes the declaration oflthread_func_tfrom returning a void to returning a void*, and then changes the sample app in the relevant places that are affected by the typedef change.Fixes 116819b9ed0d ("examples/performance-thread: add lthread subsystem")Signed-off-by David Hunt <[email protected]>---
[...]
examples/performance-thread/pthread_shim/main.c void *helloworld_pthread(void *arg) · line 122
Quoted 3 lines
examples/performance-thread/pthread_shim/main.c +1
-2-static void initial_lthread (void *args); -static void initial_lthread (void *args __attribute__((unused))) +static void *initial_lthread (void *args);
This declaration can be removed.
Quoted 2 lines
+static void *initial_lthread(void *args __attribute__((unused)))
{
The function must return a pointer (like NULL) at the end.
Please check that all threads are returning something.
Hi Thomas,
Quoted 19 lines · Thomas Monjalon
10/05/2018 07:31, David Hunt:
Quoted 12 lines
The function
pthread_create()expects void *(*func) (void *) for function pointer, however,lthread_func_twas defined as void (*func) (void *), so now gcc 8.1 warns that the cast is incorrect, causing a compilation failure. This patch changes the declaration oflthread_func_tfrom returning a void to returning a void*, and then changes the sample app in the relevant places that are affected by the typedef change.Fixes 116819b9ed0d ("examples/performance-thread: add lthread subsystem")Signed-off-by David Hunt <[email protected]>---
[...]
examples/performance-thread/pthread_shim/main.c void *helloworld_pthread(void *arg) · line 122
Quoted 3 lines
examples/performance-thread/pthread_shim/main.c +1
-2-static void initial_lthread (void *args); -static void initial_lthread (void *args __attribute__((unused))) +static void *initial_lthread (void *args);This declaration can be removed.
Quoted 6 lines
Quoted 2 lines
+static void *initial_lthread(void *args __attribute__((unused)))
{The function must return a pointer (like NULL) at the end.
Please check that all threads are returning something.
Sure, Thomas, I've made updates based on your suggestions and pushed up a v2. Rgds,
Dave.
PATCH v2 1/1 examples: fix typdef in performance thread app
In reply to David HuntThe function pthread_create() expects void *(*func) (void *) for function pointer, however, lthread_func_t was defined as void (*func) (void *), so now gcc 8.1 warns that the cast is incorrect, causing a compilation failure. This patch changes the declaration of lthread_func_t from returning a void to returning a void*, and then changes the sample app in the relevant places that are affected by the typedef change.
---
Changes in v2
1. Removed a couple of un-needed function declarations (they are now static).
2. Ensure each thread returns something (i.e. NULL) nows that their declarations have changed to returning void *.
--- examples/performance-thread/common/lthread.c | 3 ++- .../performance-thread/common/lthread_api.h | 2 +- .../performance-thread/l3fwd-thread/main.c | 20 ++++++++++++------- .../performance-thread/pthread_shim/main.c | 6 ++---- .../pthread_shim/pthread_shim.c | 4 ++-- 5 files changed, 20 insertions(+), 15 deletions(-)
examples/performance-thread/common/lthread.c +2 -1
@@ -320,13 +320,14 @@ struct lthread *lthread_current(void)/* * Tasklet to cancel a thread */ -static void +static void *_cancel (void *arg) {struct lthread *lt = (struct lthread *) arg; lt->state |=BIT (ST_LT_CANCELLED );lthread_detach (); +return NULL ; }
examples/performance-thread/common/lthread_api.h +1 -1
@@ -143,7 +143,7 @@ struct lthread_mutex;struct lthread_condattr ;struct lthread_mutexattr ; -typedef void (*lthread_func_t ) (void *); +typedef void *(*lthread_func_t ) (void *);/* * Define the size of stack for an lthread
examples/performance-thread/l3fwd-thread/main.c +13 -7
@@ -1990,17 +1990,18 @@ cpu_load_collector(__rte_unused void *arg) {* * This loop is used to start empty scheduler on lcore. */ -static void +static void * lthread_null(__rte_unused void *args) {int lcore_id =rte_lcore_id ();RTE_LOG (INFO ,L3FWD ,"Starting scheduler on lcore %d.\n" , lcore_id);lthread_exit (NULL ); +return NULL ; }/* main processing loop */ -static void +static void *lthread_tx_per_ring (void *dummy) {int nb_rx;
@@ -2045,6 +2046,7 @@ lthread_tx_per_ring(void *dummy)lthread_cond_wait (ready,0 ); } +return NULL ; }/*
@@ -2053,7 +2055,7 @@ lthread_tx_per_ring(void *dummy)* This lthread is used to spawn one new lthread per ring from producers. * */ -static void +static void *lthread_tx (void *args) {struct lthread *lt;
@@ -2098,9 +2100,10 @@ lthread_tx(void *args) } } +return NULL ; } -static void +static void *lthread_rx (void *dummy) {int ret;
@@ -2124,7 +2127,7 @@ lthread_rx(void *dummy)if (rx_conf->n_rx_queue ==0 ) {RTE_LOG (INFO ,L3FWD ,"lcore %u has nothing to do\n" ,rte_lcore_id ()); -return ; +return NULL ; }RTE_LOG (INFO ,L3FWD ,"Entering main Rx loop on lcore %u\n" ,rte_lcore_id ());
@@ -2196,6 +2199,7 @@ lthread_rx(void *dummy)lthread_yield (); } } +return NULL ; }/*
@@ -2204,8 +2208,9 @@ lthread_rx(void *dummy)* This lthread loop spawns all rx and tx lthreads on master lcore */ -static void -lthread_spawner(__rte_unused void *arg) { +static void * +lthread_spawner(__rte_unused void *arg) +{struct lthread *lt[MAX_THREAD ];int i;int n_thread =0 ;
@@ -2246,6 +2251,7 @@ lthread_spawner(__rte_unused void *arg) {for (i =0 ; i < n_thread; i++)lthread_join (lt[i],NULL ); +return NULL ; }/*
examples/performance-thread/pthread_shim/main.c +2 -4
@@ -119,8 +119,7 @@ void *helloworld_pthread(void *arg)*/ __threadpthread_t tid[HELLOW_WORLD_MAX_LTHREADS ]; -static void initial_lthread (void *args); -static void initial_lthread (void *args __attribute__((unused))) +static void *initial_lthread (void *args __attribute__((unused))) {int lcore = (int )rte_lcore_id ();/*
@@ -195,6 +194,7 @@ static void initial_lthread(void *args __attribute__((unused)))/* shutdown the lthread scheduler */ lthread_scheduler_shutdown (rte_lcore_id ());lthread_detach (); +return NULL ; }
@@ -205,8 +205,6 @@ static void initial_lthread(void *args __attribute__((unused)))* in the core mask */ static int -lthread_scheduler (void *args); -static int lthread_scheduler (void *args __attribute__((unused))) {/* create initial thread */
examples/performance-thread/pthread_shim/pthread_shim.c +2 -2
@@ -365,7 +365,7 @@ int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex)int pthread_create (pthread_t *__restrict tid,const pthread_attr_t *__restrict attr, -void *(func ) (void *), +lthread_func_t func,void *__restrict arg) {if (override) {
@@ -390,7 +390,7 @@ pthread_create(pthread_t *__restrict tid, } }return lthread_create ((struct lthread **)tid, lcore, - (void (*)(void *))func, arg); + func, arg); }return _sys_pthread_funcs.f_pthread_create (tid, attr, func, arg); }
Signature · 1 line
2.17.0
Thomas Monjalon
Applied14/05/2018 04:53, David Hunt:
Quoted 8 lines
The function
pthread_create()expects void *(*func) (void *) for function pointer, however,lthread_func_twas defined as void (*func) (void *), so now gcc 8.1 warns that the cast is incorrect, causing a compilation failure. This patch changes the declaration oflthread_func_tfrom returning a void to returning a void*, and then changes the sample app in the relevant places that are affected by the typedef change.
Quoted 4 lines
Fixes 116819b9ed0d ("examples/performance-thread: add lthread subsystem")Signed-off-by David Hunt <[email protected]>Acked-by Pablo de Lara <[email protected]>
Title: examples/performance-thread: fix return type of threads
Applied, thanks