diff --git a/Kernel/Locking/SpinlockProtectedBase.h b/Kernel/Locking/SpinlockProtectedBase.h index 12bfb1c35c7..f44e0738fa2 100644 --- a/Kernel/Locking/SpinlockProtectedBase.h +++ b/Kernel/Locking/SpinlockProtectedBase.h @@ -18,36 +18,6 @@ class SpinlockProtectedBase { AK_MAKE_NONMOVABLE(SpinlockProtectedBase); friend class WaitQueue; -private: - template - class Locked { - AK_MAKE_NONCOPYABLE(Locked); - AK_MAKE_NONMOVABLE(Locked); - - public: - Locked(U& value, Lock& spinlock) - : m_value(value) - , m_locker(spinlock) - { - } - - ALWAYS_INLINE U const* operator->() const { return &m_value; } - ALWAYS_INLINE U const& operator*() const { return m_value; } - - ALWAYS_INLINE U* operator->() { return &m_value; } - ALWAYS_INLINE U& operator*() { return m_value; } - - ALWAYS_INLINE U const& get() const { return m_value; } - ALWAYS_INLINE U& get() { return m_value; } - - private: - U& m_value; - SpinlockLocker m_locker; - }; - - auto lock_const() const { return Locked(m_value, m_spinlock); } - auto lock_mutable() { return Locked(m_value, m_spinlock); } - public: template SpinlockProtectedBase(Args&&... args) @@ -58,15 +28,15 @@ public: template decltype(auto) with(Callback callback) const { - auto lock = lock_const(); - return callback(*lock); + SpinlockLocker locker(m_spinlock); + return callback(m_value); } template decltype(auto) with(Callback callback) { - auto lock = lock_mutable(); - return callback(*lock); + SpinlockLocker locker(m_spinlock); + return callback(m_value); } template