ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
fw_if_fs.h
Go to the documentation of this file.
1
29
30#pragma once
31
32#ifdef __cplusplus
33extern "C" {
34#endif
35
36#include <stddef.h>
37#include <stdint.h>
38
39#include "fw_if_fs_types.h"
40#include "ra8_err.h"
41
43[[nodiscard]] ra8_err_t fw_fs_path_validate(const fw_fs_caps_t* caps, const char* path);
44
46[[nodiscard]] ra8_err_t fw_fs_get_caps(const fw_fs_t* fs, fw_fs_caps_t* out);
47
53[[nodiscard]] ra8_err_t
54fw_fs_stat(const fw_fs_namespace_t* names, const char* path, fw_fs_stat_t* out);
55
61[[nodiscard]] ra8_err_t fw_fs_listdir(const fw_fs_namespace_t* names,
62 const char* path,
63 uint32_t max_entries,
64 fw_fs_list_fn_t callback,
65 void* callback_ctx,
66 uint32_t* out_count,
67 bool* out_complete);
68
70[[nodiscard]] ra8_err_t fw_fs_dir_open(const fw_fs_namespace_t* names,
71 const char* path,
72 fw_fs_dir_t* directory,
73 void* workspace,
74 uint32_t workspace_size);
75
81[[nodiscard]] ra8_err_t
82fw_fs_dir_next(fw_fs_dir_t* directory, fw_fs_dirent_value_t* out, bool* out_entry);
83
85[[nodiscard]] ra8_err_t fw_fs_dir_close(fw_fs_dir_t* directory);
86
88[[nodiscard]] ra8_err_t fw_fs_mkdir(const fw_fs_namespace_t* names, const char* path);
89
91[[nodiscard]] ra8_err_t fw_fs_unlink(const fw_fs_namespace_t* names, const char* path);
92
95[[nodiscard]] ra8_err_t fw_fs_rmdir(const fw_fs_namespace_t* names, const char* path);
96
99[[nodiscard]] ra8_err_t fw_fs_rename(const fw_fs_namespace_t* names,
100 const char* old_path,
101 const char* new_path,
102 bool replace);
103
109[[nodiscard]] ra8_err_t fw_fs_space(const fw_fs_namespace_t* names, fw_fs_space_t* out);
110
112[[nodiscard]] ra8_err_t fw_fs_open(const fw_fs_stream_port_t* streams,
113 const char* path,
115 fw_fs_file_t* file,
116 void* workspace,
117 uint32_t workspace_size);
118
124[[nodiscard]] ra8_err_t
125fw_fs_read(fw_fs_file_t* file, uint8_t* dst, uint32_t cap, uint32_t* out_read);
126
132[[nodiscard]] ra8_err_t
133fw_fs_write(fw_fs_file_t* file, const uint8_t* source, uint32_t length, uint32_t* out_written);
134
136[[nodiscard]] ra8_err_t fw_fs_seek(fw_fs_file_t* file, uint64_t absolute_offset);
137
139[[nodiscard]] ra8_err_t fw_fs_tell(fw_fs_file_t* file, uint64_t* out_offset);
140
142[[nodiscard]] ra8_err_t fw_fs_file_size(fw_fs_file_t* file, uint64_t* out_size);
143
145[[nodiscard]] ra8_err_t fw_fs_sync(fw_fs_file_t* file);
146
152[[nodiscard]] ra8_err_t fw_fs_close(fw_fs_file_t* file);
153
160 const char* destination,
162 fw_fs_transaction_t* transaction,
163 void* workspace,
164 uint32_t workspace_size);
165
171[[nodiscard]] ra8_err_t fw_fs_transaction_write(fw_fs_transaction_t* transaction,
172 const uint8_t* source,
173 uint32_t length,
174 uint32_t* out_written);
175
182[[nodiscard]] ra8_err_t fw_fs_transaction_seek(fw_fs_transaction_t* transaction,
183 uint64_t absolute_offset);
184
190 fw_fs_validate_fn_t validator,
191 void* validator_ctx);
192
203 bool* out_published);
204
206[[nodiscard]] ra8_err_t fw_fs_transaction_abort(fw_fs_transaction_t* transaction);
207
208#ifdef __cplusplus
209}
210#endif
ra8_err_t fw_fs_open(const fw_fs_stream_port_t *streams, const char *path, fw_fs_open_mode_t mode, fw_fs_file_t *file, void *workspace, uint32_t workspace_size)
Open a file into a caller-owned handle and backend workspace.
Definition fw_if_fs.c:648
ra8_err_t fw_fs_transaction_seek(fw_fs_transaction_t *transaction, uint64_t absolute_offset)
Seek the staging writer to an absolute byte offset for bounded backfill.
Definition fw_if_fs.c:917
ra8_err_t fw_fs_listdir(const fw_fs_namespace_t *names, const char *path, uint32_t max_entries, fw_fs_list_fn_t callback, void *callback_ctx, uint32_t *out_count, bool *out_complete)
Enumerate at most max_entries callback entries.
Definition fw_if_fs.c:509
ra8_err_t fw_fs_get_caps(const fw_fs_t *fs, fw_fs_caps_t *out)
Copy the immutable capability snapshot from a complete binding.
Definition fw_if_fs.c:468
ra8_err_t fw_fs_tell(fw_fs_file_t *file, uint64_t *out_offset)
Report the current absolute offset.
Definition fw_if_fs.c:745
ra8_err_t fw_fs_transaction_abort(fw_fs_transaction_t *transaction)
Close and remove an unpublished staging artifact.
Definition fw_if_fs.c:976
ra8_err_t fw_fs_write(fw_fs_file_t *file, const uint8_t *source, uint32_t length, uint32_t *out_written)
Attempt to write all bytes, reporting any accepted prefix.
Definition fw_if_fs.c:718
ra8_err_t fw_fs_stat(const fw_fs_namespace_t *names, const char *path, fw_fs_stat_t *out)
Query a path; a miss is success with out->exists == false.
Definition fw_if_fs.c:480
ra8_err_t fw_fs_transaction_validate(fw_fs_transaction_t *transaction, fw_fs_validate_fn_t validator, void *validator_ctx)
Flush/reopen the stage and ask validator to inspect it read-only.
Definition fw_if_fs.c:929
ra8_err_t fw_fs_rmdir(const fw_fs_namespace_t *names, const char *path)
Remove one empty directory; recursive deletion is deliberately absent.
Definition fw_if_fs.c:584
ra8_err_t fw_fs_read(fw_fs_file_t *file, uint8_t *dst, uint32_t cap, uint32_t *out_read)
Read up to cap bytes; zero bytes is EOF.
Definition fw_if_fs.c:699
ra8_err_t fw_fs_dir_next(fw_fs_dir_t *directory, fw_fs_dirent_value_t *out, bool *out_entry)
Copy one stable directory entry from an open cursor.
ra8_err_t fw_fs_dir_close(fw_fs_dir_t *directory)
Close and consume an open directory cursor, including on close error.
ra8_err_t fw_fs_sync(fw_fs_file_t *file)
Request file synchronization or return k_ra8_err_not_supported.
Definition fw_if_fs.c:771
ra8_err_t fw_fs_transaction_begin(const fw_fs_transaction_port_t *port, const char *destination, fw_fs_transaction_policy_t policy, fw_fs_transaction_t *transaction, void *workspace, uint32_t workspace_size)
Create a hidden sibling staging file for one destination.
Definition fw_if_fs.c:850
ra8_err_t fw_fs_transaction_write(fw_fs_transaction_t *transaction, const uint8_t *source, uint32_t length, uint32_t *out_written)
Append bytes to the private staging artifact.
Definition fw_if_fs.c:892
ra8_err_t fw_fs_close(fw_fs_file_t *file)
Close and consume an open handle.
Definition fw_if_fs.c:783
ra8_err_t fw_fs_rename(const fw_fs_namespace_t *names, const char *old_path, const char *new_path, bool replace)
Rename inside one bound root/volume with optional atomic replacement.
Definition fw_if_fs.c:593
ra8_err_t fw_fs_seek(fw_fs_file_t *file, uint64_t absolute_offset)
Seek to an absolute byte offset from the beginning.
Definition fw_if_fs.c:736
ra8_err_t fw_fs_transaction_commit(fw_fs_transaction_t *transaction, bool *out_published)
Publish a validated stage.
Definition fw_if_fs.c:951
ra8_err_t fw_fs_path_validate(const fw_fs_caps_t *caps, const char *path)
Validate a canonical portable path against a binding's limits.
Definition fw_if_fs.c:286
ra8_err_t fw_fs_space(const fw_fs_namespace_t *names, fw_fs_space_t *out)
Report total/free/used bytes when space-query capability is present.
Definition fw_if_fs.c:623
ra8_err_t fw_fs_unlink(const fw_fs_namespace_t *names, const char *path)
Remove one regular file; directories require fw_fs_rmdir.
Definition fw_if_fs.c:575
ra8_err_t fw_fs_file_size(fw_fs_file_t *file, uint64_t *out_size)
Report the open file's current length.
Definition fw_if_fs.c:758
ra8_err_t fw_fs_dir_open(const fw_fs_namespace_t *names, const char *path, fw_fs_dir_t *directory, void *workspace, uint32_t workspace_size)
Open one directory cursor into caller-owned backend workspace.
ra8_err_t fw_fs_mkdir(const fw_fs_namespace_t *names, const char *path)
Create exactly one directory; parents must already exist.
Definition fw_if_fs.c:566
Portable filesystem value types and caller-owned opaque handles.
ra8_err_t(* fw_fs_validate_fn_t)(void *ctx, fw_fs_file_t *staged)
Validate staged bytes through a read-only generic file handle.
fw_fs_open_mode_t
Open intent for fw_fs_open.
ra8_err_t(* fw_fs_list_fn_t)(void *ctx, const fw_fs_dirent_t *entry, bool *out_continue)
Bounded list callback.
fw_fs_transaction_policy_t
Destination policy for a staged transaction.
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
Static properties and workspace requirements of one bound port.
Caller-owned open directory cursor; fields are private to the facade.
Stable caller-owned value returned by fw_fs_dir_next.
Caller-owned open file; fields are private to the facade.
Independently injectable path/namespace facade.
Portable volume usage snapshot.
Result of a portable metadata query.
Independently injectable open-stream facade.
One complete composition-root filesystem binding.
Independently injectable staged-transaction facade.
Caller-owned transaction; fields are private to the facade.