Luna/kernel/src/fs/tmpfs/FileSystem.h

52 lines
995 B
C
Raw Normal View History

#pragma once
#include "fs/VFS.h"
#include <luna/Badge.h>
#include <luna/Vector.h>
namespace TmpFS
{
class FileSystem : public VFS::FileSystem
{
public:
VFS::Inode& root() const override
{
return *m_root_inode;
}
static Result<SharedPtr<VFS::FileSystem>> create();
virtual ~FileSystem() = default;
private:
FileSystem();
Result<void> set_root(SharedPtr<VFS::Inode> root);
SharedPtr<VFS::Inode> m_root_inode;
Vector<SharedPtr<VFS::Inode>> m_inodes;
};
class Inode : public VFS::Inode
{
public:
Inode();
void set_fs(FileSystem& fs, Badge<FileSystem>);
Result<VFS::Inode*> find(const char*) const override
{
return err(ENOTSUP);
}
VFS::FileSystem& fs() const override
{
return *m_fs;
}
virtual ~Inode() = default;
private:
VFS::FileSystem* m_fs;
};
}