GFP_ATOMIC如何防止睡眠

时间:2012-12-18 15:59:09

标签: linux-kernel linux-device-driver

GFP_ATOMIC(在kzalloc中)如何阻止睡眠?

也找到了

#define GFP_ATOMIC (__GFP_HIGH)

但是不明白了。?

2 个答案:

答案 0 :(得分:1)

GFP_ATOMIC通过告诉内存分配代码不允许睡眠以满足分配来防止睡眠 - 这就是全部。如果内存分配代码需要休眠,并且GFP_ATOMIC已经通过,那么它将向调用者返回错误。

答案 1 :(得分:0)

如果你尝试在linux内核中分配内存,那么可以在名为kmalloc(size,flags)的函数的帮助下完成。 但是函数中的标志参数基本上是指示内核应该如何分配内存。基本上有三个标志区域作为动作修饰符,区域修饰符和类型

如果您将标志设为 GFP_ATOMIC,则分配为高优先级且不会休眠。这是在中断处理程序,下半部分和其他无法入睡的情况下使用的标志。

&安培; 它基本上是指示内核从预先分配的slab内存中获取内存块,如果slab中有内存则会原子分配,否则分配失败

了解更多信息http://www.linuxjournal.com/article/6930