曲径通幽论坛

标题: vmalloc | 分配动态内存 [打印本页]

作者: beyes    时间: 2009-8-31 03:09
标题: vmalloc | 分配动态内存
功能:分配动态内存

原型
#include <linux/vmalloc.h>
void vmalloc (unsigned long size);

说明
分配内核内部连续的内存空间。其分配的内存地址在使用方式上与 kmalloc() 函数基本相同。kmalloc() 函数限定了分配大小;而只要虚拟空间允许 vmlloc() 函数就不受分配大小的限制,因此,此函数只用于分配内存的大空间。

在设备驱动程序中,无论使用 vmalloc() 函数的分配地址,还是 kmalloc() 函数中分配到的地址都没有太大的差异。如果要得到相应地址的实际(物理)地址,由于 vmlloc() 函数分配虚拟地址空间,相应地址的区域可能在硬盘上,因此可能失败。

另外,vmlloc() 函数为了分配大容量连续空间执行虚拟内存的管理命令,与 kmalloc() 函数相比分配速度较慢。分配内存时,kmalloc() 函数可以设定让进程不能进入睡眠的标志,因此不会有错误;而 vmalloc() 函数没有相应设置。中断服务函数中不能调用该函数。

变量
  size   将分配的内存大小

返回值
成功则返回分配内存的起始地址,失败返回 NULL 。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2