char dev 創立節點

以下是參考完網路上的一些資訊以及source code之後寫下的紀錄

以char dev的註冊流程來說,註冊編號似乎是第一步驟。

這偏要說明create cdev node in /dev and /sys/class/ 下的方法:

首先要註冊cdev 的編號,kernel提供了三種方法來註冊,register_chrdev_region(), alloc_chrfev_region(), register_chrdev()下面會分別說明這三個函式。


在說明這三個函式之前要先了解一下char_device_struct的struct,定義如下:

 static struct char_device_struct {
       struct char_device_struct *next;    // 指向char_device_struct 中下一個元素的指標


       unsigned int major;                 // Major Number


       unsigned int baseminor;             // Minor Number的起始號碼


       int minorct;                        // 設備編號的範圍大小


       char name[64];                      // 處理該設備編號範圍內的設備驅動的名稱


       struct file_operations *fops;        //


       struct cdev *cdev;                  // 指向cdev driver descriptor的指標
   } *chrdevs[CHRDEV_MAJOR_HASH_SIZE];






留言

熱門文章