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
|
* Tasklet to cancel a thread
|
||||||
*/
|
*/
|
||||||
static void
|
static void *
|
||||||
_cancel(void *arg)
|
_cancel(void *arg)
|
||||||
{
|
{
|
||||||
struct lthread *lt = (struct lthread *) arg;
|
struct lthread *lt = (struct lthread *) arg;
|
||||||
|
|
||||||
lt->state |= BIT(ST_LT_CANCELLED);
|
lt->state |= BIT(ST_LT_CANCELLED);
|
||||||
lthread_detach();
|
lthread_detach();
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -143,7 +143,7 @@ struct lthread_mutex;
|
|||||||
struct lthread_condattr;
|
struct lthread_condattr;
|
||||||
struct lthread_mutexattr;
|
struct lthread_mutexattr;
|
||||||
|
|
||||||
typedef void (*lthread_func_t) (void *);
|
typedef void *(*lthread_func_t) (void *);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Define the size of stack for an lthread
|
* 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.
|
* This loop is used to start empty scheduler on lcore.
|
||||||
*/
|
*/
|
||||||
static void
|
static void *
|
||||||
lthread_null(__rte_unused void *args)
|
lthread_null(__rte_unused void *args)
|
||||||
{
|
{
|
||||||
int lcore_id = rte_lcore_id();
|
int lcore_id = rte_lcore_id();
|
||||||
|
|
||||||
RTE_LOG(INFO, L3FWD, "Starting scheduler on lcore %d.\n", lcore_id);
|
RTE_LOG(INFO, L3FWD, "Starting scheduler on lcore %d.\n", lcore_id);
|
||||||
lthread_exit(NULL);
|
lthread_exit(NULL);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* main processing loop */
|
/* main processing loop */
|
||||||
static void
|
static void *
|
||||||
lthread_tx_per_ring(void *dummy)
|
lthread_tx_per_ring(void *dummy)
|
||||||
{
|
{
|
||||||
int nb_rx;
|
int nb_rx;
|
||||||
@ -2045,6 +2046,7 @@ lthread_tx_per_ring(void *dummy)
|
|||||||
lthread_cond_wait(ready, 0);
|
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.
|
* This lthread is used to spawn one new lthread per ring from producers.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
static void
|
static void *
|
||||||
lthread_tx(void *args)
|
lthread_tx(void *args)
|
||||||
{
|
{
|
||||||
struct lthread *lt;
|
struct lthread *lt;
|
||||||
@ -2098,9 +2100,10 @@ lthread_tx(void *args)
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void *
|
||||||
lthread_rx(void *dummy)
|
lthread_rx(void *dummy)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
@ -2124,7 +2127,7 @@ lthread_rx(void *dummy)
|
|||||||
|
|
||||||
if (rx_conf->n_rx_queue == 0) {
|
if (rx_conf->n_rx_queue == 0) {
|
||||||
RTE_LOG(INFO, L3FWD, "lcore %u has nothing to do\n", rte_lcore_id());
|
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());
|
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();
|
lthread_yield();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -2204,8 +2208,9 @@ lthread_rx(void *dummy)
|
|||||||
* This lthread loop spawns all rx and tx lthreads on master lcore
|
* This lthread loop spawns all rx and tx lthreads on master lcore
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static void
|
static void *
|
||||||
lthread_spawner(__rte_unused void *arg) {
|
lthread_spawner(__rte_unused void *arg)
|
||||||
|
{
|
||||||
struct lthread *lt[MAX_THREAD];
|
struct lthread *lt[MAX_THREAD];
|
||||||
int i;
|
int i;
|
||||||
int n_thread = 0;
|
int n_thread = 0;
|
||||||
@ -2246,6 +2251,7 @@ lthread_spawner(__rte_unused void *arg) {
|
|||||||
for (i = 0; i < n_thread; i++)
|
for (i = 0; i < n_thread; i++)
|
||||||
lthread_join(lt[i], NULL);
|
lthread_join(lt[i], NULL);
|
||||||
|
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -119,8 +119,7 @@ void *helloworld_pthread(void *arg)
|
|||||||
*/
|
*/
|
||||||
__thread pthread_t tid[HELLOW_WORLD_MAX_LTHREADS];
|
__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();
|
int lcore = (int) rte_lcore_id();
|
||||||
/*
|
/*
|
||||||
@ -195,6 +194,7 @@ static void initial_lthread(void *args __attribute__((unused)))
|
|||||||
/* shutdown the lthread scheduler */
|
/* shutdown the lthread scheduler */
|
||||||
lthread_scheduler_shutdown(rte_lcore_id());
|
lthread_scheduler_shutdown(rte_lcore_id());
|
||||||
lthread_detach();
|
lthread_detach();
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -205,8 +205,6 @@ static void initial_lthread(void *args __attribute__((unused)))
|
|||||||
* in the core mask
|
* in the core mask
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
lthread_scheduler(void *args);
|
|
||||||
static int
|
|
||||||
lthread_scheduler(void *args __attribute__((unused)))
|
lthread_scheduler(void *args __attribute__((unused)))
|
||||||
{
|
{
|
||||||
/* create initial thread */
|
/* create initial thread */
|
||||||
|
@ -365,7 +365,7 @@ int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex)
|
|||||||
int
|
int
|
||||||
pthread_create(pthread_t *__restrict tid,
|
pthread_create(pthread_t *__restrict tid,
|
||||||
const pthread_attr_t *__restrict attr,
|
const pthread_attr_t *__restrict attr,
|
||||||
void *(func) (void *),
|
lthread_func_t func,
|
||||||
void *__restrict arg)
|
void *__restrict arg)
|
||||||
{
|
{
|
||||||
if (override) {
|
if (override) {
|
||||||
@ -390,7 +390,7 @@ pthread_create(pthread_t *__restrict tid,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return lthread_create((struct lthread **)tid, lcore,
|
return lthread_create((struct lthread **)tid, lcore,
|
||||||
(void (*)(void *))func, arg);
|
func, arg);
|
||||||
}
|
}
|
||||||
return _sys_pthread_funcs.f_pthread_create(tid, attr, func, arg);
|
return _sys_pthread_funcs.f_pthread_create(tid, attr, func, arg);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user