mdev -s的用法,为什么有些结点不会自动创建

guan323333 2010-08-03 01:44:59
RT,小弟菜鸟一只,翻了下我网上的资料也没找出个所以然来,所以来问下大虾们,为什么在 insmod一些驱动后,用mdev -s 会自动创建dev下的结点,而有些驱动insmod后mdev -s 就不能自动创建结点呢? 这问题出在哪,mdev -s 到底是什么用呢?谢谢指教

...全文
560 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
李万鹏 2011-06-26
  • 打赏
  • 举报
回复
赞一个
guan323333 2010-08-03
  • 打赏
  • 举报
回复
谢谢LS哈 学习下先
deep_pro 2010-08-03
  • 打赏
  • 举报
回复
提到注册驱动时使用class_create 和 device_create的,目前只有ELDD 这本书,
http://blog.csdn.net/nhczp/archive/2009/10/08/4643845.aspx
其中的代码清单5-1 是一个不错的字符驱动初始化实例
Linux-Torvalds 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 guan323333 的回复:]

MS 有点懂了,再找点资料看看 或者你有什么资料推荐我看下哈
[/Quote]
《Linux设备驱动程序》3rd Editon
Linux-Torvalds 2010-08-03
  • 打赏
  • 举报
回复
更加倾向于动态分配:
int alloc_chrdev_region(dev_t *dev, unsigned int firstminor, unsigned int count, char *name);
guan323333 2010-08-03
  • 打赏
  • 举报
回复
MS 有点懂了,再找点资料看看 或者你有什么资料推荐我看下哈
deep_pro 2010-08-03
  • 打赏
  • 举报
回复
register_chrdev确实是比较老的写法了
2.6推荐的写法是register_chrdev_region cdev_add
只不过为了照顾以前的驱动,2.6中的register_chrdev 被改写成cdev_add方式了


使用udev的关键是class_create 和 device_create,有这些步骤的才能在/sys 生成自己的设备树,就是"新式驱动"
guan323333 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 deep_pro 的回复:]
mdev 基于/sys 文件系统,是udev的简化版
老式的驱动,比如 仅仅使用 register_chrdev 这样方式注册的,自然不能靠udev来生成设备节点

http://www.embedu.org/Column/Column120.htm
[/Quote]
恩,那问题是什么是老式的驱动呢?不是都是用 register_chrdev 注册的吗? 或者像你给的那个网页里指出的用dev_t devno = MKDEV (hello_major, hello_minor);注册?
deep_pro 2010-08-03
  • 打赏
  • 举报
回复
mdev 基于/sys 文件系统,是udev的简化版
老式的驱动,比如 仅仅使用 register_chrdev 这样方式注册的,自然不能靠udev来生成设备节点

http://www.embedu.org/Column/Column120.htm

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧