51 lines
946 B
C
51 lines
946 B
C
|
#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);
|
||
|
}
|
||
|
|
||
|
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);
|
||
|
|
||
|
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;
|
||
|
};
|