examples: use new API to create control threads

A new API was introduced to create control thread:
rte_ctrl_thread_create(). Use it in examples when relevant.

While at it, change the prototype of the thread start functions: it's
not a good idea to cast it in (void *) since the compiler won't check
that the prototype is compatible.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
This commit is contained in:
Olivier Matz 2018-04-24 16:46:51 +02:00 committed by Thomas Monjalon
parent d651ee4919
commit fa20485454
2 changed files with 14 additions and 21 deletions

View File

@ -1061,8 +1061,8 @@ static const struct vhost_device_ops virtio_net_device_ops = {
* This is a thread will wake up after a period to print stats if the user has
* enabled them.
*/
static void
print_stats(void)
static void *
print_stats(__rte_unused void *arg)
{
struct virtio_net_data_ll *dev_ll;
uint64_t tx_dropped, rx_dropped;
@ -1119,6 +1119,8 @@ print_stats(void)
}
printf("\n================================================\n");
}
return NULL;
}
/**
@ -1134,7 +1136,6 @@ main(int argc, char *argv[])
uint16_t portid;
uint16_t queue_id;
static pthread_t tid;
char thread_name[RTE_MAX_THREAD_NAME_LEN];
/* init EAL */
ret = rte_eal_init(argc, argv);
@ -1205,13 +1206,10 @@ main(int argc, char *argv[])
/* Enable stats if the user option is set. */
if (enable_stats) {
ret = pthread_create(&tid, NULL, (void *)print_stats, NULL);
if (ret != 0)
ret = rte_ctrl_thread_create(&tid, "print-stats", NULL,
print_stats, NULL);
if (ret < 0)
rte_exit(EXIT_FAILURE, "Cannot create print-stats thread\n");
snprintf(thread_name, sizeof(thread_name), "print-stats");
ret = rte_thread_setname(tid, thread_name);
if (ret != 0)
RTE_LOG(DEBUG, VHOST_CONFIG, "Cannot set print-stats name\n");
}
/* Launch all data cores. */

View File

@ -1292,8 +1292,8 @@ static const struct vhost_device_ops virtio_net_device_ops =
* This is a thread will wake up after a period to print stats if the user has
* enabled them.
*/
static void
print_stats(void)
static void *
print_stats(__rte_unused void *arg)
{
struct vhost_dev *vdev;
uint64_t tx_dropped, rx_dropped;
@ -1332,6 +1332,8 @@ print_stats(void)
printf("===================================================\n");
}
return NULL;
}
static void
@ -1420,7 +1422,6 @@ main(int argc, char *argv[])
int ret, i;
uint16_t portid;
static pthread_t tid;
char thread_name[RTE_MAX_THREAD_NAME_LEN];
uint64_t flags = 0;
signal(SIGINT, sigint_handler);
@ -1493,17 +1494,11 @@ main(int argc, char *argv[])
/* Enable stats if the user option is set. */
if (enable_stats) {
ret = pthread_create(&tid, NULL, (void *)print_stats, NULL);
if (ret != 0)
ret = rte_ctrl_thread_create(&tid, "print-stats", NULL,
print_stats, NULL);
if (ret < 0)
rte_exit(EXIT_FAILURE,
"Cannot create print-stats thread\n");
/* Set thread_name for aid in debugging. */
snprintf(thread_name, sizeof(thread_name), "print-stats");
ret = rte_thread_setname(tid, thread_name);
if (ret != 0)
RTE_LOG(DEBUG, VHOST_CONFIG,
"Cannot set print-stats name\n");
}
/* Launch all data cores. */