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 设备驱动开发详解-宋宝华

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值