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/kapi/devices | |
| 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/kapi/devices')
| -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 |
7 files changed, 39 insertions, 37 deletions
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))); } } } |
