From 3891e9588412ce3e6f3790fb5c08a7e7ef6f01af Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Fri, 24 Jul 2026 08:37:35 +0200 Subject: kernel/rd: fix device numbering --- kernel/kernel/devices/storage/ram_disk/driver.cpp | 10 ++++++++-- kernel/kernel/devices/storage/ram_disk/driver.hpp | 4 ---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/kernel/kernel/devices/storage/ram_disk/driver.cpp b/kernel/kernel/devices/storage/ram_disk/driver.cpp index 50313a7a..4aedf43b 100644 --- a/kernel/kernel/devices/storage/ram_disk/driver.cpp +++ b/kernel/kernel/devices/storage/ram_disk/driver.cpp @@ -15,6 +15,7 @@ #include #include +#include #include #include #include @@ -108,7 +109,13 @@ namespace kernel::devices::storage::ram_disk } auto implementation = kstd::make_shared(module); - auto name = kstd::format("ram{}", m_next_disk_index); + + auto next_index = std::ranges::count_if( + kapi::devices::interface_registry::get().all(kapi::devices::block_device::id), [this](auto const & published) { + auto published_device = published.device(); + return published_device && published_device->bound_driver() == this; + }); + auto name = kstd::format("ram{}", next_index); auto published = kapi::devices::publish_interface(device.shared_from_this(), name, implementation.get()); @@ -118,7 +125,6 @@ namespace kernel::devices::storage::ram_disk } device.set_driver_data(implementation); - ++m_next_disk_index; return kstd::success(); } diff --git a/kernel/kernel/devices/storage/ram_disk/driver.hpp b/kernel/kernel/devices/storage/ram_disk/driver.hpp index c665eb14..e079d832 100644 --- a/kernel/kernel/devices/storage/ram_disk/driver.hpp +++ b/kernel/kernel/devices/storage/ram_disk/driver.hpp @@ -8,7 +8,6 @@ #include #include -#include #include #include #include @@ -29,9 +28,6 @@ namespace kernel::devices::storage::ram_disk protected: auto query_interface(kapi::devices::interface interface) -> void * override; - - private: - std::size_t m_next_disk_index{}; }; } // namespace kernel::devices::storage::ram_disk -- cgit v1.2.3