59 lines
1.3 KiB
C++
59 lines
1.3 KiB
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);
|
|
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);
|
|
}
|
|
|
|
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);
|
|
|
|
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;
|
|
}; |