diff options
| -rw-r--r-- | kapi/kapi/devices/device.hpp | 1 | ||||
| -rw-r--r-- | kernel/kapi/devices/driver_registry.cpp | 6 |
2 files changed, 6 insertions, 1 deletions
diff --git a/kapi/kapi/devices/device.hpp b/kapi/kapi/devices/device.hpp index c8b32b8b..3f8a52d7 100644 --- a/kapi/kapi/devices/device.hpp +++ b/kapi/kapi/devices/device.hpp @@ -19,6 +19,7 @@ namespace kapi::devices { uninitialized, present, + probing, bound, failed, removed, diff --git a/kernel/kapi/devices/driver_registry.cpp b/kernel/kapi/devices/driver_registry.cpp index 5784694a..2ba9a485 100644 --- a/kernel/kapi/devices/driver_registry.cpp +++ b/kernel/kapi/devices/driver_registry.cpp @@ -105,15 +105,19 @@ namespace kapi::devices for (auto const & candidate : candidates) { + device->bind_driver(candidate.driver_handle); + device->set_state(state::probing); + auto probed = candidate.driver_handle->probe(*device); if (probed) { - device->bind_driver(candidate.driver_handle); device->set_state(state::bound); kstd::println("[OS:DRV] Bound device {} (priority {})", device->name(), candidate.priority); return; } + device->bind_driver(kstd::weak_ptr<driver>{}); + kstd::println(kstd::print_sink::stderr, "[OS:DRV] probe() failed for device {} (priority {}): {}", device->name(), candidate.priority, probed.error().message()); } |
