问题描述
说我想分配一页或数页。在后面的情况下,我将使用一些函数调用并将其分配给页面指针或数组,在前面的情况下,我只想要一些返回单个页面的函数调用,因此我将在分配的左侧拥有页面类型。
那么我该如何分配内存 NUMA SYstem
首先我需要知道NUMA是什么? 最近内核中支持多少节点用于 NUMA 的内存使用和分配 最后如何使用NUMA分配单页和多页
struct device dev=pci_dev_obj->dev;
int node = dev_to_node(d); //<----WHAT IS THIS FUNTION?
struct page *data;
data = alloc_pages_node(node,GFP_KERNEL,get_order(R8169_RX_BUF_SIZE));
//WHAT IS get_order() function above
我也可以使用 NUMA 页进行直接内存访问。 例如,realtek 的 r8169 驱动,在上面几行之后使用下面这行
dma_addr_t mapping = dma_map_page(dev,data,R8169_RX_BUF_SIZE,DMA_FROM_DEVICE);
我认为 dma_map_page 用于返回 dma 映射地址> 什么意思?
//This is the line afterwards
RxDescriptor->le64_addr = cpu_to_le64(mapping);
另外,如果我没有设备怎么办,例如我没有 pci 设备或任何只需要内存分配的东西,那么我是否能够使用 NUMA 分配内存 感谢帮助 注:以上代码来自以太网网卡驱动
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)