diff options
Diffstat (limited to 'sys/kern/subr_bus.c')
-rw-r--r-- | sys/kern/subr_bus.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/sys/kern/subr_bus.c b/sys/kern/subr_bus.c index b8131fe..7492a4b 100644 --- a/sys/kern/subr_bus.c +++ b/sys/kern/subr_bus.c @@ -1199,6 +1199,25 @@ device_shutdown(device_t dev) return DEVICE_SHUTDOWN(dev); } +int +device_set_unit(device_t dev, int unit) +{ + devclass_t dc; + int err; + + dc = device_get_devclass(dev); + if (unit < dc->maxunit && dc->devices[unit]) + return EBUSY; + err = devclass_delete_device(dc, dev); + if (err) + return err; + dev->unit = unit; + err = devclass_add_device(dc, dev); + if (err) + return err; + return 0; +} + #ifdef DEVICE_SYSCTLS /* |