driver_register

driver_register 注册设备驱动程序

下面代码是2.6.21内核的driver_register().

/* The one interesting aspect is that we setup @drv->unloaded
-
* as a completion that gets complete when the driver reference
-
* count reaches 0.
-
*/

driver_register() -- 注册设备驱动程序,搜寻驱动drv对应的设备,并与之关联

int driver_register(struct device_driver * drv)
{
    if ((drv->bus->probe && drv->probe) ||
        (drv->bus->remove && drv->remove) ||
        (drv->bus->shutdown && drv->shutdown)) {
        printk(KERN_WARNING "Driver '%s' needs updating - please use bus_type methods/n", drv->name);
    }
    klist_init(&drv->klist_devices, NULL, NULL);
    init_completion(&drv->unloaded);
    return bus_add_driver(drv);
}


注册设备驱动程序
---------------------------------------------------
    在设备文件上发出的每个系统调用都由内核转化为相应设备驱动程序的对应函数的调用。为了完成这个操作,设备驱动程序必须注册自己。换句话说,注册一个设备驱动程序以为着把它对应的设备文件连接起来。如果设备文件对应的驱动程序以前没有注册,则对该设备文件的访问返回错误码 -ENODEV
    如果设备驱动程序被静态地编译进内核,则它的注册在内核初始化阶段进行。相反,如果驱动程序作为一个内核模块来编译,则它的注册在模块装入时进行。   
    一旦设备驱动程序被注册了,它就和设备文件的主设备号连接在一起,而不是和设备文件的路径连接在一起。这样,对设备文件的任何访问都会激活相应的设备驱动程序,而不用管所这用的路径名

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值