diff options
| author | Qiuwen Lu <[email protected]> | 2020-07-20 11:53:03 +0800 |
|---|---|---|
| committer | Qiuwen Lu <[email protected]> | 2020-07-20 11:53:03 +0800 |
| commit | 68ce0cd4c2ebf20af613ef8ddde315623d695992 (patch) | |
| tree | 3317cfd26ee48290cef9186247b430b96460b1c6 /pag | |
| parent | d88306ecbe19ac393ef8206f8cdbb64b022c8c05 (diff) | |
修正PAG模式下无法使用多于64个CPU核心的问题。
Diffstat (limited to 'pag')
| -rw-r--r-- | pag/libpag.c | 20 |
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 +} |
