Linux 終端設備的註冊與註銷(2)

在寫字符設備驅動,通常都需要註冊設備與註銷設備操作,而終端設備也是字符設備的一種,也需要註冊與註銷,只是實現函數的不同而已

關鍵是學習註冊與註銷的整體框架

1、分配 tty 驅動

    struct tty_driver *alloc_tty_driver(int lines); 
這個函數返回 tty_driver 指針,其參數爲要分配的設備數量,line 會被賦值給
tty_driver 的 num 成員,例如:
xxx_tty_driver = alloc_tty_driver(XXX_TTY_MINORS); 
if (!xxx_tty_driver) //分配失敗

return -ENOMEM;


2、註冊 tty 驅動
     int tty_register_driver(struct tty_driver *driver); 
註冊 tty 驅動成功時返回 0, 參數爲由 alloc_tty_driver ()分配的 tty_driver 結構體指
針,例如:
retval = tty_register_driver(xxx_tty_driver); 
if (retval) //註冊失敗

 printk(KERN_ERR "failed to register tiny tty driver"); 
 put_tty_driver(xxx_tty_driver); 
 return retval; 


3、註銷 tty 驅動
     int tty_unregister_driver(struct tty_driver *driver); 

  這個函數與 tty_register_driver ()對應, tty 驅動最終會調用上述函數註銷 tty_driver。


4、註冊 tty 設備
    void tty_register_device(struct tty_driver *driver, unsigned index, struct device *device);   

僅有 tty_driver 是不夠的,驅動必須依附於設備,tty_register_device()函數用於註冊關聯於 tty_driver 的設備,index 爲設備的索引(範圍是 0~driver->num) ,

   例如:

for (i = 0; i < XXX_TTY_MINORS; ++i) 

tty_register_device(xxx_tty_driver, i, NULL); 

重點:在以Linux2.6的設備驅動模型中,platform 總線將設備與驅動綁定,所以要進行具體設備與驅動的關聯。


5、註銷 tty 設備
   void  tty_unregister_device(struct  tty_driver  *driver,  unsigned  index); 
上述函數與 tty_register_device()對應,用於註銷 tty 設備,其使用方法如下:

for (i = 0; i < XXX_TTY_MINORS; ++i) 

tty_unregister_device(xxx_tty_driver, i); 


參考資料:Linux 設備驅動開發詳解-宋寶華

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章