*参照元 [#l576f6f5]
#backlinks

*説明 [#gc3b4075]
-パス: [[linux-4.4.1/drivers/base/driver.c]]

-FIXME: これは何?
--説明


**引数 [#v5d0eb4f]
-struct device_driver *drv
--
--[[linux-4.4.1/device_driver]]


**返り値 [#k2a2d19c]
-int
--


**参考 [#a6eba294]


*実装 [#i91e6833]
 /**
  * driver_register - register driver with bus
  * @drv: driver to register
  *
  * We pass off most of the work to the bus_add_driver() call,
  * since most of the things we have to do deal with the bus
  * structures.
  */
 int driver_register(struct device_driver *drv)
 {
         int ret;
         struct device_driver *other;
 
         BUG_ON(!drv->bus->p);
 
-
--[[linux-4.4.1/BUG_ON()]]

         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);
 
-
-drv->bus は struct bus_type * 型
--[[linux-4.4.1/bus_type]]
--[[linux-4.4.1/printk()]]

         other = driver_find(drv->name, drv->bus);
         if (other) {
                 printk(KERN_ERR "Error: Driver '%s' is already registered, "
                         "aborting...\n", drv->name);
                 return -EBUSY;
         }
 
-
--[[linux-4.4.1/driver_find()]]

         ret = bus_add_driver(drv);
         if (ret)
                 return ret;
-
--[[linux-4.4.1/bus_add_driver()]]

         ret = driver_add_groups(drv, drv->groups);
         if (ret) {
                 bus_remove_driver(drv);
                 return ret;
         }
         kobject_uevent(&drv->p->kobj, KOBJ_ADD);
 
-
--[[linux-4.4.1/driver_add_groups()]]
--[[linux-4.4.1/bus_remove_driver()]]
--[[linux-4.4.1/kobject_uevent()]]

         return ret;
 }
 EXPORT_SYMBOL_GPL(driver_register);
-
--[[linux-4.4.1/EXPORT_SYMBOL_GPL()]]


*コメント [#l417199d]


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS