aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-07-24 08:37:35 +0200
committerFelix Morgner <felix.morgner@ost.ch>2026-07-24 08:37:35 +0200
commit3891e9588412ce3e6f3790fb5c08a7e7ef6f01af (patch)
treeee931fe29a5b7799905f40ef4976909a4dc3f2ad /kernel
parent28616d1f5cc56d5a91b414af6d9aec51ad996081 (diff)
downloadkernel-3891e9588412ce3e6f3790fb5c08a7e7ef6f01af.tar.xz
kernel-3891e9588412ce3e6f3790fb5c08a7e7ef6f01af.zip
kernel/rd: fix device numbering
Diffstat (limited to 'kernel')
-rw-r--r--kernel/kernel/devices/storage/ram_disk/driver.cpp10
-rw-r--r--kernel/kernel/devices/storage/ram_disk/driver.hpp4
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 <kstd/system_error.hpp>
#include <kstd/units.hpp>
+#include <algorithm>
#include <cstddef>
#include <cstdint>
#include <optional>
@@ -108,7 +109,13 @@ namespace kernel::devices::storage::ram_disk
}
auto implementation = kstd::make_shared<struct block_device>(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<kapi::devices::block_device>(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 <kstd/result.hpp>
#include <kstd/units.hpp>
-#include <cstddef>
#include <cstdint>
#include <optional>
#include <string_view>
@@ -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