Luna/kernel/include/fs/TmpFS.h

59 lines
1.3 KiB
C
Raw Normal View History

2022-10-30 20:30:49 +00:00
#pragma once
#include "fs/VFS.h"
namespace TmpFSImpl
{
ssize_t read(VFS::Node* node, size_t offset, size_t size, char* buffer);
ssize_t write(VFS::Node* node, size_t offset, size_t size, char* buffer);
VFS::Node* find(VFS::Node* node, const char* filename);
VFS::Node* readdir(VFS::Node* node, long index);
int mkdir(VFS::Node* node, const char* filename, mode_t mode);
2022-10-30 20:30:49 +00:00
}
class TmpFS
{
public:
VFS::Node* root()
{
return m_root;
}
static TmpFS* create(const char* name);
static void release(TmpFS* fs);
ssize_t read(VFS::Node* node, size_t offset, size_t size, char* buffer);
ssize_t write(VFS::Node* node, size_t offset, size_t size, char* buffer);
VFS::Node* find(VFS::Node* node, const char* filename);
VFS::Node* readdir(VFS::Node* node, long index);
int mkdir(VFS::Node* node, const char* filename, mode_t mode);
2022-10-30 20:30:49 +00:00
void purge();
private:
struct File
{
char* buf;
size_t len;
int valid;
};
struct Directory
{
VFS::Node* buf;
size_t len;
int valid;
};
template <typename T> struct Array
{
T* buf;
size_t len;
};
TmpFS(const char* name);
Array<File> m_files;
Array<Directory> m_dirs;
VFS::Node* m_root;
};