Linux Kernel设备驱动模型之驱动探测设备

    xiaoxiao2021-03-25  98

    /**  * driver_probe_device - attempt to bind device & driver together  * @drv: driver to bind a device to  * @dev: device to try to bind to the driver  *  * This function returns -ENODEV if the device is not registered,  * 1 if the device is bound successfully and 0 otherwise.  *  * This function must be called with @dev lock held.  When called for a  * USB interface, @dev->parent lock must be held as well.  *  * If the device has a parent, runtime-resume the parent before driver probing.  */ int driver_probe_device(struct device_driver *drv, struct device *dev) {  int ret = 0;

     if (!device_is_registered(dev))   return -ENODEV;

     pr_debug("bus: '%s': %s: matched device %s with driver %s\n",    drv->bus->name, __func__, dev_name(dev), drv->name);

     if (dev->parent)   pm_runtime_get_sync(dev->parent);

     pm_runtime_barrier(dev);  ret = really_probe(dev, drv);  pm_request_idle(dev);

     if (dev->parent)   pm_runtime_put(dev->parent);

     return ret; }

       
    转载请注明原文地址: https://ju.6miu.com/read-15608.html

    最新回复(0)