[dpdk-dev] [PATCH v3 5/5] examples: use new API to create control threads

Olivier Matz olivier.matz at 6wind.com
Tue Apr 24 16:46:51 CEST 2018


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 at 6wind.com>
---
 examples/tep_termination/main.c | 16 +++++++---------
 examples/vhost/main.c           | 19 +++++++------------
 2 files changed, 14 insertions(+), 21 deletions(-)

diff --git a/examples/tep_termination/main.c b/examples/tep_termination/main.c
index 52b95025c..7795d0894 100644
--- a/examples/tep_termination/main.c
+++ b/examples/tep_termination/main.c
@@ -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. */
diff --git a/examples/vhost/main.c b/examples/vhost/main.c
index e33a0f3c9..1659ef315 100644
--- a/examples/vhost/main.c
+++ b/examples/vhost/main.c
@@ -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. */
-- 
2.11.0



More information about the dev mailing list