Changeset c54b898 in mainline for uspace/lib/usbdev/src/driver.c


Ignore:
Timestamp:
2018-01-05T16:30:46Z (7 years ago)
Author:
Petr Manek <petr.manek@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
b60944b
Parents:
11d4c747
git-author:
Petr Manek <petr.manek@…> (2018-01-05 16:21:03)
git-committer:
Petr Manek <petr.manek@…> (2018-01-05 16:30:46)
Message:

usbdev: refactoring

The device_rem driver callback was renamed to device_remove. Also,
a new device_removed callback was introduced. This callback will fire
after all device pipes (endpoints, internally) are unregistered from
the HC device after a call to device_remove. It is semantically
a better opportunity for the USB device driver to free resources and
join all fibrils, since endpoint unregistration will force abort all
active transfers, waking up their issuers.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/usbdev/src/driver.c

    r11d4c747 rc54b898  
    8585        assert(driver);
    8686        assert(driver->ops);
    87         if (driver->ops->device_rem == NULL)
     87        if (driver->ops->device_remove == NULL)
    8888                return ENOTSUP;
     89
    8990        /* Just tell the driver to stop whatever it is doing */
    9091        usb_device_t *usb_dev = ddf_dev_data_get(gen_dev);
    91         const int ret = driver->ops->device_rem(usb_dev);
     92        int ret = driver->ops->device_remove(usb_dev);
    9293        if (ret != EOK)
    9394                return ret;
     95
     96        /* Notify the driver after endpoints were unregistered. */
     97        usb_device_destroy_pipes(usb_dev);
     98        if (driver->ops->device_removed != NULL) {
     99                ret = driver->ops->device_removed(usb_dev);
     100                if (ret != EOK)
     101                        return ret;
     102        }
     103
    94104        usb_device_destroy_ddf(gen_dev);
    95105        return EOK;
Note: See TracChangeset for help on using the changeset viewer.