ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
reader_vmem_internal.h
Go to the documentation of this file.
1
14
15#pragma once
16
17#include <stddef.h>
18#include <stdint.h>
19
20#include "ra8_attributes.h"
21#include "ra8_vmem.h"
22
23#ifndef READER_VMEM_MAX_BUDGET
25#define READER_VMEM_MAX_BUDGET (1024U)
26#endif
27
29typedef enum : uint32_t {
35
37typedef struct {
38 size_t frame_offset;
39 size_t frame_bytes;
40 size_t meta_offset;
41 size_t meta_bytes;
42 size_t key_offset;
43 size_t key_bytes;
45 size_t bucket_bytes;
46 size_t total_bytes;
48
56
67
69[[nodiscard]] RA8_PRIV bool priv_rv_workspace_require(uint32_t budget, rv_workspace_need_t* need);
70
72[[nodiscard]] RA8_PRIV bool priv_rv_workspace_bind(void* backing,
73 size_t backing_bytes,
74 const rv_workspace_need_t* need,
75 rv_workspace_t* workspace);
76
78[[nodiscard]] RA8_PRIV bool priv_rv_trace_begin(const char* path, rv_trace_t* trace);
79
81[[nodiscard]] RA8_PRIV bool
82priv_rv_trace_reference(rv_trace_t* trace, uint32_t object_id, uint32_t frame);
83
85[[nodiscard]] RA8_PRIV bool priv_rv_trace_commit(rv_trace_t* trace);
86
99
111RA8_PRIV void priv_rv_diag(const char* text);
112
124RA8_PRIV void priv_rv_diag_u64(uint64_t value);
Annotation-attribute framework macros for ra8-firmware.
#define RA8_PRIV
Module-private helper: shared across TUs but only inside one library.
Byte-range page cache with SLRU eviction (Layer 2, #147).
ra8_keycache_cell_t ra8_vmem_frame_t
Per-frame cache metadata (one caller-owned array entry per frame).
Definition ra8_vmem.h:122
bool priv_rv_workspace_require(uint32_t budget, rv_workspace_need_t *need)
Query exact split-region requirements for one frame budget.
bool priv_rv_trace_reference(rv_trace_t *trace, uint32_t object_id, uint32_t frame)
Append one exact object/frame reference to a trace transaction.
void priv_rv_diag_u64(uint64_t value)
Write one unsigned decimal diagnostic without stdio.
void priv_rv_diag(const char *text)
Write one best-effort diagnostic fragment to standard error.
bool priv_rv_trace_begin(const char *path, rv_trace_t *trace)
Begin one unpublished same-directory trace transaction.
rv_internal_limit_t
Fixed composition and host-path limits.
@ k_rv_frame_bytes
Bytes per cache frame.
@ k_rv_host_path_cap
Hosted path capacity.
@ k_rv_host_name_cap
Hosted leaf capacity.
@ k_rv_bucket_count
Cache hash-bucket count.
void priv_rv_trace_abort(rv_trace_t *trace)
Close and unlink an unpublished trace.
bool priv_rv_trace_commit(rv_trace_t *trace)
Durably and atomically publish a complete trace.
bool priv_rv_workspace_bind(void *backing, size_t backing_bytes, const rv_workspace_need_t *need, rv_workspace_t *workspace)
Bind typed cache views into an aligned caller-owned backing.
The (object_id, frame-aligned offset) key the page cache hashes on.
Definition ra8_vmem.h:136
Caller-owned atomic trace-publication state.
int trace_fd
Temporary trace handle.
int directory_fd
Parent directory handle.
char temp_name[k_rv_host_name_cap]
Temporary leaf.
bool temp_exists
Temp cleanup guard.
bool io_failed
Sticky exact-I/O fault.
char final_name[k_rv_host_name_cap]
Destination leaf.
uint64_t offset
Next trace byte offset.
Exact byte regions required for one cache budget.
size_t meta_offset
Metadata region offset.
size_t bucket_offset
Hash-bucket region offset.
size_t frame_bytes
Frame-pool region size.
size_t meta_bytes
Metadata region size.
size_t bucket_bytes
Hash-bucket region size.
size_t total_bytes
Exact workspace high-water.
size_t key_offset
Key region offset.
size_t frame_offset
Frame-pool region offset.
size_t key_bytes
Key region size.
Typed views carved from a caller's workspace.
ra8_vmem_key_t * keys
Per-frame key storage.
ra8_vmem_frame_t * meta
Per-frame metadata.
uint8_t * frame_mem
Page-frame pool.
int32_t * buckets
Hash-bucket index heads.