在内核代码中替换/修改kzalloc_node,以便该函数分配超过4MB的内存

时间:2017-06-12 15:32:41

标签: linux memory memory-management

架构: x86-64

Linux版本: 4.11.3

这是参考下面的Stack Overflow帖子: -

Allocating more than 4 MB of pinned contiguous memory in the Linux Kernel

我看到问题是要求PCI驱动程序,它要求内核中有超过4 MB的连续内存。但是,我的意图是使用另一个函数代替kzalloc_node函数(或修改它!)。我想修改内核代码(如果可行的话),以便我可以分配超过4 MB的连续内存,kzalloc_node不允许我这样做。当然,修改MAX_ORDER很困难,因为它可能会导致编译器错误。此外,kzalloc_node函数正在计算与CPU对应的节点 - 因此内存分配发生在节点级别。

背景

基本上我正在尝试增加 sampling 缓冲区的大小,以减少它在充满时产生的开销,并且需要引发中断以从缓冲区读取数据。所以我试图减少中断的数量,从而需要增加缓冲区的大小。内核代码使用kzalloc_node来分配内存,因此它不能获得超过4 MB的连续内存。我想知道我有什么机制来替换这个函数/分配更多的内存?

我可以更换此功能吗?由于我试图修改内核代码,这里适用相同的启动时分配方法吗?我读到这个机制适用于设备驱动程序,我也可以使用它吗?

0 个答案:

没有答案