歡迎轉載,轉載時需保留做者信息,謝謝。web
郵箱:tangzhongp@163.com數組
博客園地址:http://www.cnblogs.com/embedded-tzpspa
Csdn博客地址:http://blog.csdn.net/xiayulewa.net
alloc_chrdev_region(&dev, 0, 1, "buttons") / register_chrdev_region: 動態申請設備號, 設備號組成了鏈表節點。指針
最後的結果爲:全部的char dev均可以經過hash表來索引。索引一致,major小的在前,如上1,major一致,則minor小的在前。orm
cdev_init(&led_cdev, &led_fops) / cdev_add(&led_cdev, dev, 1) :加入到probe指針數組,設備號是索引,按照range由小到大排列鏈表,鏈表裏面保存了不少信息,包括struct cdev,見下圖。blog
由上述討論可見,經過設備號,能夠索引到設備和驅動程序,在/dev/中添加設備節點後,應用中open設備後就能夠操做該設備了。索引
固然能夠採用自動設備建立:ip
cls = class_create(THIS_MODULE, "leds"); //建立/sys/class/leds/ci
device_create(cls, NULL, dev, NULL, "myled"); //建立/sys/class/leds/myled