ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_vmem.h
Go to the documentation of this file.
1
74
75#pragma once
76
77#ifdef __cplusplus
78extern "C" {
79#endif
80
81#include <stdint.h>
82
83#include "ra8_err.h"
84#include "ra8_keycache.h"
85
105typedef ra8_err_t (*ra8_vmem_loader_fn)(void* ctx,
106 uint32_t object_id,
107 uint64_t offset,
108 uint8_t* frame,
109 uint32_t frame_bytes);
110
123
136typedef struct {
137 uint32_t object_id;
138 uint64_t offset;
140
166
184
207[[nodiscard]] ra8_err_t ra8_vmem_init(ra8_vmem_t* vm, const ra8_vmem_cfg_t* cfg);
208
237[[nodiscard]] ra8_err_t
238ra8_vmem_get(ra8_vmem_t* vm, uint32_t object_id, uint64_t offset, void** out_page);
239
261[[nodiscard]] ra8_err_t ra8_vmem_put(ra8_vmem_t* vm, void* page);
262
297[[nodiscard]] ra8_err_t ra8_vmem_prefetch(ra8_vmem_t* vm, uint32_t object_id, uint64_t offset);
298
321[[nodiscard]] ra8_err_t ra8_vmem_stats(const ra8_vmem_t* vm,
322 uint32_t* out_hits,
323 uint32_t* out_misses,
324 uint32_t* out_evictions);
325
326#ifdef __cplusplus
327}
328#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
The one reusable hash + pin + evict cache engine (#147, #345).
ra8_err_t ra8_vmem_put(ra8_vmem_t *vm, void *page)
Release one pin on a frame previously returned by ra8_vmem_get.
Definition ra8_vmem.c:179
ra8_err_t ra8_vmem_get(ra8_vmem_t *vm, uint32_t object_id, uint64_t offset, void **out_page)
Get (and pin) the frame holding object object_id at offset.
Definition ra8_vmem.c:162
ra8_err_t(* ra8_vmem_loader_fn)(void *ctx, uint32_t object_id, uint64_t offset, uint8_t *frame, uint32_t frame_bytes)
Fill a frame with one page of an object (the storage DIP seam).
Definition ra8_vmem.h:105
ra8_err_t ra8_vmem_init(ra8_vmem_t *vm, const ra8_vmem_cfg_t *cfg)
Initialise a page cache over caller-supplied storage.
Definition ra8_vmem.c:131
ra8_err_t ra8_vmem_stats(const ra8_vmem_t *vm, uint32_t *out_hits, uint32_t *out_misses, uint32_t *out_evictions)
Report the cache hit / miss / eviction counters.
Definition ra8_vmem.c:199
ra8_keycache_cell_t ra8_vmem_frame_t
Per-frame cache metadata (one caller-owned array entry per frame).
Definition ra8_vmem.h:122
ra8_err_t ra8_vmem_prefetch(ra8_vmem_t *vm, uint32_t object_id, uint64_t offset)
Warm the frame holding object object_id at offset into the cache without holding a pin (single-thread...
Definition ra8_vmem.c:186
Per-cell link metadata (one caller-owned array entry per cell).
Cache engine state (caller-owned; treat as private).
Caller-supplied storage + loader for ra8_vmem_init.
Definition ra8_vmem.h:151
uint32_t bucket_count
Number of hash buckets (>= 1).
Definition ra8_vmem.h:158
uint32_t frame_bytes
Bytes per frame (page size, e.g.
Definition ra8_vmem.h:153
ra8_vmem_frame_t * meta
frame_count metadata entries.
Definition ra8_vmem.h:155
int32_t * buckets
bucket_count hash-bucket heads.
Definition ra8_vmem.h:157
uint32_t frame_count
Number of frames.
Definition ra8_vmem.h:154
uint8_t protected_pct
SLRU protected-segment share, 1..100; 0 selects the 75% default.
Definition ra8_vmem.h:161
uint8_t * frame_mem
frame_count * frame_bytes of page storage.
Definition ra8_vmem.h:152
void * loader_ctx
Opaque context passed to loader.
Definition ra8_vmem.h:160
ra8_vmem_key_t * keys
frame_count key-storage entries.
Definition ra8_vmem.h:156
ra8_vmem_loader_fn loader
Page-fill callback (the storage DIP seam).
Definition ra8_vmem.h:159
The (object_id, frame-aligned offset) key the page cache hashes on.
Definition ra8_vmem.h:136
uint64_t offset
Frame-aligned byte offset of the cached page.
Definition ra8_vmem.h:138
uint32_t object_id
Cached object id.
Definition ra8_vmem.h:137
Page-cache state (caller-owned; treat as private).
Definition ra8_vmem.h:179
ra8_vmem_cfg_t cfg
The configuration (copied at init).
Definition ra8_vmem.h:180
ra8_keycache_t kc
The underlying SLRU cache engine.
Definition ra8_vmem.h:181
uint32_t protected_cap
Resolved SLRU protected-segment capacity.
Definition ra8_vmem.h:182