/** * devm_mdiobus_alloc_size - Resource-managed mdiobus_alloc_size() * @dev: Device to allocate mii_bus for * @sizeof_priv: Space to allocate for private structure * * Managed mdiobus_alloc_size. mii_bus allocated with this function is * automatically freed on driver detach. * * RETURNS: * Pointer to allocated mii_bus on success, NULL on out-of-memory error.
*/ struct mii_bus *devm_mdiobus_alloc_size(struct device *dev, int sizeof_priv)
{ struct mdiobus_devres *dr;
dr = devres_alloc(devm_mdiobus_free, sizeof(*dr), GFP_KERNEL); if (!dr) return NULL;
dr->mii = mdiobus_alloc_size(sizeof_priv); if (!dr->mii) {
devres_free(dr); return NULL;
}
/** * __devm_mdiobus_register - Resource-managed variant of mdiobus_register() * @dev: Device to register mii_bus for * @bus: MII bus structure to register * @owner: Owning module * * Returns 0 on success, negative error number on failure.
*/ int __devm_mdiobus_register(struct device *dev, struct mii_bus *bus, struct module *owner)
{ struct mdiobus_devres *dr; int ret;
if (WARN_ON(!devres_find(dev, devm_mdiobus_free,
mdiobus_devres_match, bus))) return -EINVAL;
dr = devres_alloc(devm_mdiobus_unregister, sizeof(*dr), GFP_KERNEL); if (!dr) return -ENOMEM;
ret = __mdiobus_register(bus, owner); if (ret) {
devres_free(dr); return ret;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.