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

44 lines
1.1 KiB
C
Raw Normal View History

#pragma once
#include "fs/VFS.h"
#include "fs/devices/DeviceRegistry.h"
2023-02-25 18:06:23 +01:00
#include <luna/Atomic.h>
namespace TmpFS
{
class FileSystem : public VFS::FileSystem
{
public:
SharedPtr<VFS::Inode> root_inode() const override
{
return m_root_inode;
}
Result<SharedPtr<VFS::Inode>> create_file_inode() override;
Result<SharedPtr<VFS::Inode>> create_dir_inode(SharedPtr<VFS::Inode> parent) override;
Result<SharedPtr<VFS::Inode>> create_device_inode(u32 major, u32 minor) override;
Result<SharedPtr<VFS::Inode>> create_symlink_inode(StringView link) override;
Result<void> set_mount_dir(SharedPtr<VFS::Inode> parent) override;
static Result<SharedPtr<VFS::FileSystem>> create();
2023-05-23 20:45:24 +02:00
dev_t host_device_id() const override
{
return m_host_device_id;
}
virtual ~FileSystem() = default;
private:
2023-05-23 20:45:24 +02:00
FileSystem();
void set_root(SharedPtr<VFS::Inode> root);
SharedPtr<VFS::Inode> m_root_inode;
2023-02-25 18:06:23 +01:00
Atomic<usize> m_next_inode_number { 2 };
2023-05-23 20:45:24 +02:00
dev_t m_host_device_id;
};
}