1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 05:37:35 +00:00

AK+Kernel: Add AK::AtomicRefCounted and use everywhere in the kernel

Instead of having two separate implementations of AK::RefCounted, one
for userspace and one for kernelspace, there is now RefCounted and
AtomicRefCounted.
This commit is contained in:
Andreas Kling 2022-08-19 17:26:07 +02:00
parent 4889eb019a
commit e475263113
45 changed files with 81 additions and 94 deletions

View file

@ -6,9 +6,9 @@
#pragma once
#include <AK/AtomicRefCounted.h>
#include <AK/Error.h>
#include <AK/NonnullRefPtr.h>
#include <AK/RefCounted.h>
#include <AK/StringView.h>
#include <AK/Types.h>
#include <AK/Weakable.h>
@ -71,10 +71,10 @@ public:
// - Should create a Region in the Process and return it if successful.
class File
: public RefCounted<File>
: public AtomicRefCounted<File>
, public Weakable<File> {
public:
virtual bool unref() const { return RefCounted<File>::unref(); }
virtual bool unref() const { return AtomicRefCounted<File>::unref(); }
virtual void will_be_destroyed() { }
virtual ~File();

View file

@ -6,8 +6,8 @@
#pragma once
#include <AK/AtomicRefCounted.h>
#include <AK/Error.h>
#include <AK/RefCounted.h>
#include <AK/RefPtr.h>
#include <AK/StringView.h>
#include <Kernel/FileSystem/InodeIdentifier.h>
@ -18,7 +18,7 @@
namespace Kernel {
class FileSystem : public RefCounted<FileSystem> {
class FileSystem : public AtomicRefCounted<FileSystem> {
friend class Inode;
public:

View file

@ -283,7 +283,7 @@ class ISO9660FS final : public BlockBasedFileSystem {
friend ISO9660DirectoryIterator;
public:
struct DirectoryEntry : public RefCounted<DirectoryEntry> {
struct DirectoryEntry final : public AtomicRefCounted<DirectoryEntry> {
u32 extent { 0 };
u32 length { 0 };

View file

@ -6,8 +6,8 @@
#pragma once
#include <AK/AtomicRefCounted.h>
#include <AK/Badge.h>
#include <AK/RefCounted.h>
#include <Kernel/FileSystem/FIFO.h>
#include <Kernel/FileSystem/Inode.h>
#include <Kernel/FileSystem/InodeMetadata.h>
@ -22,7 +22,7 @@ public:
virtual ~OpenFileDescriptionData() = default;
};
class OpenFileDescription : public RefCounted<OpenFileDescription> {
class OpenFileDescription final : public AtomicRefCounted<OpenFileDescription> {
public:
static ErrorOr<NonnullRefPtr<OpenFileDescription>> try_create(Custody&);
static ErrorOr<NonnullRefPtr<OpenFileDescription>> try_create(File&);

View file

@ -69,7 +69,7 @@ private:
mutable Spinlock m_lock { LockRank::None };
};
struct ReceiveCompletion : public RefCounted<ReceiveCompletion> {
struct ReceiveCompletion final : public AtomicRefCounted<ReceiveCompletion> {
mutable Spinlock lock { LockRank::None };
bool completed { false };
const u16 tag;

View file

@ -6,9 +6,9 @@
#pragma once
#include <AK/AtomicRefCounted.h>
#include <AK/Error.h>
#include <AK/Function.h>
#include <AK/RefCounted.h>
#include <AK/RefPtr.h>
#include <AK/StringView.h>
#include <AK/Types.h>
@ -24,7 +24,7 @@ struct SysFSInodeData : public OpenFileDescriptionData {
};
class SysFSDirectory;
class SysFSComponent : public RefCounted<SysFSComponent> {
class SysFSComponent : public AtomicRefCounted<SysFSComponent> {
friend class SysFSDirectory;
public: