GFP_ATOMIC(在kzalloc中)如何阻止睡眠?
也找到了
#define GFP_ATOMIC (__GFP_HIGH)
但是不明白了。?
答案 0 :(得分:1)
GFP_ATOMIC
通过告诉内存分配代码不允许睡眠以满足分配来防止睡眠 - 这就是全部。如果内存分配代码需要休眠,并且GFP_ATOMIC
已经通过,那么它将向调用者返回错误。
答案 1 :(得分:0)
如果你尝试在linux内核中分配内存,那么可以在名为kmalloc(size,flags)的函数的帮助下完成。 但是函数中的标志参数基本上是指示内核应该如何分配内存。基本上有三个标志区域作为动作修饰符,区域修饰符和类型。
如果您将标志设为 GFP_ATOMIC,则分配为高优先级且不会休眠。这是在中断处理程序,下半部分和其他无法入睡的情况下使用的标志。
&安培; 它基本上是指示内核从预先分配的slab内存中获取内存块,如果slab中有内存则会原子分配,否则分配失败。