Просмотр исходного кода

Kernel: Move Lockable into its own header

Jean-Baptiste Boric 4 лет назад
Родитель
Сommit
aea98a85d1

+ 1 - 0
Kernel/FileSystem/FIFO.cpp

@@ -9,6 +9,7 @@
 #include <AK/StdLibExtras.h>
 #include <AK/StdLibExtras.h>
 #include <Kernel/FileSystem/FIFO.h>
 #include <Kernel/FileSystem/FIFO.h>
 #include <Kernel/FileSystem/FileDescription.h>
 #include <Kernel/FileSystem/FileDescription.h>
+#include <Kernel/Locking/Lockable.h>
 #include <Kernel/Locking/Mutex.h>
 #include <Kernel/Locking/Mutex.h>
 #include <Kernel/Process.h>
 #include <Kernel/Process.h>
 #include <Kernel/Thread.h>
 #include <Kernel/Thread.h>

+ 35 - 0
Kernel/Locking/Lockable.h

@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#include <Kernel/Locking/Mutex.h>
+
+namespace Kernel {
+
+template<typename T>
+class Lockable {
+public:
+    Lockable() = default;
+    Lockable(T&& resource)
+        : m_resource(move(resource))
+    {
+    }
+    [[nodiscard]] Mutex& lock() { return m_lock; }
+    [[nodiscard]] T& resource() { return m_resource; }
+
+    [[nodiscard]] T lock_and_copy()
+    {
+        MutexLocker locker(m_lock);
+        return m_resource;
+    }
+
+private:
+    T m_resource;
+    Mutex m_lock;
+};
+
+}

+ 0 - 22
Kernel/Locking/Mutex.h

@@ -182,28 +182,6 @@ private:
     bool m_locked { true };
     bool m_locked { true };
 };
 };
 
 
-template<typename T>
-class Lockable {
-public:
-    Lockable() = default;
-    Lockable(T&& resource)
-        : m_resource(move(resource))
-    {
-    }
-    [[nodiscard]] Mutex& lock() { return m_lock; }
-    [[nodiscard]] T& resource() { return m_resource; }
-
-    [[nodiscard]] T lock_and_copy()
-    {
-        MutexLocker locker(m_lock);
-        return m_resource;
-    }
-
-private:
-    T m_resource;
-    Mutex m_lock;
-};
-
 class ScopedLockRelease {
 class ScopedLockRelease {
     AK_MAKE_NONCOPYABLE(ScopedLockRelease);
     AK_MAKE_NONCOPYABLE(ScopedLockRelease);
 
 

+ 1 - 1
Kernel/Net/IPv4Socket.h

@@ -10,7 +10,7 @@
 #include <AK/SinglyLinkedListWithCount.h>
 #include <AK/SinglyLinkedListWithCount.h>
 #include <Kernel/DoubleBuffer.h>
 #include <Kernel/DoubleBuffer.h>
 #include <Kernel/KBuffer.h>
 #include <Kernel/KBuffer.h>
-#include <Kernel/Locking/Mutex.h>
+#include <Kernel/Locking/Lockable.h>
 #include <Kernel/Net/IPv4.h>
 #include <Kernel/Net/IPv4.h>
 #include <Kernel/Net/IPv4SocketTuple.h>
 #include <Kernel/Net/IPv4SocketTuple.h>
 #include <Kernel/Net/Socket.h>
 #include <Kernel/Net/Socket.h>

+ 2 - 0
Kernel/Net/LocalSocket.cpp

@@ -9,6 +9,8 @@
 #include <Kernel/Debug.h>
 #include <Kernel/Debug.h>
 #include <Kernel/FileSystem/FileDescription.h>
 #include <Kernel/FileSystem/FileDescription.h>
 #include <Kernel/FileSystem/VirtualFileSystem.h>
 #include <Kernel/FileSystem/VirtualFileSystem.h>
+#include <Kernel/Locking/Lockable.h>
+#include <Kernel/Locking/Mutex.h>
 #include <Kernel/Net/LocalSocket.h>
 #include <Kernel/Net/LocalSocket.h>
 #include <Kernel/Process.h>
 #include <Kernel/Process.h>
 #include <Kernel/StdLib.h>
 #include <Kernel/StdLib.h>

+ 1 - 0
Kernel/Net/Routing.h

@@ -6,6 +6,7 @@
 
 
 #pragma once
 #pragma once
 
 
+#include <Kernel/Locking/Lockable.h>
 #include <Kernel/Net/NetworkAdapter.h>
 #include <Kernel/Net/NetworkAdapter.h>
 #include <Kernel/Thread.h>
 #include <Kernel/Thread.h>
 
 

+ 1 - 0
Kernel/Net/TCPSocket.cpp

@@ -9,6 +9,7 @@
 #include <Kernel/Debug.h>
 #include <Kernel/Debug.h>
 #include <Kernel/Devices/RandomDevice.h>
 #include <Kernel/Devices/RandomDevice.h>
 #include <Kernel/FileSystem/FileDescription.h>
 #include <Kernel/FileSystem/FileDescription.h>
+#include <Kernel/Locking/Lockable.h>
 #include <Kernel/Net/EthernetFrameHeader.h>
 #include <Kernel/Net/EthernetFrameHeader.h>
 #include <Kernel/Net/IPv4.h>
 #include <Kernel/Net/IPv4.h>
 #include <Kernel/Net/NetworkAdapter.h>
 #include <Kernel/Net/NetworkAdapter.h>

+ 1 - 0
Kernel/Net/UDPSocket.cpp

@@ -6,6 +6,7 @@
 
 
 #include <AK/Singleton.h>
 #include <AK/Singleton.h>
 #include <Kernel/Devices/RandomDevice.h>
 #include <Kernel/Devices/RandomDevice.h>
+#include <Kernel/Locking/Mutex.h>
 #include <Kernel/Net/NetworkAdapter.h>
 #include <Kernel/Net/NetworkAdapter.h>
 #include <Kernel/Net/Routing.h>
 #include <Kernel/Net/Routing.h>
 #include <Kernel/Net/UDP.h>
 #include <Kernel/Net/UDP.h>

+ 1 - 0
Kernel/Net/UDPSocket.h

@@ -7,6 +7,7 @@
 #pragma once
 #pragma once
 
 
 #include <Kernel/KResult.h>
 #include <Kernel/KResult.h>
+#include <Kernel/Locking/Lockable.h>
 #include <Kernel/Net/IPv4Socket.h>
 #include <Kernel/Net/IPv4Socket.h>
 
 
 namespace Kernel {
 namespace Kernel {

+ 1 - 0
Kernel/Random.h

@@ -10,6 +10,7 @@
 #include <AK/Assertions.h>
 #include <AK/Assertions.h>
 #include <AK/ByteBuffer.h>
 #include <AK/ByteBuffer.h>
 #include <AK/Types.h>
 #include <AK/Types.h>
+#include <Kernel/Locking/Lockable.h>
 #include <Kernel/Locking/Mutex.h>
 #include <Kernel/Locking/Mutex.h>
 #include <Kernel/StdLib.h>
 #include <Kernel/StdLib.h>
 #include <LibCrypto/Cipher/AES.h>
 #include <LibCrypto/Cipher/AES.h>