当前位置:  技术问答>linux和unix

linux驱动里如何分配大于2M的内存空间

    来源: 互联网  发布时间:2016-05-04

    本文导语:  我用RH9做主机linux usb器件驱动,因为是高速,所以必须一次传完,循环收会出错,因此要开辟2.56M的内存空间,而用__get_free_pages(GFP_KERNEL,9)最多只能分配2M内存,当用__get_free_pages(GFP_KERNEL,10)准备分配4M时出错,从而不...

我用RH9做主机linux usb器件驱动,因为是高速,所以必须一次传完,循环收会出错,因此要开辟2.56M的内存空间,而用__get_free_pages(GFP_KERNEL,9)最多只能分配2M内存,当用__get_free_pages(GFP_KERNEL,10)准备分配4M时出错,从而不能分配2M以上内存,不知如何解决,请教高手!谢谢

|
那你看看你内核中MAX_ORDER这个宏定义是多少(include/linux/mmzone.h)!
在2.6.10的kernel中,是这样定义的

#ifndef CONFIG_FORCE_MAX_ZONEORDER
#define MAX_ORDER 11
#else
#define MAX_ORDER CONFIG_FORCE_MAX_ZONEORDER
#endif


看看你的多少,贴出来,你可以试着修改该宏定义大一些,满足你的需要!

Good Luck!

|
可以考虑下vmalloc()函数,不过该函数分配的内存物理上是不连续的,所以不能用来做DMA之类的操作!
具体使用,自己看内核的例子!

另外对于__get_free_pages()能分配的最大的内存,是可以通过重新配置,编译内核来扩大的! 具体配置选项好像是
CONFIG_FORCE_MAX_ZONEORDER!如果内核是你自己可以控制的,建议重编译内核,然后用__get_free_pages()这个函数!

Good Luck!


|
2.4内核,order的最大值是9.
2.6内核,order的最大值是10或11,依赖于平台.

|
要做DMA操作吗? 如果不是的话,可以用vmalloc

|
linux 技术交流群 8709932 欢迎大家的加入

|
up

|
另外,vmalloc你试过没有,也许可以满足你的需求!

|
因此要开辟2.56M的内存空间

=============================

是你自己写驱动,还是移植别人的?一定要那么多page frames吗?

    
 
 

您可能感兴趣的文章:

  • Linux打开大于4G文件有何方法
  • Linux安装在大于8.4G的硬盘上,不能从硬盘启动
  • 如何让linux支持大于64M的内存?
  • 初学者的问题我是linux初学者,我想问一下在windows里下载的大于1.44M文件如何转移到linux分区里?
  • linux 中信号量的使用 当信号初始化的时候设置的值大于1将是如何?
  • 有谁知道什么版本的Linux的内核版本大于2.4.22的吗?
  • 告诉大家一个经验,RedHat Linux 8.0必须装在内存大于64MB的机器上,否则安装会出错的,这是个安装BUG
  • linux shell中 if else以及大于、小于、等于逻辑表达式介绍
  • linux内核分配内存,及管理?
  • 问个LINUX内存分配的问题。
  • linux c 多线程问题任务分配问题
  • Linux 如何获得分配内存的起始地址
  • linux下具体分配组的访问目录
  • 请教Linux内存分配策略与Windows有何异同?
  • Linux下服务器端的线程分配
  • 偶托管了一管台linux主机,想分配一个用户出来自已用,请问该怎么做?
  • 我在linux下用GPRS拨号上网,拨号分配到的IP是10.98.*.*时为何访问不了公网呢?
  • 关于Linux内存分配函数的几点问题
  • 请问如何在linux下设置为动态地址分配
  • 如何重新分配linux分区
  • Linux Kernel module下如何动态分配内存
  • 请教一个Linux内存分配的问题
  • linux服务器被电信重新分配了IP,结果proftp不能启动了。
  • 嵌入式linux的应用程序分配内存地址问题
  • 关于Linux系统对进程号的分配问题
  • linux权限的分配问题
  • linux下c++对长度不定的字符串要进行预先动态分配内存需要怎么做?
  • linux的usb驱动在分配设备节点时是如何做的?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux下free命令显示的内存使用情况分析
  • 哪位前辈给解释下linux下虚拟内存和物理内存的关系!
  • Linux内存文件系统(ramdisk)的三种实现方式
  • linux下内存泄露检测工具 mtrace 如果记录.so文件中的内存信息
  • linux内存文件系统ramfs实现原理
  • 有人熟悉DMA吗?我要实现内存中的内存的“搬动”。(LINUX)
  • linux下进程占用内存空间详解
  • 如何让linux没有到达内存瓶颈时回收内存页并占用最少资源
  • Linux 共享内存介绍及实现代码
  • 请教关于linux内存管理问题,如何给定义的变量指定固定内存段
  • Linux/Centos/Ubuntu清除系统缓存释放内存命令介绍
  • 在Linux上用C语言编写的函数里面申请了一块内存,并且返回这块内存,最终它需要释放吗?
  • linux下进程间通信:共享内存原理及具体用法举例(基于c/c++语言)
  • 大家好,我想问下有人用过"linux进程的内存使用解析"中推荐使用的"Ben Maurer写的perl脚本"查看内存么
  • 在SUSE linux下jar文档的运行,提示内存泄露,指定最大最小内存后只能在十几分钟才能打开,求各位大虾指点!
  • 我的redhat linux7.3因为内存有些少,所以我想随时查看内存的使用情况该如何去做,还有我想关掉(而不是切换)图形界面应该用什么命令
  • 请教!Linux系统C开发的程序,为什么我的程序运行时内存持续增长,程序退出后内存也没有降低?
  • 虚拟机上的Linux怎么修改Linux内存
  • linux9.0下内存占用一直是95%以上怎么解决
  • linux下查看java项目虚拟内存很大,请高手指点下
  • linux可不可以设置虚拟内存
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3