DPDK 函数 rte_malloc returns NULL 尚未进行分配

The DPDK function rte_malloc returns NULL while no allocation is made yet

这是我的代码:

int main(int argc, char *argv[]) {
    rte_eal_init(argc, argv);
    size_t size = 1000;
    void *p = rte_malloc(NULL, size, 0);
    printf("p: %p\n", p);
    return 0;
}

很高兴我得到了以下输出:

p: (nil)

我没有忘记保留大页面,dpdk-hugepages.py -s 证明了这一点。

可能是什么问题?

在对代码进行小的修正后,我能够得到伪代码并 运行 正确。

代码:

$ cat test.c
#include <stdio.h>
#include <rte_eal.h>
#include <rte_malloc.h>

int main(int argc, char *argv[]) {
    int ret = rte_eal_init(argc, argv);

    if (ret >= 0) {
        size_t size = 1000;
        void *p = rte_malloc(NULL, size, 0);
        printf("p: %p\n", p);
    }

     return ret;
}
  1. 静态 DPDK 库编译:gcc test.c $(pkg-config --cflags --libs libdpdk --static)
  2. 动态 DPDK 库编译:gcc test.c $(pkg-config --cflags --libs libdpdk)
  3. 运行: sudo ./a.out -l 1 --no-pci --log-level=8

日志:

$ sudo ./a.out -l 1 --no-pci --log-level=8
EAL: Detected CPU lcores: 128
EAL: Detected NUMA nodes: 2
EAL: Detected static linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'VA'
EAL: VFIO support initialized
TELEMETRY: No legacy callbacks, legacy socket not created
**p: 0x17ffd5b00**