当我在linux中的一个设备驱动程序中浏览一些代码时,我发现在线程(进程)中设置了标志PF_MEMALLOC
。我在头文件中找到了这个标志的定义,它说“分配内存”
#define PF_MEMALLOC 0x00000800 /* Allocating memory */
所以,我怀疑的是,在代码current->flags |= PF_MEMALLOC;
答案 0 :(得分:4)
在内核中使用此标志来指示当前正在使用内存分配路径执行的线程,因此允许递归分配它需要忽略水印的任何内存,而不必强制写出脏页。
这是为了确保如果试图释放页面以满足原始分配请求的代码本身必须分配少量内存来继续,那么该代码将不会以递归方式尝试释放页面。 / p>
大多数司机不应该要求这个标志。