ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_io_vfs.h
Go to the documentation of this file.
1
36
37#pragma once
38
39#ifdef __cplusplus
40extern "C" {
41#endif
42
43#include <stdint.h>
44
45#include "ra8_err.h"
46#include "ra8_fs.h"
47#include "ra8_io_fsfmt.h"
48
60
67
69typedef struct {
71 void* state;
72 uint32_t state_bytes;
73 bool is_open;
75
105
121[[nodiscard]] ra8_err_t ra8_io_vfs_init(void);
122
145[[nodiscard]] ra8_err_t ra8_io_vfs_mount(const char* name, ra8_fs_mount_t* mount);
146
166[[nodiscard]] ra8_err_t ra8_io_vfs_mount_auto(const char* name, const ra8_fs_backend_t* backend);
167
187[[nodiscard]] ra8_err_t ra8_io_vfs_unmount(const char* name);
188
212[[nodiscard]] ra8_err_t
213ra8_io_vfs_open(const char* path, ra8_fs_mode_t mode, ra8_fs_file_t** out_file);
214
232[[nodiscard]] ra8_err_t
233ra8_io_vfs_file_open(const char* path, ra8_fs_mode_t mode, ra8_io_vfs_file_t** out_file);
234
237
239[[nodiscard]] ra8_err_t
240ra8_io_vfs_file_read(ra8_io_vfs_file_t* file, void* buf, uint32_t bytes, uint32_t* out_read);
241
243[[nodiscard]] ra8_err_t
244ra8_io_vfs_file_write(ra8_io_vfs_file_t* file, const void* buf, uint32_t bytes);
245
247[[nodiscard]] ra8_err_t ra8_io_vfs_file_seek(ra8_io_vfs_file_t* file, uint64_t offset_bytes);
248
250[[nodiscard]] ra8_err_t ra8_io_vfs_file_tell(const ra8_io_vfs_file_t* file, uint64_t* out_offset);
251
253[[nodiscard]] ra8_err_t ra8_io_vfs_file_size(const ra8_io_vfs_file_t* file, uint64_t* out_bytes);
254
257
278[[nodiscard]] ra8_err_t ra8_io_vfs_unlink(const char* path);
279
302[[nodiscard]] ra8_err_t ra8_io_vfs_rename(const char* old_path, const char* new_path);
303
337[[nodiscard]] ra8_err_t ra8_io_vfs_stat(const char* path, ra8_io_vfs_stat_t* out);
338
347[[nodiscard]] ra8_err_t ra8_io_vfs_get_caps(const char* name, ra8_io_fsfmt_caps_t* out);
348
356[[nodiscard]] ra8_err_t ra8_io_vfs_free_space(const char* name, ra8_fs_space_t* out);
357
381[[nodiscard]] ra8_err_t ra8_io_vfs_listdir(const char* path, ra8_fs_listdir_cb_t cb, void* ctx);
382
395[[nodiscard]] ra8_err_t ra8_io_vfs_dir_requirements(const char* path,
396 uint32_t* out_bytes,
397 uint8_t* out_align,
398 uint16_t* out_max_open);
399
411[[nodiscard]] ra8_err_t ra8_io_vfs_dir_open(const char* path,
412 ra8_io_vfs_dir_t* directory,
413 void* workspace,
414 uint32_t workspace_bytes);
415
417[[nodiscard]] ra8_err_t
418ra8_io_vfs_dir_next(ra8_io_vfs_dir_t* directory, ra8_fs_dirent_t* out, bool* out_entry);
419
421[[nodiscard]] ra8_err_t ra8_io_vfs_dir_close(ra8_io_vfs_dir_t* directory);
422
449[[nodiscard]] ra8_err_t ra8_io_vfs_mkdir(const char* path);
450
481[[nodiscard]] ra8_err_t ra8_io_vfs_rmdir(const char* path);
482
483#ifdef __cplusplus
484}
485#endif
Error Code Definitions for ra8-firmware.
ra8_err_codes_t ra8_err_t
Canonical error-return type used by every ra8-firmware API.
Definition ra8_err.h:546
Minimal FAT12/FAT16/FAT32 filesystem adapter (read + write).
ra8_fs_mode_t
File-open modes accepted by ra8_fs_open().
void(* ra8_fs_listdir_cb_t)(const char *name, uint8_t attr, uint64_t size, void *ctx)
Callback invoked once per directory entry by ra8_fs_listdir().
ra8_io pluggable filesystem-format registry (probe + capabilities).
ra8_err_t ra8_io_vfs_dir_requirements(const char *path, uint32_t *out_bytes, uint8_t *out_align, uint16_t *out_max_open)
Query cursor workspace requirements for a qualified directory path.
ra8_err_t ra8_io_vfs_listdir(const char *path, ra8_fs_listdir_cb_t cb, void *ctx)
Enumerate a directory named "name:/path".
ra8_err_t ra8_io_vfs_mount(const char *name, ra8_fs_mount_t *mount)
Register a mounted volume under a name.
Definition ra8_io_vfs.c:418
ra8_err_t ra8_io_vfs_free_space(const char *name, ra8_fs_space_t *out)
Query free and total bytes through a mounted format's ops.
Definition ra8_io_vfs.c:723
ra8_err_t ra8_io_vfs_open(const char *path, ra8_fs_mode_t mode, ra8_fs_file_t **out_file)
Open a file by "name:/path".
Definition ra8_io_vfs.c:547
ra8_err_t ra8_io_vfs_file_close(ra8_io_vfs_file_t *file)
Close and always release one format-neutral stream facade.
Definition ra8_io_vfs.c:625
ra8_err_t ra8_io_vfs_file_size(const ra8_io_vfs_file_t *file, uint64_t *out_bytes)
Report a format-neutral stream's size.
Definition ra8_io_vfs.c:686
ra8_err_t ra8_io_vfs_get_caps(const char *name, ra8_io_fsfmt_caps_t *out)
Copy the truthful capabilities of a named mounted format.
Definition ra8_io_vfs.c:711
ra8_io_vfs_limits_t
Static limits for the VFS mount table.
Definition ra8_io_vfs.h:55
@ k_ra8_io_vfs_max_mounts
Concurrent named mounts.
Definition ra8_io_vfs.h:56
@ k_ra8_io_vfs_max_files
Concurrent generic streams.
Definition ra8_io_vfs.h:57
@ k_ra8_io_vfs_name_max
Mount name length incl NUL.
Definition ra8_io_vfs.h:58
ra8_err_t ra8_io_vfs_dir_next(ra8_io_vfs_dir_t *directory, ra8_fs_dirent_t *out, bool *out_entry)
Copy one stable entry or report clean end-of-directory.
ra8_err_t ra8_io_vfs_mkdir(const char *path)
Create a directory named "name:/path".
ra8_err_t ra8_io_vfs_file_sync(ra8_io_vfs_file_t *file)
Explicitly sync a stream, or return not-supported when unavailable.
Definition ra8_io_vfs.c:696
ra8_err_t ra8_io_vfs_unlink(const char *path)
Delete a file by "name:/path".
ra8_err_t ra8_io_vfs_mount_auto(const char *name, const ra8_fs_backend_t *backend)
Probe and mount a block backend through the registered format ops.
Definition ra8_io_vfs.c:466
ra8_err_t ra8_io_vfs_dir_close(ra8_io_vfs_dir_t *directory)
Close and consume one caller-owned VFS directory cursor.
ra8_err_t ra8_io_vfs_file_open(const char *path, ra8_fs_mode_t mode, ra8_io_vfs_file_t **out_file)
Open a format-neutral stream through a mounted format's ops.
Definition ra8_io_vfs.c:598
ra8_err_t ra8_io_vfs_stat(const char *path, ra8_io_vfs_stat_t *out)
Query metadata for "name:/path".
ra8_err_t ra8_io_vfs_rmdir(const char *path)
Remove the empty directory named "name:/path".
ra8_err_t ra8_io_vfs_unmount(const char *name)
Remove a named mount from the table.
Definition ra8_io_vfs.c:490
ra8_err_t ra8_io_vfs_file_read(ra8_io_vfs_file_t *file, void *buf, uint32_t bytes, uint32_t *out_read)
Read bytes through a format-neutral stream.
Definition ra8_io_vfs.c:637
ra8_err_t ra8_io_vfs_dir_open(const char *path, ra8_io_vfs_dir_t *directory, void *workspace, uint32_t workspace_bytes)
Open a format-neutral incremental directory cursor.
ra8_err_t ra8_io_vfs_file_seek(ra8_io_vfs_file_t *file, uint64_t offset_bytes)
Seek a format-neutral stream.
Definition ra8_io_vfs.c:667
ra8_err_t ra8_io_vfs_rename(const char *old_path, const char *new_path)
Rename a file within one mount.
ra8_err_t ra8_io_vfs_file_tell(const ra8_io_vfs_file_t *file, uint64_t *out_offset)
Report a format-neutral stream's current offset.
Definition ra8_io_vfs.c:676
ra8_err_t ra8_io_vfs_init(void)
Reset the VFS mount table to empty.
Definition ra8_io_vfs.c:403
ra8_err_t ra8_io_vfs_file_write(ra8_io_vfs_file_t *file, const void *buf, uint32_t bytes)
Write bytes, or return not-supported when capability-gated.
Definition ra8_io_vfs.c:648
Block-device interface that ra8_fs runs on top of.
Stable directory-entry value copied by ra8_fs_dir_next.
Open-file state.
Cached parse of one mounted FAT volume.
A mounted volume's capacity, free space, and cluster geometry.
Definition ra8_fs_meta.h:84
One decoded on-disk timestamp plus availability facts.
What a filesystem format supports.
One registered filesystem format.
Caller-owned format-neutral directory cursor.
Definition ra8_io_vfs.h:69
void * state
Caller-supplied format state.
Definition ra8_io_vfs.h:71
uint32_t state_bytes
Accessible state extent.
Definition ra8_io_vfs.h:72
bool is_open
VFS lifecycle guard.
Definition ra8_io_vfs.h:73
const ra8_io_fsfmt_t * format
Format owning the cursor state.
Definition ra8_io_vfs.h:70
Opaque, statically-pooled format-neutral file stream.
Publicly opaque stream facade, drawn from s_files.
Definition ra8_io_vfs.c:33
Metadata returned by ra8_io_vfs_stat.
Definition ra8_io_vfs.h:96
uint8_t attr
The entry's own FAT attribute byte.
Definition ra8_io_vfs.h:101
uint64_t size_bytes
File size in bytes (0 for directories).
Definition ra8_io_vfs.h:97
ra8_fs_timestamp_t modified
Last-modified time, when present.
Definition ra8_io_vfs.h:99
bool is_directory
true => path names a directory.
Definition ra8_io_vfs.h:102
ra8_fs_timestamp_t accessed
Last-accessed time/date, when present.
Definition ra8_io_vfs.h:100
ra8_fs_timestamp_t created
Creation time, when present.
Definition ra8_io_vfs.h:98
bool exists
true => the path resolves to an entry.
Definition ra8_io_vfs.h:103