28#include "pedigree/kernel/Atomic.h"
29#include "pedigree/kernel/compiler.h"
30#include "pedigree/kernel/process/Mutex.h"
31#include "pedigree/kernel/processor/types.h"
32#include "pedigree/kernel/utilities/Cache.h"
33#include "pedigree/kernel/utilities/String.h"
35#include "modules/system/vfs/Directory.h"
36#include "modules/system/vfs/File.h"
37#include "modules/system/vfs/Filesystem.h"
38#include "modules/system/vfs/MemoryExtendedAttributes.h"
48 virtual Attributes getAttributes()
const override;
54 size_t& required)
override;
55 XattrStatus listExtendedAttributes(
void* buffer,
size_t capacity,
size_t& required)
override;
56 XattrStatus setExtendedAttribute(
const StringView& name,
const void* value,
size_t length,
57 unsigned flags)
override;
58 XattrStatus removeExtendedAttribute(
const StringView& name)
override;
65 virtual bool resizeFile(
size_t size)
override;
69 virtual uintptr_t
readBlock(uint64_t location)
override;
71 virtual bool pinBlock(uint64_t location)
override;
74 virtual void unpinBlock(uint64_t location)
override;
79 mutable Mutex m_FileBlocksLock;
98 size_t& required)
override;
99 XattrStatus listExtendedAttributes(
void* buffer,
size_t capacity,
size_t& required)
override;
100 XattrStatus setExtendedAttribute(
const StringView& name,
const void* value,
size_t length,
101 unsigned flags)
override;
102 XattrStatus removeExtendedAttribute(
const StringView& name)
override;
106 virtual bool addEntry(
String filename,
File* pFile);
108 virtual bool removeEntry(
const String& filename,
File* pFile);
110 bool removeFromParent(
RamDir* parent,
const String& filename);
113 Mutex m_DirectoryLock;
123 virtual bool initialise(
Disk* pDisk)
override;
125 SyncStatus
sync()
override;
127 void setProcessOwnership(
bool bEnable) {
128 m_bProcessOwners = bEnable;
131 bool getProcessOwnership()
const {
132 return m_bProcessOwners;
139 return m_VolumeLabel;
143 virtual bool createFile(
File* parent,
const String& filename, uint32_t mask)
override;
144 virtual bool createDirectory(
File* parent,
const String& filename, uint32_t mask)
override;
145 virtual bool createSymlink(
File* parent,
const String& filename,
const String& value)
override;
146 virtual bool createLink(
File* parent,
const String& filename,
File* target)
override;
147 virtual bool removeNode(
File* parent,
const String& filename,
File* file)
override;
152 void operator=(
const RamFs&);
154 uintptr_t allocateInode();
156 static String m_VolumeLabel;
161 bool m_bProcessOwners;
virtual XattrStatus getExtendedAttribute(const StringView &name, void *buffer, size_t capacity, size_t &required)
virtual uintptr_t readBlock(uint64_t location)
virtual void unpinBlock(uint64_t location)
virtual bool allocateFileRange(size_t offset, size_t length)
virtual MUST_USE_RESULT uintptr_t acquireCachedBlock(uint64_t location, bool retryChanged)
virtual MUST_USE_RESULT bool pinBlock(uint64_t location)
virtual void cacheDirectoryContents() override
virtual const String & getVolumeLabel() const override
virtual File * getRoot() const override
A vector / dynamic array.