diff --git a/Kernel/Library/ThreadSafeRefCounted.h b/AK/AtomicRefCounted.h similarity index 84% rename from Kernel/Library/ThreadSafeRefCounted.h rename to AK/AtomicRefCounted.h index 18ebc5db27f..50f057231f3 100644 --- a/Kernel/Library/ThreadSafeRefCounted.h +++ b/AK/AtomicRefCounted.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2020, Andreas Kling + * Copyright (c) 2018-2022, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ @@ -15,9 +15,9 @@ namespace AK { -class RefCountedBase { - AK_MAKE_NONCOPYABLE(RefCountedBase); - AK_MAKE_NONMOVABLE(RefCountedBase); +class AtomicRefCountedBase { + AK_MAKE_NONCOPYABLE(AtomicRefCountedBase); + AK_MAKE_NONMOVABLE(AtomicRefCountedBase); public: using RefCountType = unsigned int; @@ -48,8 +48,8 @@ public: } protected: - RefCountedBase() = default; - ~RefCountedBase() + AtomicRefCountedBase() = default; + ~AtomicRefCountedBase() { VERIFY(m_ref_count.load(AK::MemoryOrder::memory_order_relaxed) == 0); } @@ -65,7 +65,7 @@ protected: }; template -class RefCounted : public RefCountedBase { +class AtomicRefCounted : public AtomicRefCountedBase { public: bool unref() const { @@ -83,5 +83,5 @@ public: } -using AK::RefCounted; -using AK::RefCountedBase; +using AK::AtomicRefCounted; +using AK::AtomicRefCountedBase; diff --git a/AK/RefCounted.h b/AK/RefCounted.h index 0908517303b..13cb082391e 100644 --- a/AK/RefCounted.h +++ b/AK/RefCounted.h @@ -6,15 +6,11 @@ #pragma once -#ifdef KERNEL -# include -#else - -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include namespace AK { @@ -67,7 +63,7 @@ public: if (new_ref_count == 0) { if constexpr (requires { that->will_be_destroyed(); }) that->will_be_destroyed(); - delete static_cast(this); + delete static_cast(this); return true; } return false; @@ -78,5 +74,3 @@ public: using AK::RefCounted; using AK::RefCountedBase; - -#endif diff --git a/Kernel/Arch/aarch64/IRQController.h b/Kernel/Arch/aarch64/IRQController.h index 20e6b6b712c..e0e7b1de2cd 100644 --- a/Kernel/Arch/aarch64/IRQController.h +++ b/Kernel/Arch/aarch64/IRQController.h @@ -6,14 +6,14 @@ #pragma once -#include +#include #include namespace Kernel { class GenericInterruptHandler; -class IRQController : public RefCounted { +class IRQController : public AtomicRefCounted { public: virtual ~IRQController() = default; diff --git a/Kernel/Arch/x86/IRQController.h b/Kernel/Arch/x86/IRQController.h index 82afa739b4d..64e969033c3 100644 --- a/Kernel/Arch/x86/IRQController.h +++ b/Kernel/Arch/x86/IRQController.h @@ -6,7 +6,7 @@ #pragma once -#include +#include #include #include @@ -19,7 +19,7 @@ enum class IRQControllerType { i82093AA = 2 /* Intel 82093AA I/O ADVANCED PROGRAMMABLE INTERRUPT CONTROLLER (IOAPIC) */ }; -class IRQController : public RefCounted { +class IRQController : public AtomicRefCounted { public: virtual ~IRQController() = default; diff --git a/Kernel/Arch/x86/InterruptManagement.h b/Kernel/Arch/x86/InterruptManagement.h index b6fa9908120..0c3a2848e45 100644 --- a/Kernel/Arch/x86/InterruptManagement.h +++ b/Kernel/Arch/x86/InterruptManagement.h @@ -9,7 +9,6 @@ #include #include #include -#include #include #include #include diff --git a/Kernel/Bus/USB/USBController.h b/Kernel/Bus/USB/USBController.h index 7ff30819e3a..0f8c38dddbb 100644 --- a/Kernel/Bus/USB/USBController.h +++ b/Kernel/Bus/USB/USBController.h @@ -6,14 +6,14 @@ #pragma once +#include #include -#include #include #include namespace Kernel::USB { -class USBController : public RefCounted { +class USBController : public AtomicRefCounted { public: virtual ~USBController() = default; diff --git a/Kernel/Bus/USB/USBDevice.h b/Kernel/Bus/USB/USBDevice.h index bde5a1bf22f..f74c3316b4c 100644 --- a/Kernel/Bus/USB/USBDevice.h +++ b/Kernel/Bus/USB/USBDevice.h @@ -27,7 +27,7 @@ class USBConfiguration; // // https://www.ftdichip.com/Support/Documents/TechnicalNotes/TN_113_Simplified%20Description%20of%20USB%20Device%20Enumeration.pdf class Hub; -class Device : public RefCounted { +class Device : public AtomicRefCounted { public: enum class DeviceSpeed : u8 { FullSpeed = 0, diff --git a/Kernel/Bus/USB/USBHub.h b/Kernel/Bus/USB/USBHub.h index 0d4da8ee6cf..d4b7de4e449 100644 --- a/Kernel/Bus/USB/USBHub.h +++ b/Kernel/Bus/USB/USBHub.h @@ -6,7 +6,6 @@ #pragma once -#include #include #include diff --git a/Kernel/Bus/USB/USBTransfer.h b/Kernel/Bus/USB/USBTransfer.h index fe8e7d6713a..92fa48e1af9 100644 --- a/Kernel/Bus/USB/USBTransfer.h +++ b/Kernel/Bus/USB/USBTransfer.h @@ -6,6 +6,7 @@ #pragma once +#include #include #include #include @@ -17,7 +18,7 @@ // TODO: Callback stuff in this class please! namespace Kernel::USB { -class Transfer : public RefCounted { +class Transfer final : public AtomicRefCounted { public: static ErrorOr> try_create(Pipe&, u16 length, Memory::Region& dma_buffer); diff --git a/Kernel/Bus/VirtIO/Console.h b/Kernel/Bus/VirtIO/Console.h index 0d059d290cb..2fd1203ffe1 100644 --- a/Kernel/Bus/VirtIO/Console.h +++ b/Kernel/Bus/VirtIO/Console.h @@ -14,7 +14,7 @@ namespace Kernel::VirtIO { class Console : public VirtIO::Device - , public RefCounted { + , public AtomicRefCounted { friend VirtIO::ConsolePort; public: diff --git a/Kernel/Bus/VirtIO/RNG.h b/Kernel/Bus/VirtIO/RNG.h index 1135aa32929..f7c1d35c8fe 100644 --- a/Kernel/Bus/VirtIO/RNG.h +++ b/Kernel/Bus/VirtIO/RNG.h @@ -6,7 +6,7 @@ #pragma once -#include +#include #include #include #include @@ -16,7 +16,7 @@ namespace Kernel::VirtIO { #define REQUESTQ 0 class RNG final - : public RefCounted + : public AtomicRefCounted , public VirtIO::Device { public: static NonnullRefPtr must_create(PCI::DeviceIdentifier const&); diff --git a/Kernel/Devices/AsyncDeviceRequest.h b/Kernel/Devices/AsyncDeviceRequest.h index 47d5aacc931..c42f36189ab 100644 --- a/Kernel/Devices/AsyncDeviceRequest.h +++ b/Kernel/Devices/AsyncDeviceRequest.h @@ -20,7 +20,7 @@ class Device; extern WorkQueue* g_io_work; -class AsyncDeviceRequest : public RefCounted { +class AsyncDeviceRequest : public AtomicRefCounted { AK_MAKE_NONCOPYABLE(AsyncDeviceRequest); AK_MAKE_NONMOVABLE(AsyncDeviceRequest); diff --git a/Kernel/Devices/Audio/Controller.h b/Kernel/Devices/Audio/Controller.h index 0b63c50eb66..a8aecd84c99 100644 --- a/Kernel/Devices/Audio/Controller.h +++ b/Kernel/Devices/Audio/Controller.h @@ -23,7 +23,7 @@ namespace Kernel { class AudioManagement; class AudioController - : public RefCounted + : public AtomicRefCounted , public Weakable { friend class AudioManagement; diff --git a/Kernel/Devices/HID/I8042Controller.h b/Kernel/Devices/HID/I8042Controller.h index c09a2a32c02..65b8c35fbe9 100644 --- a/Kernel/Devices/HID/I8042Controller.h +++ b/Kernel/Devices/HID/I8042Controller.h @@ -6,7 +6,7 @@ #pragma once -#include +#include #include #include #include @@ -83,7 +83,7 @@ protected: class PS2KeyboardDevice; class PS2MouseDevice; class HIDManagement; -class I8042Controller : public RefCounted { +class I8042Controller final : public AtomicRefCounted { friend class PS2KeyboardDevice; friend class PS2MouseDevice; diff --git a/Kernel/FileSystem/File.h b/Kernel/FileSystem/File.h index bb9065a8a77..ccbe6b579a9 100644 --- a/Kernel/FileSystem/File.h +++ b/Kernel/FileSystem/File.h @@ -6,9 +6,9 @@ #pragma once +#include #include #include -#include #include #include #include @@ -71,10 +71,10 @@ public: // - Should create a Region in the Process and return it if successful. class File - : public RefCounted + : public AtomicRefCounted , public Weakable { public: - virtual bool unref() const { return RefCounted::unref(); } + virtual bool unref() const { return AtomicRefCounted::unref(); } virtual void will_be_destroyed() { } virtual ~File(); diff --git a/Kernel/FileSystem/FileSystem.h b/Kernel/FileSystem/FileSystem.h index e5042448743..40655cfe1d4 100644 --- a/Kernel/FileSystem/FileSystem.h +++ b/Kernel/FileSystem/FileSystem.h @@ -6,8 +6,8 @@ #pragma once +#include #include -#include #include #include #include @@ -18,7 +18,7 @@ namespace Kernel { -class FileSystem : public RefCounted { +class FileSystem : public AtomicRefCounted { friend class Inode; public: diff --git a/Kernel/FileSystem/ISO9660FileSystem.h b/Kernel/FileSystem/ISO9660FileSystem.h index 99f9683d094..93de3e8476a 100644 --- a/Kernel/FileSystem/ISO9660FileSystem.h +++ b/Kernel/FileSystem/ISO9660FileSystem.h @@ -283,7 +283,7 @@ class ISO9660FS final : public BlockBasedFileSystem { friend ISO9660DirectoryIterator; public: - struct DirectoryEntry : public RefCounted { + struct DirectoryEntry final : public AtomicRefCounted { u32 extent { 0 }; u32 length { 0 }; diff --git a/Kernel/FileSystem/OpenFileDescription.h b/Kernel/FileSystem/OpenFileDescription.h index a1315f907c0..cb265b5abd1 100644 --- a/Kernel/FileSystem/OpenFileDescription.h +++ b/Kernel/FileSystem/OpenFileDescription.h @@ -6,8 +6,8 @@ #pragma once +#include #include -#include #include #include #include @@ -22,7 +22,7 @@ public: virtual ~OpenFileDescriptionData() = default; }; -class OpenFileDescription : public RefCounted { +class OpenFileDescription final : public AtomicRefCounted { public: static ErrorOr> try_create(Custody&); static ErrorOr> try_create(File&); diff --git a/Kernel/FileSystem/Plan9FileSystem.h b/Kernel/FileSystem/Plan9FileSystem.h index 78af118ff5c..892407f91bd 100644 --- a/Kernel/FileSystem/Plan9FileSystem.h +++ b/Kernel/FileSystem/Plan9FileSystem.h @@ -69,7 +69,7 @@ private: mutable Spinlock m_lock { LockRank::None }; }; - struct ReceiveCompletion : public RefCounted { + struct ReceiveCompletion final : public AtomicRefCounted { mutable Spinlock lock { LockRank::None }; bool completed { false }; const u16 tag; diff --git a/Kernel/FileSystem/SysFS/Component.h b/Kernel/FileSystem/SysFS/Component.h index 6aee4a4e4ee..8ecbee5f871 100644 --- a/Kernel/FileSystem/SysFS/Component.h +++ b/Kernel/FileSystem/SysFS/Component.h @@ -6,9 +6,9 @@ #pragma once +#include #include #include -#include #include #include #include @@ -24,7 +24,7 @@ struct SysFSInodeData : public OpenFileDescriptionData { }; class SysFSDirectory; -class SysFSComponent : public RefCounted { +class SysFSComponent : public AtomicRefCounted { friend class SysFSDirectory; public: diff --git a/Kernel/Firmware/ACPI/Definitions.h b/Kernel/Firmware/ACPI/Definitions.h index 1531644e326..4375651ca12 100644 --- a/Kernel/Firmware/ACPI/Definitions.h +++ b/Kernel/Firmware/ACPI/Definitions.h @@ -6,9 +6,7 @@ #pragma once -#include #include -#include #include namespace Kernel::ACPI { diff --git a/Kernel/FutexQueue.h b/Kernel/FutexQueue.h index c2c3c2c1387..4ea51ac579a 100644 --- a/Kernel/FutexQueue.h +++ b/Kernel/FutexQueue.h @@ -6,16 +6,14 @@ #pragma once -#include -#include +#include #include -#include #include namespace Kernel { class FutexQueue final - : public RefCounted + : public AtomicRefCounted , public Thread::BlockerSet { public: FutexQueue(); diff --git a/Kernel/Graphics/Console/Console.h b/Kernel/Graphics/Console/Console.h index ef10643b8fd..afaef18e550 100644 --- a/Kernel/Graphics/Console/Console.h +++ b/Kernel/Graphics/Console/Console.h @@ -6,13 +6,13 @@ #pragma once -#include +#include #include #include namespace Kernel::Graphics { -class Console : public RefCounted { +class Console : public AtomicRefCounted { public: // Stanadard VGA text mode colors enum Color : u8 { diff --git a/Kernel/Graphics/Console/GenericFramebufferConsole.h b/Kernel/Graphics/Console/GenericFramebufferConsole.h index 533e64a6b6e..953f694b677 100644 --- a/Kernel/Graphics/Console/GenericFramebufferConsole.h +++ b/Kernel/Graphics/Console/GenericFramebufferConsole.h @@ -6,7 +6,6 @@ #pragma once -#include #include #include #include diff --git a/Kernel/Graphics/Console/VGATextModeConsole.h b/Kernel/Graphics/Console/VGATextModeConsole.h index cb5671da46a..2cc08a98618 100644 --- a/Kernel/Graphics/Console/VGATextModeConsole.h +++ b/Kernel/Graphics/Console/VGATextModeConsole.h @@ -6,7 +6,6 @@ #pragma once -#include #include #include #include diff --git a/Kernel/Graphics/GenericGraphicsAdapter.h b/Kernel/Graphics/GenericGraphicsAdapter.h index 8a5e13731c0..13944ca1060 100644 --- a/Kernel/Graphics/GenericGraphicsAdapter.h +++ b/Kernel/Graphics/GenericGraphicsAdapter.h @@ -14,7 +14,7 @@ namespace Kernel { class GenericGraphicsAdapter - : public RefCounted + : public AtomicRefCounted , public Weakable { public: virtual ~GenericGraphicsAdapter() = default; diff --git a/Kernel/Graphics/VirtIOGPU/GPU3DDevice.h b/Kernel/Graphics/VirtIOGPU/GPU3DDevice.h index a59641a79ed..20b75d9c1cb 100644 --- a/Kernel/Graphics/VirtIOGPU/GPU3DDevice.h +++ b/Kernel/Graphics/VirtIOGPU/GPU3DDevice.h @@ -100,7 +100,7 @@ public: private: VirtIOGPU3DDevice(VirtIOGraphicsAdapter const& graphics_adapter, NonnullOwnPtr transfer_buffer_region); - class PerContextState : public RefCounted { + class PerContextState final : public AtomicRefCounted { public: static ErrorOr> try_create(Graphics::VirtIOGPU::ContextID context_id) { diff --git a/Kernel/Library/ListedRefCounted.h b/Kernel/Library/ListedRefCounted.h index ea95f18ad35..9374516264a 100644 --- a/Kernel/Library/ListedRefCounted.h +++ b/Kernel/Library/ListedRefCounted.h @@ -6,7 +6,7 @@ #pragma once -#include +#include namespace Kernel { @@ -21,7 +21,7 @@ enum class LockType { }; template -class ListedRefCounted : public RefCountedBase { +class ListedRefCounted : public AtomicRefCountedBase { public: bool unref() const { diff --git a/Kernel/Library/ThreadSafeWeakPtr.h b/Kernel/Library/ThreadSafeWeakPtr.h index cd25b8e5582..c50bab3651a 100644 --- a/Kernel/Library/ThreadSafeWeakPtr.h +++ b/Kernel/Library/ThreadSafeWeakPtr.h @@ -168,7 +168,7 @@ template template inline ErrorOr> Weakable::try_make_weak_ptr() const { - if constexpr (IsBaseOf) { + if constexpr (IsBaseOf) { // Checking m_being_destroyed isn't sufficient when dealing with // a RefCounted type.The reference count will drop to 0 before the // destructor is invoked and revoke_weak_ptrs is called. So, try @@ -192,7 +192,7 @@ inline ErrorOr> Weakable::try_make_weak_ptr() const WeakPtr weak_ptr(m_link); - if constexpr (IsBaseOf) { + if constexpr (IsBaseOf) { // Now drop the reference we temporarily added if (static_cast(this)->unref()) { // We just dropped the last reference, which should have called diff --git a/Kernel/Library/ThreadSafeWeakable.h b/Kernel/Library/ThreadSafeWeakable.h index 3abbcea2d14..d97a064a19d 100644 --- a/Kernel/Library/ThreadSafeWeakable.h +++ b/Kernel/Library/ThreadSafeWeakable.h @@ -8,7 +8,7 @@ #include #include -#include +#include #include #include #include @@ -21,7 +21,7 @@ class Weakable; template class WeakPtr; -class WeakLink : public RefCounted { +class WeakLink final : public AtomicRefCounted { template friend class Weakable; template @@ -30,7 +30,7 @@ class WeakLink : public RefCounted { public: template> RefPtr strong_ref() const - requires(IsBaseOf) + requires(IsBaseOf) { RefPtr ref; diff --git a/Kernel/Memory/AnonymousVMObject.h b/Kernel/Memory/AnonymousVMObject.h index 5733235ce90..71f1ef06630 100644 --- a/Kernel/Memory/AnonymousVMObject.h +++ b/Kernel/Memory/AnonymousVMObject.h @@ -63,7 +63,7 @@ private: Bitmap m_cow_map; // AnonymousVMObject shares committed COW pages with cloned children (happens on fork) - class SharedCommittedCowPages : public RefCounted { + class SharedCommittedCowPages final : public AtomicRefCounted { AK_MAKE_NONCOPYABLE(SharedCommittedCowPages); public: diff --git a/Kernel/Memory/PageDirectory.h b/Kernel/Memory/PageDirectory.h index 842519dd0fd..84450e665bc 100644 --- a/Kernel/Memory/PageDirectory.h +++ b/Kernel/Memory/PageDirectory.h @@ -6,10 +6,10 @@ #pragma once +#include #include #include #include -#include #include #include #include @@ -17,7 +17,7 @@ namespace Kernel::Memory { -class PageDirectory : public RefCounted { +class PageDirectory final : public AtomicRefCounted { friend class MemoryManager; public: diff --git a/Kernel/Memory/ScatterGatherList.h b/Kernel/Memory/ScatterGatherList.h index 6fedb75cad6..1c57b6a2eb8 100644 --- a/Kernel/Memory/ScatterGatherList.h +++ b/Kernel/Memory/ScatterGatherList.h @@ -6,6 +6,7 @@ #pragma once +#include #include #include #include @@ -16,7 +17,7 @@ namespace Kernel::Memory { // A Scatter-Gather List type that owns its buffers -class ScatterGatherList : public RefCounted { +class ScatterGatherList final : public AtomicRefCounted { public: static RefPtr try_create(AsyncBlockDeviceRequest&, Span> allocated_pages, size_t device_block_size); VMObject const& vmobject() const { return m_vm_object; } diff --git a/Kernel/Net/NetworkAdapter.h b/Kernel/Net/NetworkAdapter.h index 3f39274d3ce..d465e378ec1 100644 --- a/Kernel/Net/NetworkAdapter.h +++ b/Kernel/Net/NetworkAdapter.h @@ -6,6 +6,7 @@ #pragma once +#include #include #include #include @@ -27,7 +28,7 @@ class NetworkAdapter; using NetworkByteBuffer = AK::Detail::ByteBuffer<1500>; -struct PacketWithTimestamp : public RefCounted { +struct PacketWithTimestamp final : public AtomicRefCounted { PacketWithTimestamp(NonnullOwnPtr buffer, Time timestamp) : buffer(move(buffer)) , timestamp(timestamp) @@ -41,7 +42,8 @@ struct PacketWithTimestamp : public RefCounted { IntrusiveListNode> packet_node; }; -class NetworkAdapter : public RefCounted +class NetworkAdapter + : public AtomicRefCounted , public Weakable { public: static constexpr i32 LINKSPEED_INVALID = -1; diff --git a/Kernel/Net/Routing.h b/Kernel/Net/Routing.h index ba7f06f2d22..fc3d4402cfd 100644 --- a/Kernel/Net/Routing.h +++ b/Kernel/Net/Routing.h @@ -14,7 +14,7 @@ namespace Kernel { -struct Route : public RefCounted { +struct Route final : public AtomicRefCounted { Route(IPv4Address const& destination, IPv4Address const& gateway, IPv4Address const& netmask, u16 flags, NonnullRefPtr adapter) : destination(destination) , gateway(gateway) diff --git a/Kernel/Net/Socket.h b/Kernel/Net/Socket.h index 281d530e9b2..8622d52af43 100644 --- a/Kernel/Net/Socket.h +++ b/Kernel/Net/Socket.h @@ -8,7 +8,6 @@ #include #include -#include #include #include #include diff --git a/Kernel/ProcessExposed.h b/Kernel/ProcessExposed.h index 6a51aafa070..e4779c7339c 100644 --- a/Kernel/ProcessExposed.h +++ b/Kernel/ProcessExposed.h @@ -6,9 +6,9 @@ #pragma once +#include #include #include -#include #include #include #include @@ -66,7 +66,7 @@ private: NonnullRefPtr m_root_directory; }; -class ProcFSExposedComponent : public RefCounted { +class ProcFSExposedComponent : public AtomicRefCounted { public: StringView name() const { return m_name->view(); } virtual ErrorOr read_bytes(off_t, size_t, UserOrKernelBuffer&, OpenFileDescription*) const { VERIFY_NOT_REACHED(); } diff --git a/Kernel/ProcessGroup.h b/Kernel/ProcessGroup.h index 901e4986eab..37b0e0a1a26 100644 --- a/Kernel/ProcessGroup.h +++ b/Kernel/ProcessGroup.h @@ -6,8 +6,8 @@ #pragma once +#include #include -#include #include #include #include @@ -15,7 +15,7 @@ namespace Kernel { class ProcessGroup - : public RefCounted + : public AtomicRefCounted , public Weakable { AK_MAKE_NONMOVABLE(ProcessGroup); diff --git a/Kernel/Storage/ATA/AHCI/Port.h b/Kernel/Storage/ATA/AHCI/Port.h index f551fb13c4b..26c0939ec2b 100644 --- a/Kernel/Storage/ATA/AHCI/Port.h +++ b/Kernel/Storage/ATA/AHCI/Port.h @@ -32,7 +32,7 @@ class AsyncBlockDeviceRequest; class AHCIInterruptHandler; class AHCIPort - : public RefCounted + : public AtomicRefCounted , public Weakable { friend class AHCIController; diff --git a/Kernel/Storage/ATA/ATAPort.h b/Kernel/Storage/ATA/ATAPort.h index c8d9db28826..88d133b43f8 100644 --- a/Kernel/Storage/ATA/ATAPort.h +++ b/Kernel/Storage/ATA/ATAPort.h @@ -13,7 +13,7 @@ namespace Kernel { class AsyncBlockDeviceRequest; class ATAPort - : public RefCounted + : public AtomicRefCounted , public Weakable { friend class ATAPortInterruptDisabler; diff --git a/Kernel/Storage/NVMe/NVMeNameSpace.h b/Kernel/Storage/NVMe/NVMeNameSpace.h index e96c6f98054..b6df088a62e 100644 --- a/Kernel/Storage/NVMe/NVMeNameSpace.h +++ b/Kernel/Storage/NVMe/NVMeNameSpace.h @@ -10,7 +10,6 @@ #include #include #include -#include #include #include #include diff --git a/Kernel/Storage/NVMe/NVMeQueue.h b/Kernel/Storage/NVMe/NVMeQueue.h index 49c2e9ec9ae..aa0e3727dc6 100644 --- a/Kernel/Storage/NVMe/NVMeQueue.h +++ b/Kernel/Storage/NVMe/NVMeQueue.h @@ -6,10 +6,10 @@ #pragma once +#include #include #include #include -#include #include #include #include @@ -27,9 +27,9 @@ struct DoorbellRegister { }; class AsyncBlockDeviceRequest; -class NVMeQueue : public RefCounted { +class NVMeQueue : public AtomicRefCounted { public: - static ErrorOr> try_create(u16 qid, Optional irq, u32 q_depth, OwnPtr cq_dma_region, NonnullRefPtrVector cq_dma_page, OwnPtr sq_dma_region, NonnullRefPtrVector sq_dma_page, Memory::TypedMapping db_regs); + static ErrorOr> try_create(u16 qid, Optional irq, u32 q_depth, OwnPtr cq_dma_region, NonnullRefPtrVector cq_dma_page, OwnPtr sq_dma_region, NonnullRefPtrVector sq_dma_page, Memory::TypedMapping db_regs); bool is_admin_queue() { return m_admin_queue; }; u16 submit_sync_sqe(NVMeSubmission&); void read(AsyncBlockDeviceRequest& request, u16 nsid, u64 index, u32 count); @@ -43,7 +43,7 @@ protected: { m_db_regs->sq_tail = m_sq_tail; } - NVMeQueue(NonnullOwnPtr rw_dma_region, Memory::PhysicalPage const& rw_dma_page, u16 qid, u32 q_depth, OwnPtr cq_dma_region, NonnullRefPtrVector cq_dma_page, OwnPtr sq_dma_region, NonnullRefPtrVector sq_dma_page, Memory::TypedMapping db_regs); + NVMeQueue(NonnullOwnPtr rw_dma_region, Memory::PhysicalPage const& rw_dma_page, u16 qid, u32 q_depth, OwnPtr cq_dma_region, NonnullRefPtrVector cq_dma_page, OwnPtr sq_dma_region, NonnullRefPtrVector sq_dma_page, Memory::TypedMapping db_regs); private: bool cqe_available(); @@ -75,7 +75,7 @@ private: OwnPtr m_sq_dma_region; NonnullRefPtrVector m_sq_dma_page; Span m_cqe_array; - Memory::TypedMapping m_db_regs; + Memory::TypedMapping m_db_regs; NonnullRefPtr m_rw_dma_page; }; } diff --git a/Kernel/Storage/StorageController.h b/Kernel/Storage/StorageController.h index 769441adda9..f89b41317ab 100644 --- a/Kernel/Storage/StorageController.h +++ b/Kernel/Storage/StorageController.h @@ -21,7 +21,7 @@ namespace Kernel { class AsyncBlockDeviceRequest; class StorageDevice; -class StorageController : public RefCounted { +class StorageController : public AtomicRefCounted { public: virtual ~StorageController() = default; diff --git a/Kernel/Time/HardwareTimer.h b/Kernel/Time/HardwareTimer.h index ed1e0851ecf..a3a3d75d60b 100644 --- a/Kernel/Time/HardwareTimer.h +++ b/Kernel/Time/HardwareTimer.h @@ -6,8 +6,8 @@ #pragma once +#include #include -#include #include #include @@ -23,8 +23,7 @@ enum class HardwareTimerType { template class HardwareTimer; -class HardwareTimerBase - : public RefCounted { +class HardwareTimerBase : public AtomicRefCounted { public: virtual ~HardwareTimerBase() = default; diff --git a/Kernel/TimerQueue.h b/Kernel/TimerQueue.h index 9b982e46694..9163957961f 100644 --- a/Kernel/TimerQueue.h +++ b/Kernel/TimerQueue.h @@ -6,11 +6,11 @@ #pragma once +#include #include #include #include #include -#include #include #include @@ -18,7 +18,7 @@ namespace Kernel { AK_TYPEDEF_DISTINCT_ORDERED_ID(u64, TimerId); -class Timer : public RefCounted { +class Timer final : public AtomicRefCounted { friend class TimerQueue; public: