examples/performance-thread: fix return type of threads
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.
Fixes: 116819b9ed
("examples/performance-thread: add lthread subsystem")
Cc: stable@dpdk.org
Signed-off-by: David Hunt <david.hunt@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
This commit is contained in:
parent
a68bc62fd1
commit
803ee2ebd3
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -119,8 +119,7 @@ void *helloworld_pthread(void *arg)
|
||||
*/
|
||||
__thread pthread_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 */
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user