常见内存分配函数
1 . kmalloc 内核函数
#include <linux/slab.h>
void *kmalloc(size_t size, int flags);//最大为 128k
void kfree(void *ptr);
kmalloc分配一块物理空间和虚拟空间都连续,大小为size的内存。
常用的flags标志有:
GFP_ATOMIC
用来从中断处理和进程上下文之外的其他代码中分配内存. 从不睡眠.
GFP_KERNEL
内核内存的正常分配. 可能睡眠.最常用的,(内部最终调用 __get_free_pages)
GFP_USER
用来为用户空间页来分配内存; 它可能睡眠.
例如: P=(int*)kmalloc(n*sizeof(int),GFP_KERNEL);//返回值是一个指向内存开始的指针
2 . kzalloc 内核函数
#include <linux/slab.h>
void *kzalloc(size_t size, gfp_t flags);
void kf