aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/kernel/filesystem/device_inode.tests.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/kernel/kernel/filesystem/device_inode.tests.cpp b/kernel/kernel/filesystem/device_inode.tests.cpp
index 09979030..aa97f8ca 100644
--- a/kernel/kernel/filesystem/device_inode.tests.cpp
+++ b/kernel/kernel/filesystem/device_inode.tests.cpp
@@ -21,6 +21,7 @@
#include <cstddef>
#include <cstdint>
+#include <optional>
#include <utility>
using namespace kstd::units_literals;
@@ -35,6 +36,21 @@ namespace
}
};
+ struct test_driver final : kapi::devices::driver
+ {
+ [[nodiscard]] auto probe(kapi::devices::device &) -> kstd::result<void> override
+ {
+ return kstd::success();
+ }
+
+ auto unbind(kapi::devices::device &) -> void override {}
+
+ [[nodiscard]] auto claimed_major() const -> std::optional<std::uint8_t> override
+ {
+ return std::uint8_t{1};
+ }
+ };
+
struct mock_origin_inode : kernel::filesystem::inode
{
auto read(void *, kstd::units::bytes, kstd::units::bytes) const -> kstd::result<kstd::units::bytes> override
@@ -168,6 +184,10 @@ SCENARIO("Device inode raw_device()", "[filesystem][device-inode]")
GIVEN("A block device that has been published and numbered")
{
auto device = kstd::make_shared<kernel::tests::devices::block_device>("ram0", 512_B);
+ auto driver = kstd::make_shared<test_driver>();
+ device->bind_driver(driver);
+ device->set_state(kapi::devices::state::bound);
+
REQUIRE(kapi::devices::interface_registry::get().publish<kapi::devices::block_device>(device, "ram0"));
auto inode = kernel::filesystem::device_inode{device};