曲径通幽论坛
标题:
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