Linux ko内存

insmod插入ko时,提升申请内存失败。这是因为MODULES的空间分配不够大。Linux有一个专门的内核模块映射空间,是专门给ko插入时用的。地址范围是MODULES_VADDR~MODULES_END-1

然而MODULES_VADDR是可以配置的,该宏定位的位置为内核代码下的arch/arm/include/asm/memory.h,不同内核路径可能不一样。MODULES_VADDR定义的是:

#define MODULES_VADDR          (PAGE_OFFSET - SZ_16M)

一开始的时候,我直接修改为

#define MODULES_VADDR          (PAGE_OFFSET - SZ_32M)

编译后运行,发现有错误。具体错误未深入研究。后面修改为

#define MODULES_VADDR          (PAGE_OFFSET - SZ_16M - 8*1024*1024)

相当于在原来的基础上面,增加了8M的空间,然后ko正常加载。当然,如果ko越来越多,越来越大的话,估计还是不够。

基于上面的修改,还需修改同文件下的TASK_SIZE,原本是:

#define TASK_SIZE              (UL(CONFIG_PAGE_OFFSET) - UL(SZ_16M))

修改为:

#define TASK_SIZE              (UL(CONFIG_PAGE_OFFSET) - UL(SZ_16M) - 8*1024*1024)

不然编译直接报错。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值