2011年(24)
分类: LINUX
2011-07-19 15:55:24
在函数alloc_skb(unsigned int size,int gfp_mask)代表一种分配模式
gfp_mask标志在alloc_page,kmalloc函数中都有用到。该标志可以分为三类:行为修饰符,区修饰符,类型修饰符。
行为修饰符表示内核应当如何分配所需的内存,在某些特定的情况下,只能使用某些特定的方法分配内存,例如,中断处理程序就要求内核在分配内存时不能睡眠(因为中断处理程序不能被重新调度)。常用标志值有__GPF_WAIT(分配器可以睡眠),__GFP_IO(分配器可以启动磁盘I/O),__GFP_FS(分配器可以启动文件系统I/O)等等。
区修饰符表示从哪个区分配内存,内核优先从ZONE_NORMAL开始分配。区修饰符的值只有__GFP_DMA,__GFP_HIGHMEM。
类型修饰符指定所需的行为和区描述符以完成特殊类型的处理。最常用的值为__GFP_KERNEL (__GFP_WAIT | __GFP_IO | __GFP_FS)