关于驱动中分配缓存的问题

wc9872   2009-12-15 15:07 楼主
各位高手,我现在在写一个DMA的驱动,需要在一个接口中建立消息队列,在内存中开辟缓存的时候
请问该怎样实现?我看到有人说过在驱动中要避免使用malloc,因为sysHwInit()时内存未初始化,
会造成系统崩溃。我的函数类似下面这样:
fun1(void *descBuffer,int len)
其中descBuffer是输入发送消息队列的首地址,len是队列的长度。descBuffer到底是用户已分配好
的呢还是需要在函数中开辟呢?请高手帮我解决一下这两个疑问哈

回复评论 (6)

驱动中有自己的内存分配函数。不能使用malloc。
具体可用的函数名忘了,楼主可以去查查书,张帆的驱动开发详解中就有。
点赞  2009-12-16 10:27
LS的,我没有这本书啊,好像是windows下驱动的书,我是在vxworks下开发啊
点赞  2009-12-17 10:53
这个和vxworks没有关系,如果你传的不是引用,那么就别指望用户建好。这是C的常识
点赞  2009-12-17 12:25
Linux内核中可以使用kmalloc或get_free_pages函数进行内存分配
点赞  2010-1-3 20:16
windows kernel 下面用的是ExAllocatePool
点赞  2010-1-5 17:15
顶,我也学学。目前我都是直接在内存空间尾部开了个静态地址
点赞  2010-1-13 12:57
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复