码迷,mamicode.com
首页 > 编程语言 > 详细

【linux驱动笔记】字符设备驱动相关数据结构与算法

时间:2015-05-16 01:30:00      阅读:389      评论:0      收藏:0      [点我收藏+]

标签:

欢迎转载,转载时需保留作者信息,谢谢。

邮箱:tangzhongp@163.com

博客园地址:http://www.cnblogs.com/embedded-tzp

Csdn博客地址:http://blog.csdn.net/xiayulewa

 

1.1.1.   设备号

alloc_chrdev_region(&dev, 0, 1, "buttons") /  register_chrdev_region: 动态申请设备号, 设备号组成了链表节点。

技术分享

最后的结果为:所有的char dev都可以通过hash表来索引。索引一致,major小的在前,如上1major一致,则minor小的在前。

 

1.1.2.   设备

cdev_init(&led_cdev, &led_fops) cdev_add(&led_cdev, dev, 1) :加入到probe指针数组,设备号是索引,按照range由小到大排列链表,链表里面保存了很多信息,包括struct cdev,见下图。

 

技术分享

 

由上述讨论可见,通过设备号,可以索引到设备和驱动程序,在/dev/中添加设备节点后,应用中open设备后就可以操作该设备了。

当然可以采用自动设备创建:

cls = class_create(THIS_MODULE, "leds");  //创建/sys/class/leds/

device_create(cls, NULL, dev, NULL, "myled"); //创建/sys/class/leds/myled

【linux驱动笔记】字符设备驱动相关数据结构与算法

标签:

原文地址:http://www.cnblogs.com/embedded-tzp/p/4507240.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!