免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: ktrudger
打印 上一主题 下一主题

[FreeBSD] freebsd内核模块中只能分配<80M内存,有何办法? [复制链接]

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
21 [报告]
发表于 2007-01-10 11:16 |只看该作者
刚才花费了点时间,测试了一下,并不存在你说的问题,也就是内存分配上没有什么限制。

  1. #include <sys/param.h>
  2. #include <sys/systm.h>
  3. #include <sys/kernel.h>
  4. #include <sys/module.h>
  5. #include <sys/malloc.h>

  6. static MALLOC_DEFINE(M_VMT, "vmt", "vmt");

  7. char *sss = 0;
  8. #define MMSS 1024*1024*100

  9. static int
  10. vmt_modevent(module_t mod, int type, void *data)
  11. {
  12.         switch (type) {
  13.         case MOD_LOAD:
  14.                 sss = malloc(MMSS, M_VMT, M_WAITOK);
  15.                 if (sss == 0) {
  16.                         printf("no enough memory\n");
  17.                         return EINVAL;
  18.                 }
  19.                 break;
  20.         case MOD_UNLOAD:
  21.                 free(sss, M_VMT);
  22.                 printf("module unload\n");
  23.                 break;
  24.         }
  25.         return 0;
  26. }

  27. static moduledata_t vmt_mod = {
  28.         "vmt",
  29.         vmt_modevent,
  30.         NULL
  31. };

  32. DECLARE_MODULE(vmt, vmt_mod, SI_SUB_PSEUDO, SI_ORDER_ANY);
复制代码

[ 本帖最后由 mirnshi 于 2007-1-10 11:17 编辑 ]

2.PNG (18.57 KB, 下载次数: 51)

2.PNG

1.PNG (18.67 KB, 下载次数: 45)

1.PNG

3.PNG (21.01 KB, 下载次数: 49)

3.PNG

论坛徽章:
0
22 [报告]
发表于 2007-01-10 11:18 |只看该作者
刚才修改在/boot/loader.conf中修改kern.vm.kmem.size,本准备改为1G的,没想搞错了,搞成10G了,现在一启动就kernel panic,有没有办法修复系统?

论坛徽章:
0
23 [报告]
发表于 2007-01-10 11:19 |只看该作者
原帖由 mirnshi 于 2007-1-10 11:16 发表
刚才花费了点时间,测试了一下,并不存在你说的问题,也就是内存分配上没有什么限制。
[code]
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
#include <sys ...


,你的内存比较大,所以那个限制好像也大些。
你改
#define MMSS 1024*1024*100

#define MMSS 1024*1024*200
看看。
应该就不行了。

论坛徽章:
0
24 [报告]
发表于 2007-01-10 11:22 |只看该作者
原帖由 ktrudger 于 2007-1-10 11:18 发表
刚才修改在/boot/loader.conf中修改kern.vm.kmem.size,本准备改为1G的,没想搞错了,搞成10G了,现在一启动就kernel panic,有没有办法修复系统?


晕掉。

4.11系统启动的时候,在等待10秒钟的时间内按除enter之外的任意建进入boot提示符,直接set kern.vm.kmem.size=xxxx

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
25 [报告]
发表于 2007-01-10 11:25 |只看该作者
原帖由 ktrudger 于 2007-1-10 11:19 发表


,你的内存比较大,所以那个限制好像也大些。
你改
#define MMSS 1024*1024*100

#define MMSS 1024*1024*200
看看。
应该就不行了。

我在vmware中,设置的内存才300M,不算大吧

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
26 [报告]
发表于 2007-01-10 11:26 |只看该作者
原帖由 ktrudger 于 2007-1-10 11:18 发表
刚才修改在/boot/loader.conf中修改kern.vm.kmem.size,本准备改为1G的,没想搞错了,搞成10G了,现在一启动就kernel panic,有没有办法修复系统?

光盘引导,修复之

论坛徽章:
0
27 [报告]
发表于 2007-01-10 11:30 |只看该作者
原帖由 mirnshi 于 2007-1-10 11:25 发表

我在vmware中,设置的内存才300M,不算大吧

怪,你的bsd版本是4.11么,我现在1G内存,那个limite居然还比你小,不知道内核里那个算法怎么算的。

论坛徽章:
0
28 [报告]
发表于 2007-01-10 11:30 |只看该作者
原帖由 mirnshi 于 2007-1-10 11:26 发表

光盘引导,修复之

怎么引导?对freebsd使用不熟悉,^_^
平时都是ssh登录上bsd的机器上写代码。

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
29 [报告]
发表于 2007-01-10 11:33 |只看该作者
原帖由 ktrudger 于 2007-1-10 11:30 发表

怪,你的bsd版本是4.11么,我现在1G内存,那个limite居然还比你小,不知道内核里那个算法怎么算的。

1G内存,你的内核才能用80M,够份了。
测试环境是4.11的,全新安装,就是重新编译了内核,去掉了无关的设备。修改了/boot/default/loader.conf

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
30 [报告]
发表于 2007-01-10 11:35 |只看该作者
原帖由 ktrudger 于 2007-1-10 11:30 发表

怎么引导?对freebsd使用不熟悉,^_^
平时都是ssh登录上bsd的机器上写代码。

对系统不熟,还在上面做内核开发?你们头真能容忍这种风险。光盘引导都不会吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP