linux给模块分配专用内存,使用vmalloc为内核模块分配大量内存

我试图使用vmalloc()为内核模块分配大内存。 我无法在具有64GB RAM的64位Linux(3.10.0-514.2.2.el7.x86_64)上分配超过2GB的内存。使用vmalloc为内核模块分配大量内存

这些都是相关的部分代码:

...

static int logical_block_size = 512;

module_param(logical_block_size, int, 0);

static int nsectors = 1024; /* How big the drive is */

module_param(nsectors, int, 0);

...

/*

* The internal representation of our device.

*/

static struct sbd_device {

unsigned long size;

spinlock_t lock;

u8 *data;

struct gendisk *gd;

} Device;

...

static int __init sbd_init(void) {

/*

* Set up our internal device.

*/

Device.size = nsectors * logical_block_size;

spin_lock_init(&Device.lock);

Device.data = vmalloc(Device.size);

...

是否有限制的内存的大小,可以通过vmalloc分配?有没有另一种方式来分配大量的内存到内核模块?

2017-05-30

curious

+0

从理论上讲,限制应该是32TB或物理可用的RAM,无论先到先得;)在尝试分配内存时,你是否收到内核发来的消息? –

+0

向我们展示你使用'vmalloc()'的方式。 –

+2

在内核模块中分配2GiB RAM听起来像是一个非常糟糕的主意。看起来像一个XY问题。 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值