summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQiuwen Lu <[email protected]>2020-07-20 11:53:03 +0800
committerQiuwen Lu <[email protected]>2020-07-20 11:53:03 +0800
commit68ce0cd4c2ebf20af613ef8ddde315623d695992 (patch)
tree3317cfd26ee48290cef9186247b430b96460b1c6
parentd88306ecbe19ac393ef8206f8cdbb64b022c8c05 (diff)
修正PAG模式下无法使用多于64个CPU核心的问题。
-rw-r--r--pag/libpag.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/pag/libpag.c b/pag/libpag.c
index e122c7d..68b7561 100644
--- a/pag/libpag.c
+++ b/pag/libpag.c
@@ -13,14 +13,13 @@
#include <rte_ether.h>
#include <marsio.h>
-
#include "libpag.h"
#define PAG_SYMBOL_MAX 64
#define PAG_STRING_MAX 1024
#define PAG_BURST_MAX 64
#define PAG_DEVICE_MAX 16
-#define PAG_CPU_ID_MAX 64
+#define PAG_CPU_ID_MAX 128
struct pag_instance
{
@@ -37,7 +36,7 @@ struct pag_instance
unsigned int burst_tx;
unsigned int autoexit;
unsigned int looptimes;
- uint64_t coremask;
+ cpu_set_t coremask;
};
struct pag_thread_instance
@@ -128,10 +127,12 @@ static int pag_config_load_stream_info(struct pag_instance * instance)
return -1;
}
- uint64_t coremask = 0;
+ cpu_set_t coremask;
+ CPU_ZERO(&coremask);
+
for(int i = 0; i < cpu_id_count; i++)
{
- coremask |= 1ULL << cpu_id_range[i];
+ CPU_SET(cpu_id_range[i], &coremask);
}
// 读默认设备流数,没有指定使用线程数
@@ -148,9 +149,8 @@ static int pag_config_load_stream_info(struct pag_instance * instance)
instance->nr_rx_stream = nr_rx_stream;
instance->nr_tx_stream = nr_tx_stream;
- PAG_LOG("coremask=%"PRIx64", rxstream=%u, txstream=%u, autoexit=%d",
- instance->coremask, instance->nr_rx_stream, instance->nr_tx_stream,
- instance->autoexit);
+ PAG_LOG("rxstream=%u, txstream=%u, autoexit=%d",
+ instance->nr_rx_stream, instance->nr_tx_stream, instance->autoexit);
return 0;
}
@@ -270,7 +270,7 @@ int pag_open()
instance->mr_instance = marsio_create();
unsigned int value = 1;
- marsio_option_set(instance->mr_instance, MARSIO_OPT_THREAD_MASK,
+ marsio_option_set(instance->mr_instance, MARSIO_OPT_THREAD_MASK_IN_CPUSET,
&instance->coremask, sizeof(instance->coremask));
marsio_option_set(instance->mr_instance, MARSIO_OPT_EXIT_WHEN_ERR,
&value, sizeof(value));
@@ -413,4 +413,4 @@ void pag_freesendbuf_eth(int sid, int port)
uint64_t pag_time(void * pkt)
{
return 0;
-} \ No newline at end of file
+}