+ -
当前位置:首页 → 问答吧 → 怎么根据不同的设备分配不同的缓冲区大小

怎么根据不同的设备分配不同的缓冲区大小

时间:2010-11-16

来源:互联网

小菜学习Linux内核驱动,想以scull字符设备驱动为原型实现自己的一个驱动。

这个驱动需要生成几个不同的设备,比如生成5个不同的字符设备,这5个设备都要使用到我编写的驱动。

我想要让这几个不同设备的内存缓冲区大小不一样,比如第一个设备分配的缓冲区大小:1kb    第二个设备: 2kb 。。依次类推

驱动的子设备号是 0,1,2,3,4

我想在open_my_device函数即打开设备驱动的时候,分配这些不同大小的缓冲区,这样子的话我需要怎么操作呢?条件编译?还是怎么弄呢?

麻烦各位,谢谢了

作者: wpclub   发布时间: 2010-11-16

那么你得有一种机制,什么样的设备分配多大内存,然后让驱动可以获取到你的设备名,并根据设备名决定分配多大的内存。

作者: Godbach   发布时间: 2010-11-16

回复 Godbach


额,这个。。。我目前只生成一个内核module,这个module的名称是"dev_demo",并且需要借助这个内核module生成5个设备,这5个设备的唯一区别就是分配的缓冲区大小不一样

设备名?是不是设备节点?我有点菜

生成设备节点的话,需要加载进内核以后才可以通过mknod生成,/dev/demo1  /dev/demo2  ......  后续的操作我不太清楚需要怎么做了,麻烦您指点一下吧?


btw:我还有一种想法就是不在open_my_device时分配内存,直接在初始化struct cdev的时候 根据不同的子设备编号0,1,2,3,4 分配好对应的内存缓冲区大小,这是可以做到的。上面的方法我只是想尝试一下,麻烦您再指点一下。。谢谢了

作者: wpclub   发布时间: 2010-11-16