kmalloc中GFP_USER标志的用途是什么?

时间:2016-02-05 05:57:24

标签: linux linux-kernel embedded-linux kmalloc

据我所知,GFP_USER标志中的使用(在kmalloc的调用中)用于为用户空间分配内存。这是否意味着分配的页面位于内核空间中,用户可以访问? 这些页面是否必须在用户空间中mmapp,或者用户可以直接访问该地址。 如果需要mmapp那么GFP_USERGFP_KERNEL之间有什么区别?

1 个答案:

答案 0 :(得分:3)

可以在内核sources中找到简要说明:

  

GFP_USER是内核内部分配的典型代表。呼叫者,召集者   需要ZONE_NORMAL或较低区域才能直接访问,但可以直接访问   回收

     

#define GFP_KERNEL (__GFP_RECLAIM | __GFP_IO | __GFP_FS) #define GFP_USER (__GFP_RECLAIM | __GFP_IO | __GFP_FS | __GFP_HARDWALL) 用于也需要直接进行的用户空间分配   可由内核或硬件访问。它通常由硬件使用   对于映射到硬件的用户空间(例如图形)的缓冲区   仍然必须DMA到。对这些分配强制执行cpuset限制。

{{1}}

来自here

  

__ GFP_HARDWALL强制执行cpuset内存分配策略。