我正在使用Linux内核,并且希望在引导时(在内核空间中)静态地分配一个子页面大小的数组,稍后内核将其用于调度目的。有谁能以最好的方式指出我这样做?
在操作系统的正常执行期间永远不会显式释放此内存,除非在结束时隐式执行(关闭)。
我已经知道alloc_bootmem()
但我也想知道/探索其他可能性。如果有人能够指出我使用内存的代码片段,就像Linux内核中已经存在的那样,那将是非常好的。
答案 0 :(得分:0)
一些内核模块正在使用这种技术在需要大尺寸时分配DMA缓冲区,例如jazzdma模块和nlm-dma模块
请注意,如果您使用启动时内存分配器用于dma目的,则必须使用
Avr_Hold_Time = (g.Sum(b => b.Field<int?>("QueueHoldCount")) == 0)
? 0
: (double)(g.Sum(b => b.Field<int?>("Avr_Hold_Time")))
/ (g.Sum(b => b.Field<int?>("QueueHoldCount")),
而不是
void *alloc_bootmem_low_pages(unsigned long size);
因为DMA只能访问低内存类型