linux那些事之gup_flags
linux gup子系统在处理各种pin memory中,为了方便处理各种使用场景同时减少代码冗余,使用了gup_flags 标识位用于标记处理内存时各种场景,也是常见的软件设计方法,但是flag引入增加对代码的维护难度,尤其时阅读代码时经常被各种gup_flags(在include/linux/mm.h文件中定义)搞蒙,因此有必要对gup flags做个说明:
名称值说明FOLL_WRITE0x01用于检查对应的page table entry是否拥有写权限FOLL_TOUCH0x02标记page 可以被访问FOLL_GET0x04用于锁定物理页,get_user_pages()函数所必须设置,即如果该函数struct page **pages参数不为空,可以获取到对应的物理页,释放锁定的页使用put_page(),与FOLL_PIN标记位冲突,不能同时使用FOLL_PIN0x40000锁定物理页,与FOLL_GET 冲突,pin_user_pages()接口使用,一般是用作gup模块内部使用,与FOLL_GET区别就是两者的引用计数不一样
共有 0 条评论