From: Cunming Liang <cunming.liang@intel.com>
To: dev@dpdk.org
Subject: [dpdk-dev] [PATCH v7 03/19] eal: new eal option '--lcores' for cpu assignment
Date: Sun, 15 Feb 2015 11:15:29 +0800 [thread overview]
Message-ID: <1423970145-31985-4-git-send-email-cunming.liang@intel.com> (raw)
In-Reply-To: <1423970145-31985-1-git-send-email-cunming.liang@intel.com>
It supports one new eal long option '--lcores' for EAL thread cpuset assignment.
The format pattern:
--lcores='lcores[@cpus]<,lcores[@cpus]>'
lcores, 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.
e.g. '1,2@(5-7),(3-5)@(0,2),(0,6),7-8' means starting 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)
Signed-off-by: Cunming Liang <cunming.liang@intel.com>
---
v5 changes:
add more comments for eal_parse_set
fix some typo
remove inline prefix from convert_to_cpuset()
fix a bug introduced on v2 which broke case '(0,6)'
v2 changes:
add '<number>-<number>' support for EAL option '--lcores'
lib/librte_eal/common/eal_common_options.c | 304 ++++++++++++++++++++++++++++-
lib/librte_eal/common/eal_options.h | 2 +
lib/librte_eal/linuxapp/eal/Makefile | 1 +
3 files changed, 303 insertions(+), 4 deletions(-)
diff --git a/lib/librte_eal/common/eal_common_options.c b/lib/librte_eal/common/eal_common_options.c
index 67e02dc..178e303 100644
--- a/lib/librte_eal/common/eal_common_options.c
+++ b/lib/librte_eal/common/eal_common_options.c
@@ -45,6 +45,7 @@
#include <rte_lcore.h>
#include <rte_version.h>
#include <rte_devargs.h>
+#include <rte_memcpy.h>
#include "eal_internal_cfg.h"
#include "eal_options.h"
@@ -85,6 +86,7 @@ eal_long_options[] = {
{OPT_XEN_DOM0, 0, 0, OPT_XEN_DOM0_NUM},
{OPT_CREATE_UIO_DEV, 1, NULL, OPT_CREATE_UIO_DEV_NUM},
{OPT_VFIO_INTR, 1, NULL, OPT_VFIO_INTR_NUM},
+ {OPT_LCORES, 1, 0, OPT_LCORES_NUM},
{0, 0, 0, 0}
};
@@ -255,9 +257,11 @@ eal_parse_corelist(const char *corelist)
if (min == RTE_MAX_LCORE)
min = idx;
for (idx = min; idx <= max; idx++) {
- cfg->lcore_role[idx] = ROLE_RTE;
- lcore_config[idx].core_index = count;
- count++;
+ if (cfg->lcore_role[idx] != ROLE_RTE) {
+ cfg->lcore_role[idx] = ROLE_RTE;
+ lcore_config[idx].core_index = count;
+ count++;
+ }
}
min = RTE_MAX_LCORE;
} else
@@ -292,6 +296,283 @@ eal_parse_master_lcore(const char *arg)
return 0;
}
+/*
+ * Parse elem, the elem could be single number/range or '(' ')' group
+ * 1) A single number elem, it's just a simple digit. e.g. 9
+ * 2) A single range elem, two digits with a '-' between. e.g. 2-6
+ * 3) A group elem, combines multiple 1) or 2) with '( )'. e.g (0,2-4,6)
+ * Within group elem, '-' used for a range separator;
+ * ',' used for a single number.
+ */
+static int
+eal_parse_set(const char *input, uint16_t set[], unsigned num)
+{
+ unsigned idx;
+ const char *str = input;
+ char *end = NULL;
+ unsigned min, max;
+
+ memset(set, 0, num * sizeof(uint16_t));
+
+ while (isblank(*str))
+ str++;
+
+ /* only digit or left bracket is qualify for start point */
+ if ((!isdigit(*str) && *str != '(') || *str == '\0')
+ return -1;
+
+ /* process single number or single range of number */
+ if (*str != '(') {
+ errno = 0;
+ idx = strtoul(str, &end, 10);
+ if (errno || end == NULL || idx >= num)
+ return -1;
+ else {
+ while (isblank(*end))
+ end++;
+
+ min = idx;
+ max = idx;
+ if (*end == '-') {
+ /* process single <number>-<number> */
+ end++;
+ while (isblank(*end))
+ end++;
+ if (!isdigit(*end))
+ return -1;
+
+ errno = 0;
+ idx = strtoul(end, &end, 10);
+ if (errno || end == NULL || idx >= num)
+ return -1;
+ max = idx;
+ while (isblank(*end))
+ end++;
+ if (*end != ',' && *end != '\0')
+ return -1;
+ }
+
+ if (*end != ',' && *end != '\0' &&
+ *end != '@')
+ return -1;
+
+ for (idx = RTE_MIN(min, max);
+ idx <= RTE_MAX(min, max); idx++)
+ set[idx] = 1;
+
+ return end - input;
+ }
+ }
+
+ /* process set within bracket */
+ str++;
+ while (isblank(*str))
+ str++;
+ if (*str == '\0')
+ return -1;
+
+ min = RTE_MAX_LCORE;
+ do {
+
+ /* go ahead to the first digit */
+ while (isblank(*str))
+ str++;
+ if (!isdigit(*str))
+ return -1;
+
+ /* get the digit value */
+ errno = 0;
+ idx = strtoul(str, &end, 10);
+ if (errno || end == NULL || idx >= num)
+ return -1;
+
+ /* go ahead to separator '-',',' and ')' */
+ while (isblank(*end))
+ end++;
+ if (*end == '-') {
+ if (min == RTE_MAX_LCORE)
+ min = idx;
+ else /* avoid continuous '-' */
+ return -1;
+ } else if ((*end == ',') || (*end == ')')) {
+ max = idx;
+ if (min == RTE_MAX_LCORE)
+ min = idx;
+ for (idx = RTE_MIN(min, max);
+ idx <= RTE_MAX(min, max); idx++)
+ set[idx] = 1;
+
+ min = RTE_MAX_LCORE;
+ } else
+ return -1;
+
+ str = end + 1;
+ } while (*end != '\0' && *end != ')');
+
+ return str - input;
+}
+
+/* convert from set array to cpuset bitmap */
+static int
+convert_to_cpuset(rte_cpuset_t *cpusetp,
+ uint16_t *set, unsigned num)
+{
+ unsigned idx;
+
+ CPU_ZERO(cpusetp);
+
+ for (idx = 0; idx < num; idx++) {
+ if (!set[idx])
+ continue;
+
+ if (!lcore_config[idx].detected) {
+ RTE_LOG(ERR, EAL, "core %u "
+ "unavailable\n", idx);
+ return -1;
+ }
+
+ CPU_SET(idx, cpusetp);
+ }
+
+ return 0;
+}
+
+/*
+ * The format pattern: --lcores='lcores[@cpus]<,lcores[@cpus]>'
+ * lcores, 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.
+ * 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)
+ */
+static int
+eal_parse_lcores(const char *lcores)
+{
+ 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 *end = NULL;
+ int offset;
+ rte_cpuset_t cpuset;
+ int lflags = 0;
+ int ret = -1;
+
+ if (lcores == NULL)
+ return -1;
+
+ /* Remove all blank characters ahead and after */
+ while (isblank(*lcores))
+ lcores++;
+ i = strnlen(lcores, sysconf(_SC_ARG_MAX));
+ while ((i > 0) && isblank(lcores[i - 1]))
+ i--;
+
+ CPU_ZERO(&cpuset);
+
+ /* Reset lcore config */
+ for (idx = 0; idx < RTE_MAX_LCORE; idx++) {
+ cfg->lcore_role[idx] = ROLE_OFF;
+ lcore_config[idx].core_index = -1;
+ CPU_ZERO(&lcore_config[idx].cpuset);
+ }
+
+ /* Get list of cores */
+ do {
+ while (isblank(*lcores))
+ lcores++;
+ if (*lcores == '\0')
+ goto err;
+
+ /* record lcore_set start point */
+ lcore_start = lcores;
+
+ /* go across a complete bracket */
+ if (*lcore_start == '(') {
+ lcores += strcspn(lcores, ")");
+ if (*lcores++ == '\0')
+ goto err;
+ }
+
+ /* scan the separator '@', ','(next) or '\0'(finish) */
+ lcores += strcspn(lcores, "@,");
+
+ if (*lcores == '@') {
+ /* explict assign cpu_set */
+ offset = eal_parse_set(lcores + 1, set, RTE_DIM(set));
+ if (offset < 0)
+ goto err;
+
+ /* prepare cpu_set and update the end cursor */
+ if (0 > convert_to_cpuset(&cpuset,
+ set, RTE_DIM(set)))
+ goto err;
+ end = lcores + 1 + offset;
+ } else { /* ',' or '\0' */
+ /* haven't given cpu_set, current loop done */
+ end = lcores;
+
+ /* go back to check <number>-<number> */
+ offset = strcspn(lcore_start, "(-");
+ if (offset < (end - lcore_start) &&
+ *(lcore_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)))
+ goto err;
+
+ /* without '@', by default using lcore_set as cpu_set */
+ if (*lcores != '@' &&
+ 0 > convert_to_cpuset(&cpuset, set, RTE_DIM(set)))
+ goto err;
+
+ /* start to update lcore_set */
+ for (idx = 0; idx < RTE_MAX_LCORE; idx++) {
+ if (!set[idx])
+ continue;
+
+ if (cfg->lcore_role[idx] != ROLE_RTE) {
+ lcore_config[idx].core_index = count;
+ cfg->lcore_role[idx] = ROLE_RTE;
+ count++;
+ }
+
+ if (lflags) {
+ CPU_ZERO(&cpuset);
+ CPU_SET(idx, &cpuset);
+ }
+ rte_memcpy(&lcore_config[idx].cpuset, &cpuset,
+ sizeof(rte_cpuset_t));
+ }
+
+ lcores = end + 1;
+ } while (*end != '\0');
+
+ if (count == 0)
+ goto err;
+
+ cfg->lcore_count = count;
+ lcores_parsed = 1;
+ ret = 0;
+
+err:
+
+ return ret;
+}
+
static int
eal_parse_syslog(const char *facility, struct internal_config *conf)
{
@@ -492,6 +773,13 @@ eal_parse_common_option(int opt, const char *optarg,
conf->log_level = log;
break;
}
+ case OPT_LCORES_NUM:
+ if (eal_parse_lcores(optarg) < 0) {
+ RTE_LOG(ERR, EAL, "invalid parameter for --"
+ OPT_LCORES "\n");
+ return -1;
+ }
+ break;
/* don't know what to do, leave this to caller */
default:
@@ -530,7 +818,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 or -l\n");
+ "-c, -l or --lcores\n");
return -1;
}
if (cfg->lcore_role[cfg->master_lcore] != ROLE_RTE) {
@@ -586,6 +874,14 @@ eal_common_usage(void)
" The argument format is <c1>[-c2][,c3[-c4],...]\n"
" where c1, c2, etc are core indexes between 0 and %d\n"
" --"OPT_MASTER_LCORE" ID: Core ID that is used as master\n"
+ " --"OPT_LCORES" MAP: maps between lcore_set to phys_cpu_set\n"
+ " The argument format is\n"
+ " 'lcores[@cpus]<,lcores[@cpus],...>'\n"
+ " lcores 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 has the same value\n"
" -n NUM : Number of memory channels\n"
" -v : Display version information on startup\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 e476f8d..a1cc59f 100644
--- a/lib/librte_eal/common/eal_options.h
+++ b/lib/librte_eal/common/eal_options.h
@@ -77,6 +77,8 @@ enum {
OPT_CREATE_UIO_DEV_NUM,
#define OPT_VFIO_INTR "vfio-intr"
OPT_VFIO_INTR_NUM,
+#define OPT_LCORES "lcores"
+ OPT_LCORES_NUM,
OPT_LONG_MAX_NUM
};
diff --git a/lib/librte_eal/linuxapp/eal/Makefile b/lib/librte_eal/linuxapp/eal/Makefile
index 1b6c484..4da9d27 100644
--- a/lib/librte_eal/linuxapp/eal/Makefile
+++ b/lib/librte_eal/linuxapp/eal/Makefile
@@ -99,6 +99,7 @@ CFLAGS_eal_hugepage_info.o := -D_GNU_SOURCE
CFLAGS_eal_pci.o := -D_GNU_SOURCE
CFLAGS_eal_pci_vfio.o := -D_GNU_SOURCE
CFLAGS_eal_common_whitelist.o := -D_GNU_SOURCE
+CFLAGS_eal_common_options.o := -D_GNU_SOURCE
# workaround for a gcc bug with noreturn attribute
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12603
--
1.8.1.4
next prev parent reply other threads:[~2015-02-15 3:16 UTC|newest]
Thread overview: 253+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1417589628-43666-1-git-send-email-cunming.liang@intel.com>
2015-01-22 8:16 ` [dpdk-dev] [PATCH v1 00/15] support multi-pthread per core Cunming Liang
2015-01-22 8:16 ` [dpdk-dev] [PATCH v1 01/15] eal: add cpuset into per EAL thread lcore_config Cunming Liang
2015-01-22 8:16 ` [dpdk-dev] [PATCH v1 02/15] eal: new eal option '--lcores' for cpu assignment Cunming Liang
2015-01-22 12:19 ` Bruce Richardson
2015-01-22 14:34 ` Ananyev, Konstantin
2015-01-22 15:17 ` Wodkowski, PawelX
2015-01-25 15:34 ` Liang, Cunming
2015-01-22 15:23 ` Bruce Richardson
2015-01-23 0:39 ` Liang, Cunming
2015-01-22 8:16 ` [dpdk-dev] [PATCH v1 03/15] eal: add support parsing socket_id from cpuset Cunming Liang
2015-01-22 8:16 ` [dpdk-dev] [PATCH v1 04/15] eal: new TLS definition and API declaration Cunming Liang
2015-01-22 8:16 ` [dpdk-dev] [PATCH v1 05/15] eal: add eal_common_thread.c for common thread API Cunming Liang
2015-01-22 8:16 ` [dpdk-dev] [PATCH v1 06/15] eal: add rte_gettid() to acquire unique system tid Cunming Liang
2015-01-22 8:16 ` [dpdk-dev] [PATCH v1 07/15] eal: apply affinity of EAL thread by assigned cpuset Cunming Liang
2015-01-22 8:16 ` [dpdk-dev] [PATCH v1 08/15] enic: fix re-define freebsd compile complain Cunming Liang
2015-01-22 8:16 ` [dpdk-dev] [PATCH v1 09/15] malloc: fix the issue of SOCKET_ID_ANY Cunming Liang
2015-01-25 23:04 ` Stephen Hemminger
2015-01-27 4:55 ` Liang, Cunming
2015-01-26 13:48 ` Stephen Hemminger
2015-01-22 8:16 ` [dpdk-dev] [PATCH v1 10/15] log: fix the gap to support non-EAL thread Cunming Liang
2015-01-22 8:16 ` [dpdk-dev] [PATCH v1 11/15] eal: set _lcore_id and _socket_id to (-1) by default Cunming Liang
2015-01-22 8:16 ` [dpdk-dev] [PATCH v1 12/15] eal: fix recursive spinlock in non-EAL thraed Cunming Liang
2015-01-22 8:16 ` [dpdk-dev] [PATCH v1 13/15] mempool: add support to non-EAL thread Cunming Liang
2015-01-22 9:52 ` Walukiewicz, Miroslaw
2015-01-22 12:20 ` Liang, Cunming
2015-01-22 12:45 ` Walukiewicz, Miroslaw
2015-01-22 14:04 ` Ananyev, Konstantin
2015-01-22 8:16 ` [dpdk-dev] [PATCH v1 14/15] ring: " Cunming Liang
2015-01-22 8:16 ` [dpdk-dev] [PATCH v1 15/15] timer: " Cunming Liang
2015-01-22 9:58 ` Walukiewicz, Miroslaw
2015-01-22 12:32 ` Liang, Cunming
2015-01-22 14:14 ` [dpdk-dev] [PATCH v1 00/15] support multi-pthread per core Ananyev, Konstantin
2015-01-28 6:59 ` [dpdk-dev] [PATCH v2 " Cunming Liang
2015-01-28 6:59 ` [dpdk-dev] [PATCH v2 01/15] eal: add cpuset into per EAL thread lcore_config Cunming Liang
2015-01-28 6:59 ` [dpdk-dev] [PATCH v2 02/15] eal: new eal option '--lcores' for cpu assignment Cunming Liang
2015-01-28 6:59 ` [dpdk-dev] [PATCH v2 03/15] eal: add support parsing socket_id from cpuset Cunming Liang
2015-01-28 6:59 ` [dpdk-dev] [PATCH v2 04/15] eal: new TLS definition and API declaration Cunming Liang
2015-01-28 6:59 ` [dpdk-dev] [PATCH v2 05/15] eal: add eal_common_thread.c for common thread API Cunming Liang
2015-01-28 6:59 ` [dpdk-dev] [PATCH v2 06/15] eal: add rte_gettid() to acquire unique system tid Cunming Liang
2015-01-28 6:59 ` [dpdk-dev] [PATCH v2 07/15] eal: apply affinity of EAL thread by assigned cpuset Cunming Liang
2015-01-28 6:59 ` [dpdk-dev] [PATCH v2 08/15] enic: fix re-define freebsd compile complain Cunming Liang
2015-01-28 6:59 ` [dpdk-dev] [PATCH v2 09/15] malloc: fix the issue of SOCKET_ID_ANY Cunming Liang
2015-01-28 6:59 ` [dpdk-dev] [PATCH v2 10/15] log: fix the gap to support non-EAL thread Cunming Liang
2015-01-28 6:59 ` [dpdk-dev] [PATCH v2 11/15] eal: set _lcore_id and _socket_id to (-1) by default Cunming Liang
2015-01-28 6:59 ` [dpdk-dev] [PATCH v2 12/15] eal: fix recursive spinlock in non-EAL thraed Cunming Liang
2015-01-28 6:59 ` [dpdk-dev] [PATCH v2 13/15] mempool: add support to non-EAL thread Cunming Liang
2015-01-28 6:59 ` [dpdk-dev] [PATCH v2 14/15] ring: " Cunming Liang
2015-01-28 6:59 ` [dpdk-dev] [PATCH v2 15/15] timer: " Cunming Liang
2015-01-29 0:24 ` [dpdk-dev] [PATCH v3 00/16] support multi-pthread per core Cunming Liang
2015-01-29 0:24 ` [dpdk-dev] [PATCH v3 01/16] eal: add cpuset into per EAL thread lcore_config Cunming Liang
2015-01-29 0:24 ` [dpdk-dev] [PATCH v3 02/16] eal: new eal option '--lcores' for cpu assignment Cunming Liang
2015-01-29 0:24 ` [dpdk-dev] [PATCH v3 03/16] eal: add support parsing socket_id from cpuset Cunming Liang
2015-01-29 0:24 ` [dpdk-dev] [PATCH v3 04/16] eal: new TLS definition and API declaration Cunming Liang
2015-01-29 0:24 ` [dpdk-dev] [PATCH v3 05/16] eal: add eal_common_thread.c for common thread API Cunming Liang
2015-01-29 0:24 ` [dpdk-dev] [PATCH v3 06/16] eal: add rte_gettid() to acquire unique system tid Cunming Liang
2015-01-29 0:24 ` [dpdk-dev] [PATCH v3 07/16] eal: apply affinity of EAL thread by assigned cpuset Cunming Liang
2015-01-29 0:24 ` [dpdk-dev] [PATCH v3 08/16] enic: fix re-define freebsd compile complain Cunming Liang
2015-01-29 0:24 ` [dpdk-dev] [PATCH v3 09/16] malloc: fix the issue of SOCKET_ID_ANY Cunming Liang
2015-01-29 0:24 ` [dpdk-dev] [PATCH v3 10/16] log: fix the gap to support non-EAL thread Cunming Liang
2015-01-29 0:24 ` [dpdk-dev] [PATCH v3 11/16] eal: set _lcore_id and _socket_id to (-1) by default Cunming Liang
2015-01-29 0:24 ` [dpdk-dev] [PATCH v3 12/16] eal: fix recursive spinlock in non-EAL thraed Cunming Liang
2015-01-29 0:24 ` [dpdk-dev] [PATCH v3 13/16] mempool: add support to non-EAL thread Cunming Liang
2015-01-29 0:24 ` [dpdk-dev] [PATCH v3 14/16] ring: " Cunming Liang
2015-01-29 0:24 ` [dpdk-dev] [PATCH v3 15/16] ring: add sched_yield to avoid spin forever Cunming Liang
2015-01-29 0:24 ` [dpdk-dev] [PATCH v3 16/16] timer: add support to non-EAL thread Cunming Liang
2015-02-02 2:02 ` [dpdk-dev] [PATCH v4 00/17] support multi-pthread per core Cunming Liang
2015-02-02 2:02 ` [dpdk-dev] [PATCH v4 01/17] eal: add cpuset into per EAL thread lcore_config Cunming Liang
2015-02-08 19:59 ` Olivier MATZ
2015-02-09 11:33 ` Liang, Cunming
2015-02-09 17:06 ` Olivier MATZ
2015-02-09 17:37 ` Ananyev, Konstantin
2015-02-10 0:45 ` Liang, Cunming
2015-02-02 2:02 ` [dpdk-dev] [PATCH v4 02/17] eal: new eal option '--lcores' for cpu assignment Cunming Liang
2015-02-08 19:59 ` Olivier MATZ
2015-02-09 11:45 ` Liang, Cunming
2015-02-02 2:02 ` [dpdk-dev] [PATCH v4 03/17] eal: fix wrong strnlen() return value in 32bit icc Cunming Liang
2015-02-08 19:59 ` Olivier MATZ
2015-02-09 11:57 ` Liang, Cunming
2015-02-09 17:13 ` Olivier MATZ
2015-02-10 0:54 ` Liang, Cunming
2015-02-02 2:02 ` [dpdk-dev] [PATCH v4 04/17] eal: add support parsing socket_id from cpuset Cunming Liang
2015-02-08 20:00 ` Olivier MATZ
2015-02-09 12:26 ` Liang, Cunming
2015-02-09 17:16 ` Olivier MATZ
2015-02-02 2:02 ` [dpdk-dev] [PATCH v4 05/17] eal: new TLS definition and API declaration Cunming Liang
2015-02-08 20:00 ` Olivier MATZ
2015-02-09 12:45 ` Liang, Cunming
2015-02-09 17:26 ` Olivier MATZ
2015-02-10 2:45 ` Liang, Cunming
2015-02-02 2:02 ` [dpdk-dev] [PATCH v4 06/17] eal: add eal_common_thread.c for common thread API Cunming Liang
2015-02-08 20:00 ` Olivier MATZ
2015-02-09 13:12 ` Liang, Cunming
2015-02-09 17:30 ` Olivier MATZ
2015-02-10 2:46 ` Liang, Cunming
2015-02-02 2:02 ` [dpdk-dev] [PATCH v4 07/17] eal: add rte_gettid() to acquire unique system tid Cunming Liang
2015-02-08 20:00 ` Olivier MATZ
2015-02-10 6:57 ` Liang, Cunming
2015-02-10 17:16 ` Olivier MATZ
2015-02-02 2:02 ` [dpdk-dev] [PATCH v4 08/17] eal: apply affinity of EAL thread by assigned cpuset Cunming Liang
2015-02-08 20:00 ` Olivier MATZ
2015-02-09 13:48 ` Liang, Cunming
2015-02-09 17:36 ` Olivier MATZ
2015-02-10 2:51 ` Liang, Cunming
2015-02-02 2:02 ` [dpdk-dev] [PATCH v4 09/17] enic: fix re-define freebsd compile complain Cunming Liang
2015-02-08 20:00 ` Olivier MATZ
2015-02-09 13:50 ` Liang, Cunming
2015-02-02 2:02 ` [dpdk-dev] [PATCH v4 10/17] malloc: fix the issue of SOCKET_ID_ANY Cunming Liang
2015-02-08 20:00 ` Olivier MATZ
2015-02-09 14:08 ` Liang, Cunming
2015-02-09 17:43 ` Olivier MATZ
2015-02-02 2:02 ` [dpdk-dev] [PATCH v4 11/17] log: fix the gap to support non-EAL thread Cunming Liang
2015-02-08 20:01 ` Olivier MATZ
2015-02-09 14:19 ` Liang, Cunming
2015-02-09 17:44 ` Olivier MATZ
2015-02-10 2:56 ` Liang, Cunming
2015-02-02 2:02 ` [dpdk-dev] [PATCH v4 12/17] eal: set _lcore_id and _socket_id to (-1) by default Cunming Liang
2015-02-08 20:01 ` Olivier MATZ
2015-02-09 14:24 ` Liang, Cunming
2015-02-09 17:49 ` Olivier MATZ
2015-02-10 2:53 ` Liang, Cunming
2015-02-10 11:15 ` Ananyev, Konstantin
2015-02-02 2:02 ` [dpdk-dev] [PATCH v4 13/17] eal: fix recursive spinlock in non-EAL thraed Cunming Liang
2015-02-02 2:02 ` [dpdk-dev] [PATCH v4 14/17] mempool: add support to non-EAL thread Cunming Liang
2015-02-08 20:01 ` Olivier MATZ
2015-02-09 14:41 ` Liang, Cunming
2015-02-09 17:52 ` Olivier MATZ
2015-02-10 2:57 ` Liang, Cunming
2015-02-02 2:02 ` [dpdk-dev] [PATCH v4 15/17] ring: " Cunming Liang
2015-02-02 2:02 ` [dpdk-dev] [PATCH v4 16/17] ring: add sched_yield to avoid spin forever Cunming Liang
2015-02-06 15:19 ` Olivier MATZ
2015-02-09 15:43 ` Ananyev, Konstantin
2015-02-10 16:53 ` Olivier MATZ
2015-02-02 2:02 ` [dpdk-dev] [PATCH v4 17/17] timer: add support to non-EAL thread Cunming Liang
2015-02-10 17:45 ` Olivier MATZ
2015-02-11 6:25 ` Liang, Cunming
2015-02-11 17:21 ` Olivier MATZ
2015-02-12 0:29 ` Liang, Cunming
2015-02-06 15:47 ` [dpdk-dev] [PATCH v4 00/17] support multi-pthread per core Olivier MATZ
2015-02-06 19:24 ` Robert Sanford
2015-02-06 19:59 ` Olivier MATZ
2015-02-12 8:16 ` [dpdk-dev] [PATCH v5 00/19] " Cunming Liang
2015-02-12 8:16 ` [dpdk-dev] [PATCH v5 01/19] eal: add cpuset into per EAL thread lcore_config Cunming Liang
2015-02-12 8:16 ` [dpdk-dev] [PATCH v5 02/19] eal: fix PAGE_SIZE redefine complaint on freebsd Cunming Liang
2015-02-12 8:16 ` [dpdk-dev] [PATCH v5 03/19] eal: new eal option '--lcores' for cpu assignment Cunming Liang
2015-02-12 8:16 ` [dpdk-dev] [PATCH v5 04/19] eal: fix wrong strnlen() return value in 32bit icc Cunming Liang
2015-02-12 8:16 ` [dpdk-dev] [PATCH v5 05/19] eal: add support parsing socket_id from cpuset Cunming Liang
2015-02-12 8:16 ` [dpdk-dev] [PATCH v5 06/19] eal: new TLS definition and API declaration Cunming Liang
2015-02-12 8:16 ` [dpdk-dev] [PATCH v5 07/19] eal: add eal_common_thread.c for common thread API Cunming Liang
2015-02-12 8:16 ` [dpdk-dev] [PATCH v5 08/19] eal: standardize init sequence between linux and bsd Cunming Liang
2015-02-12 8:16 ` [dpdk-dev] [PATCH v5 09/19] eal: add rte_gettid() to acquire unique system tid Cunming Liang
2015-02-12 8:16 ` [dpdk-dev] [PATCH v5 10/19] eal: apply affinity of EAL thread by assigned cpuset Cunming Liang
2015-02-12 8:16 ` [dpdk-dev] [PATCH v5 11/19] enic: fix re-define freebsd compile complain Cunming Liang
2015-02-12 8:16 ` [dpdk-dev] [PATCH v5 12/19] malloc: fix the issue of SOCKET_ID_ANY Cunming Liang
2015-02-12 8:16 ` [dpdk-dev] [PATCH v5 13/19] log: fix the gap to support non-EAL thread Cunming Liang
2015-02-12 8:16 ` [dpdk-dev] [PATCH v5 14/19] eal: set _lcore_id and _socket_id to (-1) by default Cunming Liang
2015-02-12 8:16 ` [dpdk-dev] [PATCH v5 15/19] eal: fix recursive spinlock in non-EAL thraed Cunming Liang
2015-02-12 8:16 ` [dpdk-dev] [PATCH v5 16/19] mempool: add support to non-EAL thread Cunming Liang
2015-02-12 8:16 ` [dpdk-dev] [PATCH v5 17/19] ring: " Cunming Liang
2015-02-12 8:16 ` [dpdk-dev] [PATCH v5 18/19] ring: add sched_yield to avoid spin forever Cunming Liang
2015-02-12 11:16 ` Olivier MATZ
2015-02-12 13:05 ` Liang, Cunming
2015-02-12 13:08 ` Ananyev, Konstantin
2015-02-12 13:11 ` Bruce Richardson
2015-02-12 8:16 ` [dpdk-dev] [PATCH v5 19/19] timer: add support to non-EAL thread Cunming Liang
2015-02-12 13:54 ` Ananyev, Konstantin
2015-02-13 0:55 ` Liang, Cunming
2015-02-13 9:57 ` Olivier MATZ
2015-02-13 1:38 ` [dpdk-dev] [PATCH v6 00/19] support multi-pthread per core Cunming Liang
2015-02-13 1:38 ` [dpdk-dev] [PATCH v6 01/19] eal: add cpuset into per EAL thread lcore_config Cunming Liang
2015-02-13 1:38 ` [dpdk-dev] [PATCH v6 02/19] eal: fix PAGE_SIZE redefine complaint on freebsd Cunming Liang
2015-02-13 1:38 ` [dpdk-dev] [PATCH v6 03/19] eal: new eal option '--lcores' for cpu assignment Cunming Liang
2015-02-13 1:38 ` [dpdk-dev] [PATCH v6 04/19] eal: fix wrong strnlen() return value in 32bit icc Cunming Liang
2015-02-13 13:49 ` Neil Horman
2015-02-13 14:05 ` Olivier MATZ
2015-02-13 17:55 ` Neil Horman
2015-02-13 18:11 ` Ananyev, Konstantin
2015-02-13 20:21 ` Neil Horman
2015-02-15 1:32 ` Liang, Cunming
2015-02-16 14:47 ` Olivier MATZ
2015-02-13 1:38 ` [dpdk-dev] [PATCH v6 05/19] eal: add support parsing socket_id from cpuset Cunming Liang
2015-02-13 13:51 ` Neil Horman
2015-02-15 1:16 ` Liang, Cunming
2015-02-13 1:38 ` [dpdk-dev] [PATCH v6 06/19] eal: new TLS definition and API declaration Cunming Liang
2015-02-13 13:58 ` Neil Horman
2015-02-15 1:13 ` Liang, Cunming
2015-02-15 5:17 ` Neil Horman
2015-02-15 6:01 ` Liang, Cunming
2015-02-13 1:38 ` [dpdk-dev] [PATCH v6 07/19] eal: add eal_common_thread.c for common thread API Cunming Liang
2015-02-13 1:38 ` [dpdk-dev] [PATCH v6 08/19] eal: standardize init sequence between linux and bsd Cunming Liang
2015-02-13 1:38 ` [dpdk-dev] [PATCH v6 09/19] eal: add rte_gettid() to acquire unique system tid Cunming Liang
2015-02-13 1:38 ` [dpdk-dev] [PATCH v6 10/19] eal: apply affinity of EAL thread by assigned cpuset Cunming Liang
2015-02-13 1:38 ` [dpdk-dev] [PATCH v6 11/19] enic: fix re-define freebsd compile complain Cunming Liang
2015-02-13 1:38 ` [dpdk-dev] [PATCH v6 12/19] malloc: fix the issue of SOCKET_ID_ANY Cunming Liang
2015-02-13 17:57 ` Neil Horman
2015-02-15 0:43 ` Liang, Cunming
2015-02-15 14:09 ` Neil Horman
2015-02-16 1:55 ` Liang, Cunming
2015-02-13 1:38 ` [dpdk-dev] [PATCH v6 13/19] log: fix the gap to support non-EAL thread Cunming Liang
2015-02-13 1:38 ` [dpdk-dev] [PATCH v6 14/19] eal: set _lcore_id and _socket_id to (-1) by default Cunming Liang
2015-02-13 1:38 ` [dpdk-dev] [PATCH v6 15/19] eal: fix recursive spinlock in non-EAL thraed Cunming Liang
2015-02-13 1:38 ` [dpdk-dev] [PATCH v6 16/19] mempool: add support to non-EAL thread Cunming Liang
2015-02-13 1:38 ` [dpdk-dev] [PATCH v6 17/19] ring: " Cunming Liang
2015-02-13 1:38 ` [dpdk-dev] [PATCH v6 18/19] ring: add sched_yield to avoid spin forever Cunming Liang
2015-02-13 1:38 ` [dpdk-dev] [PATCH v6 19/19] timer: add support to non-EAL thread Cunming Liang
2015-02-13 10:06 ` [dpdk-dev] [PATCH v6 00/19] support multi-pthread per core Olivier MATZ
2015-02-15 1:44 ` Liang, Cunming
2015-02-13 10:10 ` Ananyev, Konstantin
2015-02-15 3:15 ` [dpdk-dev] [PATCH v7 " Cunming Liang
2015-02-15 3:15 ` [dpdk-dev] [PATCH v7 01/19] eal: add cpuset into per EAL thread lcore_config Cunming Liang
2015-02-15 3:15 ` [dpdk-dev] [PATCH v7 02/19] eal: fix PAGE_SIZE redefine complaint on freebsd Cunming Liang
2015-02-15 3:15 ` Cunming Liang [this message]
2015-02-15 3:15 ` [dpdk-dev] [PATCH v7 04/19] eal: fix wrong strnlen() return value in 32bit icc Cunming Liang
2015-02-16 14:51 ` Olivier MATZ
2015-02-17 1:29 ` Liang, Cunming
2015-02-15 3:15 ` [dpdk-dev] [PATCH v7 05/19] eal: add public function parsing socket_id from cpuid Cunming Liang
2015-02-15 3:15 ` [dpdk-dev] [PATCH v7 06/19] eal: new TLS definition and API declaration Cunming Liang
2015-02-15 3:15 ` [dpdk-dev] [PATCH v7 07/19] eal: add eal_common_thread.c for common thread API Cunming Liang
2015-02-15 3:15 ` [dpdk-dev] [PATCH v7 08/19] eal: standardize init sequence between linux and bsd Cunming Liang
2015-02-15 3:15 ` [dpdk-dev] [PATCH v7 09/19] eal: add rte_gettid() to acquire unique system tid Cunming Liang
2015-02-15 3:15 ` [dpdk-dev] [PATCH v7 10/19] eal: apply affinity of EAL thread by assigned cpuset Cunming Liang
2015-02-15 3:15 ` [dpdk-dev] [PATCH v7 11/19] enic: fix re-define freebsd compile complain Cunming Liang
2015-02-15 3:15 ` [dpdk-dev] [PATCH v7 12/19] malloc: fix the issue of SOCKET_ID_ANY Cunming Liang
2015-02-15 3:15 ` [dpdk-dev] [PATCH v7 13/19] log: fix the gap to support non-EAL thread Cunming Liang
2015-02-15 3:15 ` [dpdk-dev] [PATCH v7 14/19] eal: set _lcore_id and _socket_id to (-1) by default Cunming Liang
2015-02-15 3:15 ` [dpdk-dev] [PATCH v7 15/19] eal: fix recursive spinlock in non-EAL thraed Cunming Liang
2015-02-15 3:15 ` [dpdk-dev] [PATCH v7 16/19] mempool: add support to non-EAL thread Cunming Liang
2015-02-15 3:15 ` [dpdk-dev] [PATCH v7 17/19] ring: " Cunming Liang
2015-02-15 3:15 ` [dpdk-dev] [PATCH v7 18/19] ring: add sched_yield to avoid spin forever Cunming Liang
2015-02-15 3:15 ` [dpdk-dev] [PATCH v7 19/19] timer: add support to non-EAL thread Cunming Liang
2015-02-17 2:07 ` [dpdk-dev] [PATCH v8 00/19] support multi-pthread per core Cunming Liang
2015-02-17 2:07 ` [dpdk-dev] [PATCH v8 01/19] eal: add cpuset into per EAL thread lcore_config Cunming Liang
2015-02-17 2:07 ` [dpdk-dev] [PATCH v8 02/19] eal: fix PAGE_SIZE redefine complaint on freebsd Cunming Liang
2015-02-17 2:08 ` [dpdk-dev] [PATCH v8 03/19] eal: new eal option '--lcores' for cpu assignment Cunming Liang
2015-02-17 2:08 ` [dpdk-dev] [PATCH v8 04/19] eal: fix wrong strnlen() return value in 32bit icc Cunming Liang
2015-02-17 2:08 ` [dpdk-dev] [PATCH v8 05/19] eal: add public function parsing socket_id from cpu_id Cunming Liang
2015-02-17 2:08 ` [dpdk-dev] [PATCH v8 06/19] eal: new TLS definition and API declaration Cunming Liang
2015-02-17 2:08 ` [dpdk-dev] [PATCH v8 07/19] eal: add eal_common_thread.c for common thread API Cunming Liang
2015-02-17 2:08 ` [dpdk-dev] [PATCH v8 08/19] eal: standardize init sequence between linux and bsd Cunming Liang
2015-02-17 2:08 ` [dpdk-dev] [PATCH v8 09/19] eal: add rte_gettid() to acquire unique system tid Cunming Liang
2015-02-17 2:08 ` [dpdk-dev] [PATCH v8 10/19] eal: apply affinity of EAL thread by assigned cpuset Cunming Liang
2015-02-17 2:08 ` [dpdk-dev] [PATCH v8 11/19] enic: fix re-define freebsd compile complain Cunming Liang
2015-02-17 2:08 ` [dpdk-dev] [PATCH v8 12/19] malloc: fix the issue of SOCKET_ID_ANY Cunming Liang
2015-02-17 2:08 ` [dpdk-dev] [PATCH v8 13/19] log: fix the gap to support non-EAL thread Cunming Liang
2015-02-17 2:08 ` [dpdk-dev] [PATCH v8 14/19] eal: set _lcore_id and _socket_id to (-1) by default Cunming Liang
2015-02-17 2:08 ` [dpdk-dev] [PATCH v8 15/19] eal: fix recursive spinlock in non-EAL thraed Cunming Liang
2015-02-17 2:08 ` [dpdk-dev] [PATCH v8 16/19] mempool: add support to non-EAL thread Cunming Liang
2015-02-17 2:08 ` [dpdk-dev] [PATCH v8 17/19] ring: " Cunming Liang
2015-02-17 2:08 ` [dpdk-dev] [PATCH v8 18/19] ring: add sched_yield to avoid spin forever Cunming Liang
2015-02-17 2:08 ` [dpdk-dev] [PATCH v8 19/19] timer: add support to non-EAL thread Cunming Liang
2015-02-17 10:19 ` [dpdk-dev] [PATCH v8 00/19] support multi-pthread per core Ananyev, Konstantin
2015-02-24 18:53 ` Thomas Monjalon
2015-02-25 1:25 ` Liang, Cunming
2015-02-17 2:20 ` [dpdk-dev] [PATCH v7 " Wan, Qun
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1423970145-31985-4-git-send-email-cunming.liang@intel.com \
--to=cunming.liang@intel.com \
--cc=dev@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).