Files
Espresso/include/fs/ramfs.h

57 lines
1.5 KiB
C
Raw Normal View History

2025-05-28 14:41:02 -05:00
#ifndef _RAM_FS_H
#define _RAM_FS_H
2025-06-17 15:50:07 -05:00
#include <types.h>
2025-05-28 14:41:02 -05:00
2025-06-17 15:50:07 -05:00
#define RAMFS_FILENAME_LEN 32
2025-05-28 14:41:02 -05:00
#define RAMFS_PERM_READ 0x01
#define RAMFS_PERM_WRITE 0x02
#define RAMFS_PERM_EXEC 0x04
#define RAMFS_PERM_ALL (RAMFS_PERM_READ | RAMFS_PERM_WRITE | RAMFS_PERM_EXEC)
2025-06-17 15:50:07 -05:00
#define RAMFS_FILE_DIR 'd'
#define RAMFS_FILE_TEXT 't'
#define RAMFS_FILE_BINARY 'b'
#define RAMFS_FILE_LINK 'l'
#define RAMFS_FILE_NOFILE 'n'
#define RAMFS_ENCR_NONE 'n'
#define RAMFS_ENCR_SIMPLE 's'
typedef struct ramfs_file_header {
char filename[RAMFS_FILENAME_LEN + 1];
char type;
char encryption;
struct ramfs_file_header* content;
struct ramfs_file_header* parent;
struct ramfs_file_header* next;
struct ramfs_file_header* link_target;
void* data_begin;
void* data_end;
int32_t read_offset;
int32_t fd;
} ramfs_file_header_t;
void ramfs_init(void);
ramfs_file_header_t* ramfs_make_root(void);
ramfs_file_header_t* ramfs_get_root(void);
int32_t ramfs_get_files(void);
bool ramfs_get_initialized(void);
ramfs_file_header_t* ramfs_resolve_path(const char* path);
ramfs_file_header_t* ramfs_resolve_fd_dir(ramfs_file_header_t* current, int32_t fd);
ramfs_file_header_t* ramfs_resolve_fd(int32_t fd);
ramfs_file_header_t* ramfs_create_file(char* name, char type, char encryption, ramfs_file_header_t* parent);
int32_t ramfs_delete_file(ramfs_file_header_t* file);
ramfs_file_header_t* ramfs_write_file(ramfs_file_header_t* file, void* data, size_t len);
int32_t ramfs_read_file(ramfs_file_header_t* file, void* buffer, size_t buffer_len);
2025-05-28 14:41:02 -05:00
#endif