Panic when a device is trying to recursively acquire rather than hang
indefinitely. Improve error messages from other panics.
This commit is contained in:
parent
bb70a40318
commit
94c7edbe12
@ -564,6 +564,10 @@ gpiobus_acquire_bus(device_t busdev, device_t child, int how)
|
||||
GPIOBUS_ASSERT_UNLOCKED(sc);
|
||||
GPIOBUS_LOCK(sc);
|
||||
if (sc->sc_owner != NULL) {
|
||||
if (sc->sc_owner == child)
|
||||
panic("%s: %s still owns the bus.",
|
||||
device_get_nameunit(busdev),
|
||||
device_get_nameunit(child));
|
||||
if (how == GPIOBUS_DONTWAIT) {
|
||||
GPIOBUS_UNLOCK(sc);
|
||||
return (EWOULDBLOCK);
|
||||
@ -586,9 +590,14 @@ gpiobus_release_bus(device_t busdev, device_t child)
|
||||
GPIOBUS_ASSERT_UNLOCKED(sc);
|
||||
GPIOBUS_LOCK(sc);
|
||||
if (sc->sc_owner == NULL)
|
||||
panic("gpiobus: releasing unowned bus.");
|
||||
panic("%s: %s releasing unowned bus.",
|
||||
device_get_nameunit(busdev),
|
||||
device_get_nameunit(child));
|
||||
if (sc->sc_owner != child)
|
||||
panic("gpiobus: you don't own the bus. game over.");
|
||||
panic("%s: %s trying to release bus owned by %s",
|
||||
device_get_nameunit(busdev),
|
||||
device_get_nameunit(child),
|
||||
device_get_nameunit(sc->sc_owner));
|
||||
sc->sc_owner = NULL;
|
||||
wakeup(sc);
|
||||
GPIOBUS_UNLOCK(sc);
|
||||
|
Loading…
Reference in New Issue
Block a user