* @internal * @brief Delete a device from a devclass * * The device is removed from the devclass's device list and its unit * number is freed. * @param dc the devclass to delete from * @param dev the device to delete * * @retval 0 success */
| 1735 | * @retval 0 success |
| 1736 | */ |
| 1737 | static int |
| 1738 | devclass_delete_device(devclass_t dc, device_t dev) |
| 1739 | { |
| 1740 | if (!dc || !dev) |
| 1741 | return (0); |
| 1742 | |
| 1743 | PDEBUG(("%s in devclass %s", DEVICENAME(dev), DEVCLANAME(dc))); |
| 1744 | |
| 1745 | if (dev->devclass != dc || dc->devices[dev->unit] != dev) |
| 1746 | panic("devclass_delete_device: inconsistent device class"); |
| 1747 | dc->devices[dev->unit] = NULL; |
| 1748 | if (dev->flags & DF_WILDCARD) |
| 1749 | dev->unit = -1; |
| 1750 | dev->devclass = NULL; |
| 1751 | free(dev->nameunit, M_BUS); |
| 1752 | dev->nameunit = NULL; |
| 1753 | |
| 1754 | return (0); |
| 1755 | } |
| 1756 | |
| 1757 | /** |
| 1758 | * @internal |
no test coverage detected