aboutsummaryrefslogtreecommitdiff
path: root/kernel/kapi/devices/device.cpp
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-07-27 00:08:49 +0200
committerFelix Morgner <felix.morgner@ost.ch>2026-07-27 00:08:49 +0200
commit12002c540c9de2342d829c5b073c65cfb4549b35 (patch)
treef401f5a5d785170bc13312ac04780e421cc465f5 /kernel/kapi/devices/device.cpp
parent724e7698dc2795cf96f07ba16a078abd4e93cb46 (diff)
downloadkernel-12002c540c9de2342d829c5b073c65cfb4549b35.tar.xz
kernel-12002c540c9de2342d829c5b073c65cfb4549b35.zip
kapi: fix driver registry locking
Diffstat (limited to 'kernel/kapi/devices/device.cpp')
-rw-r--r--kernel/kapi/devices/device.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/kernel/kapi/devices/device.cpp b/kernel/kapi/devices/device.cpp
index 2628e4f4..9c2d8d40 100644
--- a/kernel/kapi/devices/device.cpp
+++ b/kernel/kapi/devices/device.cpp
@@ -4,6 +4,7 @@
#include <kapi/devices/bus.hpp>
#include <kstd/memory.hpp>
+#include <kstd/mutex.hpp>
#include <kstd/string.hpp>
namespace kapi::devices
@@ -34,36 +35,43 @@ namespace kapi::devices
auto device::parent() const -> kstd::shared_ptr<bus>
{
+ auto guard = kstd::lock_guard{m_lock};
return m_parent.lock();
}
auto device::state() const noexcept -> enum state
{
+ auto guard = kstd::lock_guard{m_lock};
return m_state;
}
auto device::set_state(enum state state) -> void
{
+ auto guard = kstd::lock_guard{m_lock};
m_state = state;
}
auto device::bound_driver() const noexcept -> driver *
{
+ auto guard = kstd::lock_guard{m_lock};
return m_driver.lock().get();
}
auto device::bind_driver(kstd::weak_ptr<struct driver> driver) -> void
{
+ auto guard = kstd::lock_guard{m_lock};
m_driver = driver;
}
- auto device::driver_data() const -> kstd::shared_ptr<void> const &
+ auto device::driver_data() const -> kstd::shared_ptr<void>
{
+ auto guard = kstd::lock_guard{m_lock};
return m_driver_data;
}
auto device::set_driver_data(kstd::shared_ptr<void> data) -> void
{
+ auto guard = kstd::lock_guard{m_lock};
m_driver_data = data;
}
@@ -74,6 +82,7 @@ namespace kapi::devices
auto device::set_parent(kstd::weak_ptr<bus> parent) -> void
{
+ auto guard = kstd::lock_guard{m_lock};
m_parent = parent;
}