[dpdk-dev] [PATCH] eal: rename --lcores option to --threads

Thomas Monjalon thomas.monjalon at 6wind.com
Wed Apr 1 00:33:38 CEST 2015


Threads are no longer strictly assigned to a lcore with a 1:1 map.
So they really should be called threads.
The term lcore should be reserved for a physical hyperthreaded CPU part.

This patch only renames the option --lcores to avoid confusion from a
user perspective. But a deeper cleanup should be done later in EAL:
e.g. lcore_id should be renamed to thread_id.

Signed-off-by: Thomas Monjalon <thomas.monjalon at 6wind.com>
---
 app/test/test_eal_flags.c                       | 34 ++++-----
 doc/guides/prog_guide/env_abstraction_layer.rst | 25 ++++---
 doc/guides/testpmd_app_ug/run_app.rst           | 10 +--
 lib/librte_eal/common/eal_common_options.c      | 96 ++++++++++++-------------
 lib/librte_eal/common/eal_options.h             |  4 +-
 5 files changed, 84 insertions(+), 85 deletions(-)

diff --git a/app/test/test_eal_flags.c b/app/test/test_eal_flags.c
index 0352f87..1096bea 100644
--- a/app/test/test_eal_flags.c
+++ b/app/test/test_eal_flags.c
@@ -512,7 +512,7 @@ test_missing_c_flag(void)
 
 	/* -c flag but no coremask value */
 	const char *argv1[] = { prgname, prefix, mp_flag, "-n", "3", "-c"};
-	/* No -c, -l or --lcores flag at all */
+	/* No -c, -l or --threads flag at all */
 	const char *argv2[] = { prgname, prefix, mp_flag, "-n", "3"};
 	/* bad coremask value */
 	const char *argv3[] = { prgname, prefix, mp_flag,
@@ -538,37 +538,37 @@ test_missing_c_flag(void)
 	const char *argv11[] = { prgname, prefix, mp_flag,
 				 "-n", "3", "-l", "1-2,3" };
 
-	/* --lcores flag but no lcores value */
+	/* --threads flag but no lcores value */
 	const char *argv12[] = { prgname, prefix, mp_flag,
-				 "-n", "3", "--lcores" };
+				 "-n", "3", "--threads" };
 	const char *argv13[] = { prgname, prefix, mp_flag,
-				 "-n", "3", "--lcores", " " };
+				 "-n", "3", "--threads", " " };
 	/* bad lcores value */
 	const char *argv14[] = { prgname, prefix, mp_flag,
-				 "-n", "3", "--lcores", "1-3-5" };
+				 "-n", "3", "--threads", "1-3-5" };
 	const char *argv15[] = { prgname, prefix, mp_flag,
-				 "-n", "3", "--lcores", "0-1,,2" };
+				 "-n", "3", "--threads", "0-1,,2" };
 	const char *argv16[] = { prgname, prefix, mp_flag,
-				 "-n", "3", "--lcores", "0-,1" };
+				 "-n", "3", "--threads", "0-,1" };
 	const char *argv17[] = { prgname, prefix, mp_flag,
-				 "-n", "3", "--lcores", "(0-,2-4)" };
+				 "-n", "3", "--threads", "(0-,2-4)" };
 	const char *argv18[] = { prgname, prefix, mp_flag,
-				 "-n", "3", "--lcores", "(-1,2)" };
+				 "-n", "3", "--threads", "(-1,2)" };
 	const char *argv19[] = { prgname, prefix, mp_flag,
-				 "-n", "3", "--lcores", "(2-4)@(2-4-6)" };
+				 "-n", "3", "--threads", "(2-4)@(2-4-6)" };
 	const char *argv20[] = { prgname, prefix, mp_flag,
-				 "-n", "3", "--lcores", "(a,2)" };
+				 "-n", "3", "--threads", "(a,2)" };
 	const char *argv21[] = { prgname, prefix, mp_flag,
-				 "-n", "3", "--lcores", "1-3@(1,3)" };
+				 "-n", "3", "--threads", "1-3@(1,3)" };
 	const char *argv22[] = { prgname, prefix, mp_flag,
-				 "-n", "3", "--lcores", "3@((1,3)" };
+				 "-n", "3", "--threads", "3@((1,3)" };
 	const char *argv23[] = { prgname, prefix, mp_flag,
-				 "-n", "3", "--lcores", "(4-7)=(1,3)" };
+				 "-n", "3", "--threads", "(4-7)=(1,3)" };
 	const char *argv24[] = { prgname, prefix, mp_flag,
-				 "-n", "3", "--lcores", "[4-7]@(1,3)" };
+				 "-n", "3", "--threads", "[4-7]@(1,3)" };
 	/* sanity check of tests - valid lcores value */
 	const char *argv25[] = { prgname, prefix, mp_flag,
-				 "-n", "3", "--lcores",
+				 "-n", "3", "--threads",
 				 "0-1,2@(5-7),(3-5)@(0,2),(0,6),7"};
 
 	if (launch_proc(argv1) == 0
@@ -601,7 +601,7 @@ test_missing_c_flag(void)
 		return -1;
 	}
 
-	/* start --lcores tests */
+	/* start --threads tests */
 	if (launch_proc(argv12) == 0 || launch_proc(argv13) == 0 ||
 	    launch_proc(argv14) == 0 || launch_proc(argv15) == 0 ||
 	    launch_proc(argv16) == 0 || launch_proc(argv17) == 0 ||
diff --git a/doc/guides/prog_guide/env_abstraction_layer.rst b/doc/guides/prog_guide/env_abstraction_layer.rst
index 1b531e2..8509774 100644
--- a/doc/guides/prog_guide/env_abstraction_layer.rst
+++ b/doc/guides/prog_guide/env_abstraction_layer.rst
@@ -232,35 +232,34 @@ For further flexibility, it is useful to set pthread affinity not only to a CPU
 EAL pthread and lcore Affinity
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-The term "lcore" refers to an EAL thread, which is really a Linux/FreeBSD pthread.
 "EAL pthreads"  are created and managed by EAL and execute the tasks issued by *remote_launch*.
 In each EAL pthread, there is a TLS (Thread Local Storage) called *_lcore_id* for unique identification.
 As EAL pthreads usually bind 1:1 to the physical CPU, the *_lcore_id* is typically equal to the CPU ID.
 
 When using multiple pthreads, however, the binding is no longer always 1:1 between an EAL pthread and a specified physical CPU.
 The EAL pthread may have affinity to a CPU set, and as such the *_lcore_id* will not be the same as the CPU ID.
-For this reason, there is an EAL long option '--lcores' defined to assign the CPU affinity of lcores.
+For this reason, there is an EAL long option '--threads' defined to assign the CPU affinity of lcores.
 For a specified lcore ID or ID group, the option allows setting the CPU set for that EAL pthread.
 
 The format pattern:
-	--lcores='<lcore_set>[@cpu_set][,<lcore_set>[@cpu_set],...]'
+	--threads='<thread_set>[@cpu_set][,<thread_set>[@cpu_set],...]'
 
-'lcore_set' and 'cpu_set' can be a single number, range or a group.
+'thread_set' and 'cpu_set' can be a single number, range or a group.
 
 A number is a "digit([0-9]+)"; a range is "<number>-<number>"; a group is "(<number|range>[,<number|range>,...])".
 
-If a '\@cpu_set' value is not supplied, the value of 'cpu_set' will default to the value of 'lcore_set'.
+If a '\@cpu_set' value is not supplied, the value of 'cpu_set' will default to the value of 'thread_set'.
 
     ::
 
-    	For example, "--lcores='1,2@(5-7),(3-5)@(0,2),(0,6),7-8'" which means start 9 EAL thread;
-    	    lcore 0 runs on cpuset 0x41 (cpu 0,6);
-    	    lcore 1 runs on cpuset 0x2 (cpu 1);
-    	    lcore 2 runs on cpuset 0xe0 (cpu 5,6,7);
-    	    lcore 3,4,5 runs on cpuset 0x5 (cpu 0,2);
-    	    lcore 6 runs on cpuset 0x41 (cpu 0,6);
-    	    lcore 7 runs on cpuset 0x80 (cpu 7);
-    	    lcore 8 runs on cpuset 0x100 (cpu 8).
+    	For example, "--threads='1,2@(5-7),(3-5)@(0,2),(0,6),7-8'" which means start 9 EAL thread;
+    	    thread 0 runs on cpuset 0x41 (cpu 0,6);
+    	    thread 1 runs on cpuset 0x2 (cpu 1);
+    	    thread 2 runs on cpuset 0xe0 (cpu 5,6,7);
+    	    thread 3,4,5 runs on cpuset 0x5 (cpu 0,2);
+    	    thread 6 runs on cpuset 0x41 (cpu 0,6);
+    	    thread 7 runs on cpuset 0x80 (cpu 7);
+    	    thread 8 runs on cpuset 0x100 (cpu 8).
 
 Using this option, for each given lcore ID, the associated CPUs can be assigned.
 It's also compatible with the pattern of corelist('-l') option.
diff --git a/doc/guides/testpmd_app_ug/run_app.rst b/doc/guides/testpmd_app_ug/run_app.rst
index 6cbbf40..830df56 100644
--- a/doc/guides/testpmd_app_ug/run_app.rst
+++ b/doc/guides/testpmd_app_ug/run_app.rst
@@ -49,18 +49,18 @@ See the DPDK Getting Started Guide for more information on these options.
     The argument format is <c1>[-c2][,c3[-c4],...]
     where c1, c2, etc are core indexes between 0 and 128
 
-*   --lcores COREMAP
+*   --threads COREMAP
 
-    Map lcore set to physical cpu set
+    Map thread set to physical cpu set
 
     The argument format is
-        '<lcores[@cpus]>[<,lcores[@cpus]>...]'
+        '<threads[@cpus]>[<,threads[@cpus]>...]'
 
-    lcores and cpus list are grouped by '(' and ')'
+    threads and cpus list are grouped by '(' and ')'
     Within the group, '-' is used for range separator,
     ',' is used for single number separator.
     '( )' can be omitted for single element group,
-    '@' can be omitted if cpus and lcores have the same value
+    '@' can be omitted if cpus and threads have the same value
 
 *   --master-lcore ID
 
diff --git a/lib/librte_eal/common/eal_common_options.c b/lib/librte_eal/common/eal_common_options.c
index 8fcb1ab..68799d0 100644
--- a/lib/librte_eal/common/eal_common_options.c
+++ b/lib/librte_eal/common/eal_common_options.c
@@ -74,7 +74,6 @@ eal_long_options[] = {
 	{OPT_FILE_PREFIX,       1, NULL, OPT_FILE_PREFIX_NUM      },
 	{OPT_HELP,              0, NULL, OPT_HELP_NUM             },
 	{OPT_HUGE_DIR,          1, NULL, OPT_HUGE_DIR_NUM         },
-	{OPT_LCORES,            1, NULL, OPT_LCORES_NUM           },
 	{OPT_LOG_LEVEL,         1, NULL, OPT_LOG_LEVEL_NUM        },
 	{OPT_MASTER_LCORE,      1, NULL, OPT_MASTER_LCORE_NUM     },
 	{OPT_NO_HPET,           0, NULL, OPT_NO_HPET_NUM          },
@@ -86,6 +85,7 @@ eal_long_options[] = {
 	{OPT_PROC_TYPE,         1, NULL, OPT_PROC_TYPE_NUM        },
 	{OPT_SOCKET_MEM,        1, NULL, OPT_SOCKET_MEM_NUM       },
 	{OPT_SYSLOG,            1, NULL, OPT_SYSLOG_NUM           },
+	{OPT_THREADS,           1, NULL, OPT_THREADS_NUM          },
 	{OPT_VDEV,              1, NULL, OPT_VDEV_NUM             },
 	{OPT_VFIO_INTR,         1, NULL, OPT_VFIO_INTR_NUM        },
 	{OPT_VMWARE_TSC_MAP,    0, NULL, OPT_VMWARE_TSC_MAP_NUM   },
@@ -442,42 +442,42 @@ convert_to_cpuset(rte_cpuset_t *cpusetp,
 }
 
 /*
- * The format pattern: --lcores='<lcores[@cpus]>[<,lcores[@cpus]>...]'
- * lcores, cpus could be a single digit/range or a group.
+ * The format pattern: --threads='<threads[@cpus]>[<,threads[@cpus]>...]'
+ * threads, cpus could be a single digit/range or a group.
  * '(' and ')' are necessary if it's a group.
- * If not supply '@cpus', the value of cpus uses the same as lcores.
+ * If not supply '@cpus', the value of cpus uses the same as threads.
  * e.g. '1,2@(5-7),(3-5)@(0,2),(0,6),7-8' means start 9 EAL thread as below
- *   lcore 0 runs on cpuset 0x41 (cpu 0,6)
- *   lcore 1 runs on cpuset 0x2 (cpu 1)
- *   lcore 2 runs on cpuset 0xe0 (cpu 5,6,7)
- *   lcore 3,4,5 runs on cpuset 0x5 (cpu 0,2)
- *   lcore 6 runs on cpuset 0x41 (cpu 0,6)
- *   lcore 7 runs on cpuset 0x80 (cpu 7)
- *   lcore 8 runs on cpuset 0x100 (cpu 8)
+ *   thread 0 runs on cpuset 0x41 (cpu 0,6)
+ *   thread 1 runs on cpuset 0x2 (cpu 1)
+ *   thread 2 runs on cpuset 0xe0 (cpu 5,6,7)
+ *   thread 3,4,5 runs on cpuset 0x5 (cpu 0,2)
+ *   thread 6 runs on cpuset 0x41 (cpu 0,6)
+ *   thread 7 runs on cpuset 0x80 (cpu 7)
+ *   thread 8 runs on cpuset 0x100 (cpu 8)
  */
 static int
-eal_parse_lcores(const char *lcores)
+eal_parse_threads(const char *threads)
 {
 	struct rte_config *cfg = rte_eal_get_configuration();
 	static uint16_t set[RTE_MAX_LCORE];
 	unsigned idx = 0;
 	int i;
 	unsigned count = 0;
-	const char *lcore_start = NULL;
+	const char *thread_start = NULL;
 	const char *end = NULL;
 	int offset;
 	rte_cpuset_t cpuset;
 	int lflags = 0;
 	int ret = -1;
 
-	if (lcores == NULL)
+	if (threads == NULL)
 		return -1;
 
 	/* Remove all blank characters ahead and after */
-	while (isblank(*lcores))
-		lcores++;
-	i = strlen(lcores);
-	while ((i > 0) && isblank(lcores[i - 1]))
+	while (isblank(*threads))
+		threads++;
+	i = strlen(threads);
+	while ((i > 0) && isblank(threads[i - 1]))
 		i--;
 
 	CPU_ZERO(&cpuset);
@@ -491,27 +491,27 @@ eal_parse_lcores(const char *lcores)
 
 	/* Get list of cores */
 	do {
-		while (isblank(*lcores))
-			lcores++;
-		if (*lcores == '\0')
+		while (isblank(*threads))
+			threads++;
+		if (*threads == '\0')
 			goto err;
 
-		/* record lcore_set start point */
-		lcore_start = lcores;
+		/* record thread_set start point */
+		thread_start = threads;
 
 		/* go across a complete bracket */
-		if (*lcore_start == '(') {
-			lcores += strcspn(lcores, ")");
-			if (*lcores++ == '\0')
+		if (*thread_start == '(') {
+			threads += strcspn(threads, ")");
+			if (*threads++ == '\0')
 				goto err;
 		}
 
 		/* scan the separator '@', ','(next) or '\0'(finish) */
-		lcores += strcspn(lcores, "@,");
+		threads += strcspn(threads, "@,");
 
-		if (*lcores == '@') {
+		if (*threads == '@') {
 			/* explicit assign cpu_set */
-			offset = eal_parse_set(lcores + 1, set, RTE_DIM(set));
+			offset = eal_parse_set(threads + 1, set, RTE_DIM(set));
 			if (offset < 0)
 				goto err;
 
@@ -519,31 +519,31 @@ eal_parse_lcores(const char *lcores)
 			if (0 > convert_to_cpuset(&cpuset,
 						  set, RTE_DIM(set)))
 				goto err;
-			end = lcores + 1 + offset;
+			end = threads + 1 + offset;
 		} else { /* ',' or '\0' */
 			/* haven't given cpu_set, current loop done */
-			end = lcores;
+			end = threads;
 
 			/* go back to check <number>-<number> */
-			offset = strcspn(lcore_start, "(-");
-			if (offset < (end - lcore_start) &&
-			    *(lcore_start + offset) != '(')
+			offset = strcspn(thread_start, "(-");
+			if (offset < (end - thread_start) &&
+			    *(thread_start + offset) != '(')
 				lflags = 1;
 		}
 
 		if (*end != ',' && *end != '\0')
 			goto err;
 
-		/* parse lcore_set from start point */
-		if (0 > eal_parse_set(lcore_start, set, RTE_DIM(set)))
+		/* parse thread_set from start point */
+		if (0 > eal_parse_set(thread_start, set, RTE_DIM(set)))
 			goto err;
 
-		/* without '@', by default using lcore_set as cpu_set */
-		if (*lcores != '@' &&
+		/* without '@', by default using thread_set as cpu_set */
+		if (*threads != '@' &&
 		    0 > convert_to_cpuset(&cpuset, set, RTE_DIM(set)))
 			goto err;
 
-		/* start to update lcore_set */
+		/* start to update thread_set */
 		for (idx = 0; idx < RTE_MAX_LCORE; idx++) {
 			if (!set[idx])
 				continue;
@@ -562,7 +562,7 @@ eal_parse_lcores(const char *lcores)
 				   sizeof(rte_cpuset_t));
 		}
 
-		lcores = end + 1;
+		threads = end + 1;
 	} while (*end != '\0');
 
 	if (count == 0)
@@ -777,10 +777,10 @@ eal_parse_common_option(int opt, const char *optarg,
 		conf->log_level = log;
 		break;
 	}
-	case OPT_LCORES_NUM:
-		if (eal_parse_lcores(optarg) < 0) {
+	case OPT_THREADS_NUM:
+		if (eal_parse_threads(optarg) < 0) {
 			RTE_LOG(ERR, EAL, "invalid parameter for --"
-				OPT_LCORES "\n");
+				OPT_THREADS "\n");
 			return -1;
 		}
 		break;
@@ -822,7 +822,7 @@ eal_check_common_options(struct internal_config *internal_cfg)
 
 	if (!lcores_parsed) {
 		RTE_LOG(ERR, EAL, "CPU cores must be enabled with options "
-			"-c, -l or --lcores\n");
+			"-c, -l or --threads\n");
 		return -1;
 	}
 	if (cfg->lcore_role[cfg->master_lcore] != ROLE_RTE) {
@@ -876,14 +876,14 @@ eal_common_usage(void)
 	       "  -l CORELIST         List of cores to run on\n"
 	       "                      The argument format is <c1>[-c2][,c3[-c4],...]\n"
 	       "                      where c1, c2, etc are core indexes between 0 and %d\n"
-	       "  --"OPT_LCORES" COREMAP    Map lcore set to physical cpu set\n"
+	       "  --"OPT_THREADS" COREMAP   Map thread set to physical cpu set\n"
 	       "                      The argument format is\n"
-	       "                            '<lcores[@cpus]>[<,lcores[@cpus]>...]'\n"
-	       "                      lcores and cpus list are grouped by '(' and ')'\n"
+	       "                            '<threads[@cpus]>[<,threads[@cpus]>...]'\n"
+	       "                      threads and cpus list are grouped by '(' and ')'\n"
 	       "                      Within the group, '-' is used for range separator,\n"
 	       "                      ',' is used for single number separator.\n"
 	       "                      '( )' can be omitted for single element group,\n"
-	       "                      '@' can be omitted if cpus and lcores have the same value\n"
+	       "                      '@' can be omitted if cpus and threads have the same value\n"
 	       "  --"OPT_MASTER_LCORE" ID   Core ID that is used as master\n"
 	       "  -n CHANNELS         Number of memory channels\n"
 	       "  -m MB               Memory to allocate (see also --"OPT_SOCKET_MEM")\n"
diff --git a/lib/librte_eal/common/eal_options.h b/lib/librte_eal/common/eal_options.h
index f6714d9..d979c62 100644
--- a/lib/librte_eal/common/eal_options.h
+++ b/lib/librte_eal/common/eal_options.h
@@ -53,8 +53,6 @@ enum {
 	OPT_FILE_PREFIX_NUM,
 #define OPT_HUGE_DIR          "huge-dir"
 	OPT_HUGE_DIR_NUM,
-#define OPT_LCORES            "lcores"
-	OPT_LCORES_NUM,
 #define OPT_LOG_LEVEL         "log-level"
 	OPT_LOG_LEVEL_NUM,
 #define OPT_MASTER_LCORE      "master-lcore"
@@ -73,6 +71,8 @@ enum {
 	OPT_SOCKET_MEM_NUM,
 #define OPT_SYSLOG            "syslog"
 	OPT_SYSLOG_NUM,
+#define OPT_THREADS           "threads"
+	OPT_THREADS_NUM,
 #define OPT_VDEV              "vdev"
 	OPT_VDEV_NUM,
 #define OPT_VFIO_INTR         "vfio-intr"
-- 
2.2.2



More information about the dev mailing list