30static const char*
const s_tag =
"ra8_vmem_stream";
66 if (offset >= st->
size) {
70 const uint64_t avail = st->
size - offset;
71 const size_t want = ((uint64_t)len > avail) ? (
size_t)avail : len;
73 uint8_t*
const out = (uint8_t*)buf;
76 uint64_t cur = offset;
82 const uint64_t frame_base = cur - (cur % (uint64_t)fb);
83 const uint32_t in_frame = (uint32_t)(cur - frame_base);
84 const uint32_t frame_room = fb - in_frame;
85 const size_t remaining = want - done;
86 const size_t chunk = (remaining < (size_t)frame_room) ? remaining : (size_t)frame_room;
92 (void)
memcpy(out + done, (
const uint8_t*)page + in_frame, chunk);
static const char * s_tag
Logging / check tag.
Validation and Error-Checking Macros for ra8-firmware.
#define RA8_CHECK_NULL_PTR(ptr, tag, message)
Reject nullptr pointer, returning k_ra8_err_null_ptr.
Error Code Definitions for ra8-firmware.
@ k_ra8_ok
Success – operation completed with all postconditions satisfied.
@ k_ra8_err_invalid_size
Invalid size parameter (too large, too small, or misaligned).
ra8_err_codes_t ra8_err_t
Canonical error-return type used by every ra8-firmware API.
void * memcpy(void *dst, const void *src, size_t n)
Copy memory area between non-overlapping regions.
Byte-range page cache with SLRU eviction (Layer 2, #147).
ra8_err_t ra8_vmem_put(ra8_vmem_t *vm, void *page)
Release one pin on a frame previously returned by ra8_vmem_get.
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.
ra8_err_t ra8_vmem_stream_init(ra8_vmem_stream_t *st, ra8_vmem_t *vm, uint32_t object_id, uint64_t size)
Bind a page-cached paged object to the byte-stream reader.
size_t ra8_vmem_stream_read(void *ctx, uint64_t offset, void *buf, size_t len)
Read len bytes at absolute offset through the page cache.
Read a page-cached object as a seekable byte stream (Layer 2 helper, #147/#151).
uint32_t frame_bytes
Bytes per frame (page size, e.g.
Binds one page-cached object to the byte-stream read adapter.
uint32_t object_id
Paged object id registered in the cache's source.
ra8_vmem_t * vm
Initialised page cache (fixed pool = RAM budget).
uint64_t size
Object length in bytes.
uint32_t frame_bytes
Cache frame size, cached from vm->cfg at init.
Page-cache state (caller-owned; treat as private).
ra8_vmem_cfg_t cfg
The configuration (copied at init).