diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-09-09 23:02:20 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-09-09 23:02:20 +0200 |
| commit | b99b79d8080cc1491f96069677d9ce0b7775a4f0 (patch) | |
| tree | 1f7a4534926a79ee6376770c63cccd2aa9e37442 /kernel | |
| parent | 9438d08cc7a7f814d8d1b0cb13f4db176fc53aeb (diff) | |
| download | kernel-b99b79d8080cc1491f96069677d9ce0b7775a4f0.tar.xz kernel-b99b79d8080cc1491f96069677d9ce0b7775a4f0.zip | |
chore: replace some naked pointers
The coding guidelines explicitly prohibit the use of "naked"/C-style
pointers. However, there were some prominent examples in the kapi and
the core kernel source. This changeset replaces them with the
appropriate smart pointer types.
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/kapi/boot_modules/device.cpp | 5 | ||||
| -rw-r--r-- | kernel/kapi/devices/bus.cpp | 6 | ||||
| -rw-r--r-- | kernel/kapi/devices/device.cpp | 10 | ||||
| -rw-r--r-- | kernel/kapi/devices/driver.cpp | 3 | ||||
| -rw-r--r-- | kernel/kapi/devices/driver.tests.cpp | 29 | ||||
| -rw-r--r-- | kernel/kapi/devices/driver_registry.tests.cpp | 12 | ||||
| -rw-r--r-- | kernel/kapi/devices/facet_registry.cpp | 6 | ||||
| -rw-r--r-- | kernel/kapi/devices/facet_registry.tests.cpp | 10 | ||||
| -rw-r--r-- | kernel/kernel/devices/pseudo.cpp | 5 | ||||
| -rw-r--r-- | kernel/kernel/devices/pseudo.hpp | 3 | ||||
| -rw-r--r-- | kernel/kernel/drivers/pseudo/null.cpp | 6 | ||||
| -rw-r--r-- | kernel/kernel/drivers/pseudo/null.hpp | 3 | ||||
| -rw-r--r-- | kernel/kernel/drivers/pseudo/zero.cpp | 6 | ||||
| -rw-r--r-- | kernel/kernel/drivers/pseudo/zero.hpp | 3 | ||||
| -rw-r--r-- | kernel/kernel/drivers/storage/ram_disk.cpp | 10 | ||||
| -rw-r--r-- | kernel/kernel/drivers/storage/ram_disk.hpp | 3 | ||||
| -rw-r--r-- | kernel/kernel/test_support/devices/block_device.cpp | 5 | ||||
| -rw-r--r-- | kernel/kernel/test_support/devices/block_device.hpp | 3 | ||||
| -rw-r--r-- | kernel/kernel/vfs/device_inode.cpp | 4 |
19 files changed, 71 insertions, 61 deletions
diff --git a/kernel/kapi/boot_modules/device.cpp b/kernel/kapi/boot_modules/device.cpp index dac24906..4bfce5f1 100644 --- a/kernel/kapi/boot_modules/device.cpp +++ b/kernel/kapi/boot_modules/device.cpp @@ -5,6 +5,7 @@ #include <kapi/devices.hpp> #include <kstd/format.hpp> +#include <kstd/memory.hpp> #include <cstddef> #include <string_view> @@ -27,11 +28,11 @@ namespace kapi::boot_modules return m_module; } - auto device::query_facet(kapi::capabilities::facet_id facet) -> void * + auto device::query_facet(kapi::capabilities::facet_id facet) -> kstd::observer_ptr<void> { if (facet == boot_module_signature::id) { - return static_cast<boot_module_signature *>(this); + return kstd::make_observer<boot_module_signature>(this); } return kapi::devices::device::query_facet(facet); diff --git a/kernel/kapi/devices/bus.cpp b/kernel/kapi/devices/bus.cpp index 300151d5..d956c3b8 100644 --- a/kernel/kapi/devices/bus.cpp +++ b/kernel/kapi/devices/bus.cpp @@ -84,15 +84,15 @@ namespace kapi::devices return m_devices; } - auto bus::query_facet(kapi::capabilities::facet_id facet) -> void * + auto bus::query_facet(kapi::capabilities::facet_id facet) -> kstd::observer_ptr<void> { if (facet == bus::id) { - return this; + return kstd::observer_ptr(this); } else if (facet == bus_protocol::id) { - return m_protocol; + return kstd::observer_ptr{m_protocol}; } return device::query_facet(facet); diff --git a/kernel/kapi/devices/device.cpp b/kernel/kapi/devices/device.cpp index 2576e20a..3a3b7cc1 100644 --- a/kernel/kapi/devices/device.cpp +++ b/kernel/kapi/devices/device.cpp @@ -23,12 +23,12 @@ namespace kapi::devices : m_name(name) {} - auto device::facet(kapi::capabilities::facet_id facet) noexcept -> void * + auto device::facet(kapi::capabilities::facet_id facet) noexcept -> kstd::observer_ptr<void> { return query_facet(facet); } - auto device::facet(kapi::capabilities::facet_id facet) const noexcept -> void const * + auto device::facet(kapi::capabilities::facet_id facet) const noexcept -> kstd::observer_ptr<void const> { return const_cast<device *>(this)->query_facet(facet); } @@ -61,10 +61,10 @@ namespace kapi::devices m_state = state; } - auto device::bound_driver() const noexcept -> driver * + auto device::bound_driver() const noexcept -> kstd::shared_ptr<driver> { auto guard = kstd::lock_guard{m_lock}; - return m_driver.lock().get(); + return m_driver.lock(); } auto device::bind_driver(kstd::weak_ptr<struct driver> driver) -> void @@ -114,7 +114,7 @@ namespace kapi::devices m_resources = std::move(resources); } - auto device::query_facet(kapi::capabilities::facet_id) -> void * + auto device::query_facet(kapi::capabilities::facet_id) -> kstd::observer_ptr<void> { return nullptr; } diff --git a/kernel/kapi/devices/driver.cpp b/kernel/kapi/devices/driver.cpp index 5ca92dc8..0f103cbc 100644 --- a/kernel/kapi/devices/driver.cpp +++ b/kernel/kapi/devices/driver.cpp @@ -1,6 +1,7 @@ #include <kapi/capabilities/facet_id.hpp> #include <kapi/devices.hpp> +#include <kstd/memory.hpp> #include <kstd/result.hpp> #include <cstdint> @@ -29,7 +30,7 @@ namespace kapi::devices return kstd::success(); } - auto driver::query_facet(kapi::capabilities::facet_id) -> void * + auto driver::query_facet(kapi::capabilities::facet_id) -> kstd::observer_ptr<void> { return nullptr; } diff --git a/kernel/kapi/devices/driver.tests.cpp b/kernel/kapi/devices/driver.tests.cpp index ee3fe577..38d07ed9 100644 --- a/kernel/kapi/devices/driver.tests.cpp +++ b/kernel/kapi/devices/driver.tests.cpp @@ -36,8 +36,8 @@ namespace [[nodiscard]] auto match(kapi::devices::device const & dev, kapi::devices::driver const & drv) const -> kstd::result<std::uint32_t> override { - auto const * signature = dev.facet<controller_signature>(); - auto const * claim = drv.facet<controller_claim>(); + auto const signature = dev.facet<controller_signature>(); + auto const claim = drv.facet<controller_claim>(); if (!signature || !claim || !std::ranges::contains(claim->supported_names(), signature->controller_name())) { return kstd::failure(kapi::devices::driver_match_errc::no_match); @@ -65,11 +65,11 @@ namespace } protected: - auto query_facet(kapi::capabilities::facet_id facet) -> void * override + auto query_facet(kapi::capabilities::facet_id facet) -> kstd::observer_ptr<void> override { if (facet == controller_signature::id) { - return static_cast<controller_signature *>(this); + return kstd::make_observer<controller_signature>(this); } return kapi::devices::bus::query_facet(facet); } @@ -101,11 +101,11 @@ namespace } protected: - auto query_facet(kapi::capabilities::facet_id facet) -> void * override + auto query_facet(kapi::capabilities::facet_id facet) -> kstd::observer_ptr<void> override { if (facet == leaf_signature::id) { - return static_cast<leaf_signature *>(this); + return kstd::make_observer<leaf_signature>(this); } return kapi::devices::device::query_facet(facet); } @@ -123,9 +123,9 @@ namespace [[nodiscard]] auto match(kapi::devices::device const & dev, kapi::devices::driver const & drv) const -> kstd::result<std::uint32_t> override { - auto const * ident = dev.facet<leaf_signature>(); - auto const * claims = drv.facet<leaf_claim>(); - if (!ident || !claims || !std::ranges::contains(claims->supported_names(), ident->leaf_name())) + auto const signature = dev.facet<leaf_signature>(); + auto const claims = drv.facet<leaf_claim>(); + if (!signature || !claims || !std::ranges::contains(claims->supported_names(), signature->leaf_name())) { return kstd::failure(kapi::devices::driver_match_errc::no_match); } @@ -166,11 +166,11 @@ namespace } protected: - auto query_facet(kapi::capabilities::facet_id facet) -> void * override + auto query_facet(kapi::capabilities::facet_id facet) -> kstd::observer_ptr<void> override { if (facet == controller_claim::id) { - return static_cast<controller_claim *>(this); + return kstd::make_observer<controller_claim>(this); } return kapi::devices::driver::query_facet(facet); @@ -198,11 +198,11 @@ namespace } protected: - auto query_facet(kapi::capabilities::facet_id facet) -> void * override + auto query_facet(kapi::capabilities::facet_id facet) -> kstd::observer_ptr<void> override { if (facet == leaf_claim::id) { - return static_cast<leaf_claim *>(this); + return kstd::make_observer<leaf_claim>(this); } return kapi::devices::driver::query_facet(facet); @@ -213,7 +213,8 @@ namespace SCENARIO("a bound controller driver can attach a further, independently-typed bus protocol of its own", "[devices][driver][stacking]") { - GIVEN("a controller bus, a controller driver, and a leaf driver, none aware of each other's identification scheme") + GIVEN( + "a controller bus, a controller driver, and a leaf driver, none aware of each other's signatureification scheme") { auto outer_bus = kstd::make_shared<controller_bus>("stacking_test_controller_bus"); diff --git a/kernel/kapi/devices/driver_registry.tests.cpp b/kernel/kapi/devices/driver_registry.tests.cpp index 02f5065f..7b08799c 100644 --- a/kernel/kapi/devices/driver_registry.tests.cpp +++ b/kernel/kapi/devices/driver_registry.tests.cpp @@ -40,7 +40,7 @@ namespace { ++*match_calls; - auto const * identification = driver.facet<test_claim>(); + auto const identification = driver.facet<test_claim>(); if (!identification) { return kstd::failure(kapi::devices::driver_match_errc::no_match); @@ -107,11 +107,11 @@ namespace mutable unsigned probe_calls; protected: - auto query_facet(kapi::capabilities::facet_id facet) -> void * override + auto query_facet(kapi::capabilities::facet_id facet) -> kstd::observer_ptr<void> override { if (facet == test_claim::id) { - return static_cast<test_claim *>(this); + return kstd::make_observer<test_claim>(this); } return kapi::devices::driver::query_facet(facet); @@ -178,7 +178,7 @@ SCENARIO("Driver registry picks the highest-priority match", "[devices][driver_r { auto dev = kapi::devices::device_registry::get().find("driver_registry_priority_device"); REQUIRE(dev != nullptr); - REQUIRE(dev->bound_driver() == high_priority.get()); + REQUIRE(dev->bound_driver() == high_priority); } } } @@ -203,7 +203,7 @@ SCENARIO("Driver registry breaks ties by registration order", "[devices][driver_ { auto dev = kapi::devices::device_registry::get().find("driver_registry_tie_device"); REQUIRE(dev != nullptr); - REQUIRE(dev->bound_driver() == registered_first.get()); + REQUIRE(dev->bound_driver() == registered_first); } } } @@ -255,7 +255,7 @@ SCENARIO("Driver registry leaves bound driver bound, even if better driver arriv auto dev = kapi::devices::device_registry::get().find("driver_probe_failure_device"); REQUIRE(dev != nullptr); REQUIRE(dev->state() == kapi::devices::state::bound); - REQUIRE(dev->bound_driver() == lower.get()); + REQUIRE(dev->bound_driver() == lower); } } } diff --git a/kernel/kapi/devices/facet_registry.cpp b/kernel/kapi/devices/facet_registry.cpp index 2974c71e..f2f5d03b 100644 --- a/kernel/kapi/devices/facet_registry.cpp +++ b/kernel/kapi/devices/facet_registry.cpp @@ -46,7 +46,7 @@ namespace kapi::devices } auto facet_registry::do_publish(kstd::shared_ptr<device> device, kstd::string name, kapi::capabilities::facet_id id, - void * facet) -> kstd::result<void> + kstd::observer_ptr<void> facet) -> kstd::result<void> { auto published = std::optional<entry>{}; @@ -169,7 +169,7 @@ namespace kapi::devices return filtered; } - auto facet_registry::resolve(kapi::capabilities::facet_id facet, std::string_view name) -> void * + auto facet_registry::resolve(kapi::capabilities::facet_id facet, std::string_view name) -> kstd::observer_ptr<void> { auto found_device = kstd::shared_ptr<device>{}; { @@ -193,7 +193,7 @@ namespace kapi::devices return resolve(facet, *found_device); } - auto facet_registry::resolve(kapi::capabilities::facet_id id, device & device) -> void * + auto facet_registry::resolve(kapi::capabilities::facet_id id, device & device) -> kstd::observer_ptr<void> { if (auto by_device = device.facet(id)) { diff --git a/kernel/kapi/devices/facet_registry.tests.cpp b/kernel/kapi/devices/facet_registry.tests.cpp index 9396fc6c..f6735f01 100644 --- a/kernel/kapi/devices/facet_registry.tests.cpp +++ b/kernel/kapi/devices/facet_registry.tests.cpp @@ -50,15 +50,15 @@ namespace return m_value; } - auto query_facet(kapi::capabilities::facet_id facet) -> void * override + auto query_facet(kapi::capabilities::facet_id facet) -> kstd::observer_ptr<void> override { if (facet == probe_device::id) { - return static_cast<probe_device *>(this); + return kstd::make_observer<probe_device>(this); } if (facet == const_device::id) { - return m_const_device; + return kstd::observer_ptr{m_const_device}; } return kapi::devices::device::query_facet(facet); @@ -143,7 +143,7 @@ SCENARIO("Publishing and finding a device", "[kapi][devices][facet_registry]") THEN("publishing a free standing second facet for the same device succeeds") { - REQUIRE(registry.publish(device, "probe0", &free_standing_facet)); + REQUIRE(registry.publish(device, "probe0", kstd::make_observer(&free_standing_facet))); } AND_WHEN("getting all devices implementing that facet") @@ -239,7 +239,7 @@ SCENARIO("Publishing and finding a device", "[kapi][devices][facet_registry]") THEN("publishing the facet for the device fails") { - REQUIRE_FALSE(registry.publish(device, "probe0", &facet)); + REQUIRE_FALSE(registry.publish(device, "probe0", kstd::make_observer(&facet))); } } } diff --git a/kernel/kernel/devices/pseudo.cpp b/kernel/kernel/devices/pseudo.cpp index 13a8be3d..f5ee13c3 100644 --- a/kernel/kernel/devices/pseudo.cpp +++ b/kernel/kernel/devices/pseudo.cpp @@ -5,6 +5,7 @@ #include <kapi/capabilities/facet_id.hpp> #include <kapi/devices.hpp> +#include <kstd/memory.hpp> #include <kstd/string.hpp> #include <utility> @@ -16,11 +17,11 @@ namespace kernel::devices : kapi::devices::device{std::move(name)} {} - auto pseudo::query_facet(kapi::capabilities::facet_id facet) -> void * + auto pseudo::query_facet(kapi::capabilities::facet_id facet) -> kstd::observer_ptr<void> { if (facet == kernel::bus::pseudo_signature::id) { - return &m_signature; + return kstd::make_observer(&m_signature); } return device::query_facet(facet); diff --git a/kernel/kernel/devices/pseudo.hpp b/kernel/kernel/devices/pseudo.hpp index efd504d5..eabe59b0 100644 --- a/kernel/kernel/devices/pseudo.hpp +++ b/kernel/kernel/devices/pseudo.hpp @@ -6,6 +6,7 @@ #include <kapi/capabilities/facet_id.hpp> #include <kapi/devices.hpp> +#include <kstd/memory.hpp> #include <kstd/string.hpp> #include <string_view> @@ -33,7 +34,7 @@ namespace kernel::devices explicit pseudo(kstd::string name); protected: - auto query_facet(kapi::capabilities::facet_id facet) -> void * override; + auto query_facet(kapi::capabilities::facet_id facet) -> kstd::observer_ptr<void> override; private: pseudo_signature m_signature{*this}; diff --git a/kernel/kernel/drivers/pseudo/null.cpp b/kernel/kernel/drivers/pseudo/null.cpp index 4c8bde12..9d8330b1 100644 --- a/kernel/kernel/drivers/pseudo/null.cpp +++ b/kernel/kernel/drivers/pseudo/null.cpp @@ -76,7 +76,7 @@ namespace kernel::drivers::pseudo auto implementation = kstd::make_shared<null_node>(); auto published = kapi::devices::publish_facet<kapi::filesystem::character_special_file>( - device.shared_from_this(), "null", implementation.get()); + device.shared_from_this(), "null", kstd::make_observer(implementation.get())); if (!published) { @@ -117,11 +117,11 @@ namespace kernel::drivers::pseudo return names; } - auto null::query_facet(kapi::capabilities::facet_id facet) -> void * + auto null::query_facet(kapi::capabilities::facet_id facet) -> kstd::observer_ptr<void> { if (facet == kernel::bus::pseudo_claim::id) { - return static_cast<kernel::bus::pseudo_claim *>(this); + return kstd::make_observer<kernel::bus::pseudo_claim>(this); } return kapi::devices::driver::query_facet(facet); diff --git a/kernel/kernel/drivers/pseudo/null.hpp b/kernel/kernel/drivers/pseudo/null.hpp index 6a736c33..ab8affeb 100644 --- a/kernel/kernel/drivers/pseudo/null.hpp +++ b/kernel/kernel/drivers/pseudo/null.hpp @@ -6,6 +6,7 @@ #include <kapi/devices.hpp> #include <kapi/filesystem.hpp> +#include <kstd/memory.hpp> #include <kstd/result.hpp> #include <cstdint> @@ -36,7 +37,7 @@ namespace kernel::drivers::pseudo [[nodiscard]] auto supported_names() const noexcept -> std::span<std::string_view const> override; protected: - auto query_facet(kapi::capabilities::facet_id facet) -> void * override; + auto query_facet(kapi::capabilities::facet_id facet) -> kstd::observer_ptr<void> override; }; } // namespace kernel::drivers::pseudo diff --git a/kernel/kernel/drivers/pseudo/zero.cpp b/kernel/kernel/drivers/pseudo/zero.cpp index 67ec2519..fda28d35 100644 --- a/kernel/kernel/drivers/pseudo/zero.cpp +++ b/kernel/kernel/drivers/pseudo/zero.cpp @@ -77,7 +77,7 @@ namespace kernel::drivers::pseudo auto implementation = kstd::make_shared<zero_node>(); auto published = kapi::devices::publish_facet<kapi::filesystem::character_special_file>( - device.shared_from_this(), "zero", implementation.get()); + device.shared_from_this(), "zero", kstd::make_observer(implementation.get())); if (!published) { @@ -118,11 +118,11 @@ namespace kernel::drivers::pseudo return names; } - auto zero::query_facet(kapi::capabilities::facet_id facet) -> void * + auto zero::query_facet(kapi::capabilities::facet_id facet) -> kstd::observer_ptr<void> { if (facet == kernel::bus::pseudo_claim::id) { - return static_cast<kernel::bus::pseudo_claim *>(this); + return kstd::make_observer<kernel::bus::pseudo_claim>(this); } return kapi::devices::driver::query_facet(facet); diff --git a/kernel/kernel/drivers/pseudo/zero.hpp b/kernel/kernel/drivers/pseudo/zero.hpp index 7f26cc41..b5573e58 100644 --- a/kernel/kernel/drivers/pseudo/zero.hpp +++ b/kernel/kernel/drivers/pseudo/zero.hpp @@ -6,6 +6,7 @@ #include <kapi/devices.hpp> #include <kapi/filesystem.hpp> +#include <kstd/memory.hpp> #include <kstd/result.hpp> #include <cstdint> @@ -31,7 +32,7 @@ namespace kernel::drivers::pseudo [[nodiscard]] auto supported_names() const noexcept -> std::span<std::string_view const> override; protected: - auto query_facet(kapi::capabilities::facet_id facet) -> void * override; + auto query_facet(kapi::capabilities::facet_id facet) -> kstd::observer_ptr<void> override; }; } // namespace kernel::drivers::pseudo diff --git a/kernel/kernel/drivers/storage/ram_disk.cpp b/kernel/kernel/drivers/storage/ram_disk.cpp index 80f7eedc..d33b7312 100644 --- a/kernel/kernel/drivers/storage/ram_disk.cpp +++ b/kernel/kernel/drivers/storage/ram_disk.cpp @@ -118,12 +118,12 @@ namespace kernel::drivers::storage std::ranges::count_if(kapi::devices::facet_registry::get().all(kapi::filesystem::block_special_file::id), [this](auto const & published) { auto published_device = published.device(); - return published_device && published_device->bound_driver() == this; + return published_device && published_device->bound_driver().get() == this; }); auto name = kstd::format("ram{}", next_index); - auto published = kapi::devices::publish_facet<kapi::filesystem::block_special_file>(device.shared_from_this(), name, - implementation.get()); + auto published = kapi::devices::publish_facet<kapi::filesystem::block_special_file>( + device.shared_from_this(), name, kstd::make_observer(implementation.get())); if (!published) { return published; @@ -155,11 +155,11 @@ namespace kernel::drivers::storage return "Generic RAM Disk"; } - auto ram_disk::query_facet(kapi::capabilities::facet_id facet) -> void * + auto ram_disk::query_facet(kapi::capabilities::facet_id facet) -> kstd::observer_ptr<void> { if (facet == kapi::boot_modules::boot_module_claim::id) { - return static_cast<kapi::boot_modules::boot_module_claim *>(this); + return kstd::make_observer<kapi::boot_modules::boot_module_claim>(this); } return kapi::devices::driver::query_facet(facet); diff --git a/kernel/kernel/drivers/storage/ram_disk.hpp b/kernel/kernel/drivers/storage/ram_disk.hpp index a526435b..1f7d5774 100644 --- a/kernel/kernel/drivers/storage/ram_disk.hpp +++ b/kernel/kernel/drivers/storage/ram_disk.hpp @@ -5,6 +5,7 @@ #include <kapi/capabilities/facet_id.hpp> #include <kapi/devices.hpp> +#include <kstd/memory.hpp> #include <kstd/result.hpp> #include <cstdint> @@ -28,7 +29,7 @@ namespace kernel::drivers::storage [[nodiscard]] auto name() const noexcept -> std::string_view override; protected: - auto query_facet(kapi::capabilities::facet_id facet) -> void * override; + auto query_facet(kapi::capabilities::facet_id facet) -> kstd::observer_ptr<void> override; }; } // namespace kernel::drivers::storage diff --git a/kernel/kernel/test_support/devices/block_device.cpp b/kernel/kernel/test_support/devices/block_device.cpp index 462dc79d..fa834122 100644 --- a/kernel/kernel/test_support/devices/block_device.cpp +++ b/kernel/kernel/test_support/devices/block_device.cpp @@ -3,6 +3,7 @@ #include <kapi/devices.hpp> #include <kapi/filesystem.hpp> +#include <kstd/memory.hpp> #include <kstd/result.hpp> #include <kstd/string.hpp> #include <kstd/units.hpp> @@ -68,11 +69,11 @@ namespace kernel::tests::devices return kstd::bytes{data.size()}; } - auto block_device::query_facet(kapi::capabilities::facet_id facet) -> void * + auto block_device::query_facet(kapi::capabilities::facet_id facet) -> kstd::observer_ptr<void> { if (facet == kapi::filesystem::block_special_file::id) { - return static_cast<kapi::filesystem::block_special_file *>(this); + return kstd::make_observer<kapi::filesystem::block_special_file>(this); } return kapi::devices::device::query_facet(facet); diff --git a/kernel/kernel/test_support/devices/block_device.hpp b/kernel/kernel/test_support/devices/block_device.hpp index 9e64ed18..94c9a58d 100644 --- a/kernel/kernel/test_support/devices/block_device.hpp +++ b/kernel/kernel/test_support/devices/block_device.hpp @@ -4,6 +4,7 @@ #include <kapi/devices.hpp> #include <kapi/filesystem.hpp> +#include <kstd/memory.hpp> #include <kstd/result.hpp> #include <kstd/string.hpp> #include <kstd/units.hpp> @@ -29,7 +30,7 @@ namespace kernel::tests::devices kstd::vector<std::uint8_t> data{}; private: - [[nodiscard]] auto query_facet(kapi::capabilities::facet_id facet) -> void * override; + [[nodiscard]] auto query_facet(kapi::capabilities::facet_id facet) -> kstd::observer_ptr<void> override; kstd::bytes m_block_size{}; }; diff --git a/kernel/kernel/vfs/device_inode.cpp b/kernel/kernel/vfs/device_inode.cpp index e9c70f15..75ed03d6 100644 --- a/kernel/kernel/vfs/device_inode.cpp +++ b/kernel/kernel/vfs/device_inode.cpp @@ -89,12 +89,12 @@ namespace kernel::vfs auto device_inode::is_block_device() const -> bool { - return kapi::devices::facet_registry::get().resolve<kapi::filesystem::block_special_file>(*m_device); + return !!kapi::devices::facet_registry::get().resolve<kapi::filesystem::block_special_file>(*m_device); } auto device_inode::is_character_device() const -> bool { - return kapi::devices::facet_registry::get().resolve<kapi::filesystem::character_special_file>(*m_device); + return !!kapi::devices::facet_registry::get().resolve<kapi::filesystem::character_special_file>(*m_device); } auto device_inode::status() const -> kstd::result<kapi::filesystem::file_status> |
