【linux驅動筆記】字符設備驅動相關數據結構與算法

歡迎轉載,轉載時需保留做者信息,謝謝。web

郵箱:tangzhongp@163.com數組

博客園地址:http://www.cnblogs.com/embedded-tzpspa

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

 

1.1.1.   設備號

alloc_chrdev_region(&dev, 0, 1, "buttons") /  register_chrdev_region: 動態申請設備號, 設備號組成了鏈表節點。指針

clip_image001

最後的結果爲:全部的char dev均可以經過hash表來索引。索引一致,major小的在前,如上1major一致,則minor小的在前。orm

 

1.1.2.   設備

cdev_init(&led_cdev, &led_fops) cdev_add(&led_cdev, dev, 1) :加入到probe指針數組,設備號是索引,按照range由小到大排列鏈表,鏈表裏面保存了不少信息,包括struct cdev,見下圖。blog

 

clip_image002

 

由上述討論可見,經過設備號,能夠索引到設備和驅動程序,在/dev/中添加設備節點後,應用中open設備後就能夠操做該設備了。索引

固然能夠採用自動設備建立:ip

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

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

相關文章
相關標籤/搜索