Path: blob/main/system/lib/wasmfs/backends/opfs_backend.h
6175 views
#include <vector>12#include <emscripten/proxying.h>34#include "backend.h"56using namespace wasmfs;78extern "C" {910// Ensure that the root OPFS directory is initialized with ID 0.11void _wasmfs_opfs_init_root_directory(em_proxying_ctx* ctx);1213// Look up the child under `parent` with `name`. Write 1 to `child_type` if it's14// a regular file or 2 if it's a directory. Write the child's file or directory15// ID to `child_id`, or -1 if the child does not exist, or -2 if the child16// exists but cannot be opened.17void _wasmfs_opfs_get_child(em_proxying_ctx* ctx,18int parent,19const char* name,20int* child_type,21int* child_id);2223// Create a file under `parent` with `name` and store its ID in `child_id`.24void _wasmfs_opfs_insert_file(em_proxying_ctx* ctx,25int parent,26const char* name,27int* child_id);2829// Create a directory under `parent` with `name` and store its ID in `child_id`.30void _wasmfs_opfs_insert_directory(em_proxying_ctx* ctx,31int parent,32const char* name,33int* child_id);3435void _wasmfs_opfs_move_file(em_proxying_ctx* ctx,36int file_id,37int new_parent_id,38const char* name,39int* err);4041void _wasmfs_opfs_remove_child(em_proxying_ctx* ctx,42int dir_id,43const char* name,44int* err);4546void _wasmfs_opfs_get_entries(em_proxying_ctx* ctx,47int dirID,48std::vector<Directory::Entry>* entries,49int* err);5051void _wasmfs_opfs_open_access(em_proxying_ctx* ctx,52int file_id,53int* access_id);5455void _wasmfs_opfs_open_blob(em_proxying_ctx* ctx, int file_id, int* blob_id);5657void _wasmfs_opfs_close_access(em_proxying_ctx* ctx, int access_id, int* err);5859void _wasmfs_opfs_close_blob(int blob_id);6061void _wasmfs_opfs_free_file(int file_id);6263void _wasmfs_opfs_free_directory(int dir_id);6465// Synchronous read. Return the number of bytes read.66int _wasmfs_opfs_read_access(int access_id,67uint8_t* buf,68uint32_t len,69off_t pos);7071int _wasmfs_opfs_read_blob(em_proxying_ctx* ctx,72int blob_id,73uint8_t* buf,74uint32_t len,75off_t pos,76int32_t* nread);7778// Synchronous write. Return the number of bytes written.79int _wasmfs_opfs_write_access(int access_id,80const uint8_t* buf,81uint32_t len,82off_t pos);8384// Get the size via an AccessHandle.85void _wasmfs_opfs_get_size_access(em_proxying_ctx* ctx,86int access_id,87off_t* size);8889off_t _wasmfs_opfs_get_size_blob(int blob_id);9091// Get the size of a file handle via a File Blob.92void _wasmfs_opfs_get_size_file(em_proxying_ctx* ctx, int file_id, off_t* size);9394void _wasmfs_opfs_set_size_access(em_proxying_ctx* ctx,95int access_id,96off_t size,97int* err);9899void _wasmfs_opfs_set_size_file(em_proxying_ctx* ctx,100int file_id,101off_t size,102int* err);103104void _wasmfs_opfs_flush_access(em_proxying_ctx* ctx, int access_id, int* err);105106} // extern "C"107108109