据我了解,在GFP_USER
标志(在调用kmalloc
) 用于为用户空间分配内存。这是否意味着分配的页面位于用户可以访问的内核空间中?
这些页面是否需要mmapp
'ed 在用户空间中或者用户可以直接访问该地址。
如果他们需要mmapp
那么有什么区别GFP_USER
and GFP_KERNEL
?
简要说明可以在内核中找到sources:
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)
From here:
__GFP_HARDWALL 强制执行cpuset内存分配策略。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)