据我了解,GFP_USER
标志中的使用(在调用中kmalloc
)用于为用户空间分配内存。这是否意味着分配的页面在内核空间中,用户可以访问?这些页面是否需要mmapp
在用户空间中编辑或用户可以直接访问地址。如果他们需要,那么和mmapp
有什么区别?GFP_USER
GFP_KERNEL
问问题
3759 次
1 回答
5
简要说明可以在内核源代码中找到:
GFP_KERNEL
是典型的内核内部分配。调用者需要 ZONE_NORMAL 或更低的区域才能直接访问,但可以直接回收。
GFP_USER
用于也需要由内核或硬件直接访问的用户空间分配。它通常被硬件用于映射到硬件仍然必须 DMA 到的用户空间(例如图形)的缓冲区。对这些分配强制执行 cpuset 限制。
#define GFP_KERNEL (__GFP_RECLAIM | __GFP_IO | __GFP_FS)
#define GFP_USER (__GFP_RECLAIM | __GFP_IO | __GFP_FS | __GFP_HARDWALL)
从这里:
__GFP_HARDWALL 强制执行cpuset内存分配策略。
于 2016-02-05T06:51:55.707 回答