曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 5501|回复: 0
打印 上一主题 下一主题

vmalloc | 分配动态内存

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2009-8-31 03:09:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
功能:分配动态内存

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

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

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

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

变量
  size   将分配的内存大小

返回值
成功则返回分配内存的起始地址,失败返回 NULL 。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-4 03:20 , Processed in 0.072656 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表