diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-07-27 00:08:49 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-07-27 00:08:49 +0200 |
| commit | 12002c540c9de2342d829c5b073c65cfb4549b35 (patch) | |
| tree | f401f5a5d785170bc13312ac04780e421cc465f5 /kernel/kapi/devices/device.cpp | |
| parent | 724e7698dc2795cf96f07ba16a078abd4e93cb46 (diff) | |
| download | kernel-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.cpp | 11 |
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; } |
