23#include "pedigree/kernel/Atomic.h"
24#include "pedigree/kernel/Log.h"
25#include "pedigree/kernel/machine/Machine.h"
26#include "pedigree/kernel/machine/Timer.h"
27#include "pedigree/kernel/process/Process.h"
28#include "pedigree/kernel/process/Semaphore.h"
29#include "pedigree/kernel/utilities/ExtensibleBitmap.h"
31#include "modules/system/vfs/Directory.h"
32#include "modules/system/vfs/File.h"
33#include "modules/system/vfs/Filesystem.h"
46 virtual uint64_t
readBytewise(uint64_t location, uint64_t size, uintptr_t buffer,
47 bool bCanBlock =
true);
48 virtual uint64_t
writeBytewise(uint64_t location, uint64_t size, uintptr_t buffer,
49 bool bCanBlock =
true);
51 virtual size_t getSize();
54 void updateContents();
69 virtual uint64_t
readBytewise(uint64_t location, uint64_t size, uintptr_t buffer,
70 bool bCanBlock =
true);
71 virtual uint64_t
writeBytewise(uint64_t location, uint64_t size, uintptr_t buffer,
72 bool bCanBlock =
true);
74 virtual size_t getSize();
91 virtual uint64_t
readBytewise(uint64_t location, uint64_t size, uintptr_t buffer,
92 bool bCanBlock =
true);
93 virtual uint64_t
writeBytewise(uint64_t location, uint64_t size, uintptr_t buffer,
94 bool bCanBlock =
true);
96 virtual size_t getSize();
109 virtual uint64_t
readBytewise(uint64_t location, uint64_t size, uintptr_t buffer,
110 bool bCanBlock =
true);
111 virtual uint64_t
writeBytewise(uint64_t location, uint64_t size, uintptr_t buffer,
112 bool bCanBlock =
true);
114 virtual size_t getSize();
130 virtual uint64_t
readBytewise(uint64_t location, uint64_t size, uintptr_t buffer,
131 bool bCanBlock =
true);
132 virtual uint64_t
writeBytewise(uint64_t location, uint64_t size, uintptr_t buffer,
133 bool bCanBlock =
true);
135 virtual size_t getSize();
150 using Directory::markDetached;
153 Time::Timestamp creationTime, uintptr_t inode,
class Filesystem* pFs,
size_t size,
155 :
Directory(name, accessedTime, modifiedTime, creationTime, inode, pFs, size, pParent) {}
168 return SyncStatus::Success;
172 : m_PidNamespace(space), m_pRoot(0), m_NextInode(0) {}
174 return m_PidNamespace;
187 static String volumeLabel(
"proc");
191 virtual size_t getNextInode();
192 virtual void revertInode();
217 bool initialiseNamespaceLinks();
218 void initialiseResolverFile();
219 void initialiseNetworkFile();
223 ProcFs* m_RegistryNext =
nullptr;
224 bool m_Registered =
false;
virtual bool isBytewise() const
virtual uint64_t writeBytewise(uint64_t location, uint64_t size, uintptr_t buffer, bool bCanBlock=true)
virtual uint64_t readBytewise(uint64_t location, uint64_t size, uintptr_t buffer, bool bCanBlock=true)
bool addDirectoryEntry(const String &name, File *pTarget)
virtual bool isBytewise() const
virtual uint64_t readBytewise(uint64_t location, uint64_t size, uintptr_t buffer, bool bCanBlock=true)
virtual uint64_t writeBytewise(uint64_t location, uint64_t size, uintptr_t buffer, bool bCanBlock=true)
virtual bool isBytewise() const
virtual uint64_t writeBytewise(uint64_t location, uint64_t size, uintptr_t buffer, bool bCanBlock=true)
virtual uint64_t readBytewise(uint64_t location, uint64_t size, uintptr_t buffer, bool bCanBlock=true)
virtual uint64_t readBytewise(uint64_t location, uint64_t size, uintptr_t buffer, bool bCanBlock=true)
virtual bool isBytewise() const
virtual uint64_t writeBytewise(uint64_t location, uint64_t size, uintptr_t buffer, bool bCanBlock=true)
SyncStatus sync() override
virtual bool removeNode(File *, const String &, File *)
virtual File * getRoot() const
virtual bool createDirectory(File *parent, const String &filename, uint32_t mask)
virtual bool createFile(File *parent, const String &filename, uint32_t mask)
virtual bool createSymlink(File *parent, const String &filename, const String &value)
virtual const String & getVolumeLabel() const
void addProcess(PosixProcess *proc)
virtual bool initialise(Disk *pDisk)
virtual uint64_t writeBytewise(uint64_t location, uint64_t size, uintptr_t buffer, bool bCanBlock=true)
virtual uint64_t readBytewise(uint64_t location, uint64_t size, uintptr_t buffer, bool bCanBlock=true)
virtual bool isBytewise() const