Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3404837
  • 博文数量: 754
  • 博客积分: 10132
  • 博客等级: 上将
  • 技术积分: 7780
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-14 23:36
文章分类

全部博文(754)

文章存档

2012年(3)

2011年(39)

2010年(66)

2009年(167)

2008年(479)

我的朋友

分类: LINUX

2009-04-16 18:36:14

init  bus_register(struct bus_type *bus) ;
int bus_add_driver(struct device_driver * drv)
{
 struct bus_type * bus = get_bus(drv->bus);
 int error = 0;
 if (bus) {
  pr_debug("bus %s: add driver %s\n", bus->name, drv->name);
  error = kobject_set_name(&drv->kobj, "%s", drv->name);
  if (error) {
   put_bus(bus);
   return error;
  }
  drv->kobj.kset = &bus->drivers;
  if ((error = kobject_register(&drv->kobj))) {
   put_bus(bus);
   return error;
  }
  driver_attach(drv);
  /*把驱动加入链表klist_drivers ?*/
  klist_add_tail(&drv->knode_bus, &bus->klist_drivers);
  module_add_driver(drv->owner, drv);
  driver_add_attrs(bus, drv);
  driver_create_file(drv, &driver_attr_unbind);
  driver_create_file(drv, &driver_attr_bind);
 }
 return error;
}
阅读(1945) | 评论(0) | 转发(0) |
0

上一篇:struct class

下一篇:usb事件流程

给主人留下些什么吧!~~