diff --git a/VirtualFileSystem/FileHandle.h b/VirtualFileSystem/FileHandle.h index 250d3773dc..42ee234aef 100644 --- a/VirtualFileSystem/FileHandle.h +++ b/VirtualFileSystem/FileHandle.h @@ -14,11 +14,20 @@ public: ByteBuffer readEntireFile(); +#ifdef SERENITY_KERNEL + int fd() const { return m_fd; } + void setFD(int fd) { m_fd = fd; } +#endif + private: friend class VirtualFileSystem; RetainPtr m_vnode; Unix::off_t m_currentOffset { 0 }; + +#ifdef SERENITY_KERNEL + int m_fd { -1 }; +#endif }; diff --git a/VirtualFileSystem/VirtualFileSystem.cpp b/VirtualFileSystem/VirtualFileSystem.cpp index 7443158369..15104a2f9d 100644 --- a/VirtualFileSystem/VirtualFileSystem.cpp +++ b/VirtualFileSystem/VirtualFileSystem.cpp @@ -12,8 +12,17 @@ static dword encodedDevice(unsigned major, unsigned minor) return (minor & 0xff) | (major << 8) | ((minor & ~0xff) << 12); } +static VirtualFileSystem* s_the; + +VirtualFileSystem& VirtualFileSystem::the() +{ + ASSERT(s_the); + return *s_the; +} + VirtualFileSystem::VirtualFileSystem() { + s_the = this; m_maxNodeCount = 16; m_nodes = reinterpret_cast(kmalloc(sizeof(Node) * maxNodeCount())); memset(m_nodes, 0, sizeof(Node) * maxNodeCount()); diff --git a/VirtualFileSystem/VirtualFileSystem.h b/VirtualFileSystem/VirtualFileSystem.h index f4b774fc06..5c59a372cc 100644 --- a/VirtualFileSystem/VirtualFileSystem.h +++ b/VirtualFileSystem/VirtualFileSystem.h @@ -35,6 +35,8 @@ public: CharacterDevice* m_characterDevice { nullptr }; }; + static VirtualFileSystem& the(); + VirtualFileSystem(); ~VirtualFileSystem();