mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 12:27:35 +00:00
Kernel: Split VMObject into two classes: Anonymous- and InodeVMObject
InodeVMObject is a VMObject with an underlying Inode in the filesystem. AnonymousVMObject has no Inode. I'm happy that InodeVMObject::inode() can now return Inode& instead of VMObject::inode() return Inode*. :^)
This commit is contained in:
parent
cb2d572a14
commit
6bdb81ad87
16 changed files with 286 additions and 200 deletions
|
@ -3,7 +3,7 @@
|
|||
#include <Kernel/FileSystem/Inode.h>
|
||||
#include <Kernel/FileSystem/InodeWatcher.h>
|
||||
#include <Kernel/Net/LocalSocket.h>
|
||||
#include <Kernel/VM/VMObject.h>
|
||||
#include <Kernel/VM/InodeVMObject.h>
|
||||
|
||||
HashTable<Inode*>& all_inodes()
|
||||
{
|
||||
|
|
|
@ -11,9 +11,9 @@
|
|||
#include <Kernel/Lock.h>
|
||||
|
||||
class FileDescription;
|
||||
class InodeVMObject;
|
||||
class InodeWatcher;
|
||||
class LocalSocket;
|
||||
class VMObject;
|
||||
|
||||
class Inode : public RefCounted<Inode>, public Weakable<Inode> {
|
||||
friend class VFS;
|
||||
|
@ -69,8 +69,8 @@ public:
|
|||
void will_be_destroyed();
|
||||
|
||||
void set_vmo(VMObject&);
|
||||
VMObject* vmo() { return m_vmo.ptr(); }
|
||||
const VMObject* vmo() const { return m_vmo.ptr(); }
|
||||
InodeVMObject* vmo() { return m_vmo.ptr(); }
|
||||
const InodeVMObject* vmo() const { return m_vmo.ptr(); }
|
||||
|
||||
static void sync();
|
||||
|
||||
|
@ -88,7 +88,7 @@ protected:
|
|||
private:
|
||||
FS& m_fs;
|
||||
unsigned m_index { 0 };
|
||||
WeakPtr<VMObject> m_vmo;
|
||||
WeakPtr<InodeVMObject> m_vmo;
|
||||
RefPtr<LocalSocket> m_socket;
|
||||
HashTable<InodeWatcher*> m_watchers;
|
||||
bool m_metadata_dirty { false };
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#include <Kernel/FileSystem/SharedMemory.h>
|
||||
#include <Kernel/Lock.h>
|
||||
#include <Kernel/Process.h>
|
||||
#include <Kernel/VM/VMObject.h>
|
||||
#include <Kernel/VM/AnonymousVMObject.h>
|
||||
|
||||
Lockable<HashMap<String, RefPtr<SharedMemory>>>& shared_memories()
|
||||
{
|
||||
|
@ -59,7 +59,7 @@ KResult SharedMemory::truncate(int length)
|
|||
}
|
||||
|
||||
if (!m_vmo) {
|
||||
m_vmo = VMObject::create_anonymous(length);
|
||||
m_vmo = AnonymousVMObject::create_with_size(length);
|
||||
return KSuccess;
|
||||
}
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
#include <Kernel/KResult.h>
|
||||
#include <Kernel/UnixTypes.h>
|
||||
|
||||
class VMObject;
|
||||
class AnonymousVMObject;
|
||||
|
||||
class SharedMemory : public File {
|
||||
public:
|
||||
|
@ -17,8 +17,8 @@ public:
|
|||
|
||||
const String& name() const { return m_name; }
|
||||
virtual KResult truncate(off_t) override;
|
||||
VMObject* vmo() { return m_vmo.ptr(); }
|
||||
const VMObject* vmo() const { return m_vmo.ptr(); }
|
||||
AnonymousVMObject* vmo() { return m_vmo.ptr(); }
|
||||
const AnonymousVMObject* vmo() const { return m_vmo.ptr(); }
|
||||
uid_t uid() const { return m_uid; }
|
||||
gid_t gid() const { return m_gid; }
|
||||
|
||||
|
@ -39,5 +39,5 @@ private:
|
|||
uid_t m_uid { 0 };
|
||||
gid_t m_gid { 0 };
|
||||
mode_t m_mode { 0 };
|
||||
RefPtr<VMObject> m_vmo;
|
||||
RefPtr<AnonymousVMObject> m_vmo;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue