MMgr v1.0.0
Zero-heap memory manager in C11. One borrowed buffer, carved by asserted offset.
Loading...
Searching...
No Matches
MemoriaAnularisNs Struct Reference

Type of the anularis dispatch table. More...

#include <memoria_anularis.h>

Data Fields

embed_bool(*) init (const AnularisCfg *args)
size_t(*) available (const AnularisCfg *args)
size_t(*) vacant (const AnularisCfg *args)
embed_bool(*) read_byte (const AnularisCfg *args)
size_t(*) read (const AnularisCfg *args)
void(*) peek (const AnularisCfg *args)
void(*) consume (const AnularisCfg *args)
embed_bool(*) put (const AnularisCfg *args)
size_t(*) seg_inflight (const AnularisCfg *args)
embed_bool(*) seg_next (const AnularisCfg *args)
void(*) seg_publish (const AnularisCfg *args)
embed_bool(*) seg_front (const AnularisCfg *args)
void(*) seg_release (const AnularisCfg *args)
uint8_t *(*) seg_at (const AnularisCfg *args)
embed_word(*) loculus_ready (const AnularisCfg *args)
embed_iword(*) loculus_next (const AnularisCfg *args)
embed_bool(*) loculus_hold (const AnularisCfg *args)
const mmgr_ring_span *(*) loculus_keepout (const AnularisCfg *args)
void(*) loculus_drop (const AnularisCfg *args)
void(*) loculus_mark (const AnularisCfg *args)

Detailed Description

Type of the anularis dispatch table.

Note
EMBED_TABLE_LAYOUT asserts the twenty members sit at consecutive EMBED_FUNCTION_POINTER_BYTES offsets, with nothing else.
The twenty are mmgr_anular_init and three layers over the same bytes, and that call lays all three down. Seven members follow it for the byte ring, six for the segment view, and six for the loculi.

Definition at line 179 of file memoria_anularis.h.

Field Documentation

◆ init

embed_bool(*) MemoriaAnularisNs::init(const AnularisCfg *args)

Lays a fresh ring into the caller's storage.

Definition at line 181 of file memoria_anularis.h.

◆ available

size_t(*) MemoriaAnularisNs::available(const AnularisCfg *args)

Bytes waiting to be read.

Definition at line 182 of file memoria_anularis.h.

◆ vacant

size_t(*) MemoriaAnularisNs::vacant(const AnularisCfg *args)

Bytes still free to write.

Definition at line 183 of file memoria_anularis.h.

◆ read_byte

embed_bool(*) MemoriaAnularisNs::read_byte(const AnularisCfg *args)

Takes one byte and advances the tail.

Definition at line 184 of file memoria_anularis.h.

◆ read

size_t(*) MemoriaAnularisNs::read(const AnularisCfg *args)

Takes up to bytes and advances the tail once.

Definition at line 185 of file memoria_anularis.h.

◆ peek

void(*) MemoriaAnularisNs::peek(const AnularisCfg *args)

Copies bytes out without advancing the tail.

Definition at line 186 of file memoria_anularis.h.

◆ consume

void(*) MemoriaAnularisNs::consume(const AnularisCfg *args)

Advances the tail past bytes.

Definition at line 187 of file memoria_anularis.h.

◆ put

embed_bool(*) MemoriaAnularisNs::put(const AnularisCfg *args)

Writes a whole span, or refuses it entire.

Definition at line 188 of file memoria_anularis.h.

◆ seg_inflight

size_t(*) MemoriaAnularisNs::seg_inflight(const AnularisCfg *args)

Segments filled and not yet released.

Definition at line 189 of file memoria_anularis.h.

◆ seg_next

embed_bool(*) MemoriaAnularisNs::seg_next(const AnularisCfg *args)

Index of the segment the producer fills next.

Definition at line 190 of file memoria_anularis.h.

◆ seg_publish

void(*) MemoriaAnularisNs::seg_publish(const AnularisCfg *args)

Makes the filled segment visible to the consumer.

Definition at line 191 of file memoria_anularis.h.

◆ seg_front

embed_bool(*) MemoriaAnularisNs::seg_front(const AnularisCfg *args)

Index of the segment the consumer takes next.

Definition at line 192 of file memoria_anularis.h.

◆ seg_release

void(*) MemoriaAnularisNs::seg_release(const AnularisCfg *args)

Frees the front segment.

Definition at line 193 of file memoria_anularis.h.

◆ seg_at

uint8_t *(*) MemoriaAnularisNs::seg_at(const AnularisCfg *args)

The contiguous span of one segment.

Definition at line 194 of file memoria_anularis.h.

◆ loculus_ready

embed_word(*) MemoriaAnularisNs::loculus_ready(const AnularisCfg *args)

Loculi that are free and not pinned.

Definition at line 195 of file memoria_anularis.h.

◆ loculus_next

embed_iword(*) MemoriaAnularisNs::loculus_next(const AnularisCfg *args)

Lowest set bit of a mask, or -1.

Definition at line 196 of file memoria_anularis.h.

◆ loculus_hold

embed_bool(*) MemoriaAnularisNs::loculus_hold(const AnularisCfg *args)

Takes a loculus and records its keepout.

Definition at line 197 of file memoria_anularis.h.

◆ loculus_keepout

const mmgr_ring_span *(*) MemoriaAnularisNs::loculus_keepout(const AnularisCfg *args)

The region a pinned loculus keeps out.

Definition at line 198 of file memoria_anularis.h.

◆ loculus_drop

void(*) MemoriaAnularisNs::loculus_drop(const AnularisCfg *args)

Gives a loculus back, leaving its bytes alone.

Definition at line 199 of file memoria_anularis.h.

◆ loculus_mark

void(*) MemoriaAnularisNs::loculus_mark(const AnularisCfg *args)

Marks a loculus free.

Definition at line 200 of file memoria_anularis.h.


The documentation for this struct was generated from the following file: