免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3251 | 回复: 5
打印 上一主题 下一主题

关于kernel内,大容量内存申请问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-15 16:13 |只看该作者 |倒序浏览
怎样在driver里申请128M的内存?
1.使用dma_alloc_coherent函数,insmod驱动会出以下错误。
Unknown symbol __you_cannot_kmalloc_that_much
2.在boot option里设定mem,预留自由空间也不行。使用kmalloc申请也失败
mem=physical memory size - 128M

我的环境是vmware里跑linux

那位大侠知道如何解决?感激不尽!

论坛徽章:
0
2 [报告]
发表于 2010-07-15 16:15 |只看该作者
申请还是映射?内核里面能申请这么大空间吗?

论坛徽章:
0
3 [报告]
发表于 2010-07-15 23:11 |只看该作者
在boot option里设定mem,预留自由空间

然后用IOREMAP去访问那段内存.

论坛徽章:
0
4 [报告]
发表于 2010-07-16 00:08 |只看该作者
参考一下Dentry hashtable的分配:
在内核启动过程中初始化,hash表的具体大小:
1,可以通过内核参数传递见/Documentation/kernel-parameters.txt的dhash_entries=  [KNL]项
2,如果不设置默认内核分配(1/16当前ram大小),见:
  1. dentry_hashtable =
  2.               alloc_large_system_hash("Dentry cache",
  3.                                       sizeof(struct hlist_head),
  4.                                     dhash_entries,
  5.                                       13,
  6.                                        0,
  7.                                       &d_hash_shift,
  8.                                       &d_hash_mask,
  9.                                       0);
  10.         for (loop = 0; loop < (1 << d_hash_shift); loop++)
  11.                 INIT_HLIST_HEAD(&dentry_hashtable[loop]);
复制代码
,其中alloc_large_system_hash为内核在初始化阶段(alloc_bootmem_nopanic)分配hash表的典型方法,这个方法中,dhash_entries如果设置则为设置大小(2的pow),否则内核根据scale(第四个参数13,表示没2^13bytes有一个hash bucket),以及最后一个参数(limit,0表示1/16ram,根据scale设置的大小不超过limit的值)。D_hash_shift为返回的创建的hash包含元素的个数,利用最后一个for循环初始化。

论坛徽章:
0
5 [报告]
发表于 2010-07-20 12:38 |只看该作者
在boot option里设定mem,预留自由空间

然后用IOREMAP去访问那段内存.
accessory 发表于 2010-07-15 23:11

不知道物理地址怎么用ioremap得到虚拟地址?

论坛徽章:
0
6 [报告]
发表于 2010-07-22 05:38 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP