A prison site: a caller's storage divided into cellblocks, with the warden that holds them. More...
Go to the source code of this file.
Data Structures | |
| struct | CellOwner |
| Asserts MMGR_CARCER_ALIGN is a power of two. More... | |
| struct | SeriesCellularum |
| One cellblock's state: its bytes, the two boundaries that grow toward each other, the closed word a writer holds, the sink a refused store lands on, and the turnstiles every pass goes through. More... | |
| struct | CarcerMovableInitCfg |
| What a program gives a cellblock for the movable option, once, through its guard's movable_init. More... | |
| struct | CarcerMovableCfg |
| Arguments for the calls that reach a movable cell's bytes, each reading the members it names. More... | |
| struct | MinimumSecurityGuard |
| The minimum security guard over one cellblock: a released cell keeps whatever is in it. More... | |
| struct | MaximumSecurityGuard |
| The maximum security guard over one cellblock: every release zeroes the cell first. More... | |
Macros | |
| #define | MMGR_ENABLE_HW_MEM_CAPACITY_CB |
| Set to 1 to track each tier's high-water mark. | |
| #define | MMGR_CARCER_OWNERS |
| The most owners a program's owner table holds. | |
| #define | MMGR_MOVABLE_SETTLE_PERCENT |
| The fragmentation at which a cellblock's mover sorts its movable cells, as a percentage of the bytes its persistent tier occupies. | |
| #define | MMGR_MOVABLE_READ_MS |
| The milliseconds between the mover's readings of its cellblock. | |
| #define | MMGR_MOVABLE_QUIET_READINGS |
| The readings in a row that must find the cellblock quiet before the mover sorts. | |
| #define | MMGR_MOVABLE_BACKOFF_MOST_MS |
| The longest the mover waits between readings after a sort it backed off from. | |
| #define | MMGR_CARCER_ALIGN |
| Alignment every prisoner is handed out at: one machine word, or the atomic size word's alignment where that is wider. | |
| #define | MMGR_OWNER_PLACE_BITS |
| The owner word a cell carries behind its payload, one machine word laid as fields, high to low: the owner's place in the table, the completion bit, signaling bits, and the nanosecond the cell was taken on the library's clock, rolling over its bits. | |
| #define | MMGR_OWNER_SIGNAL_BITS |
| #define | MMGR_OWNER_TIME_BITS |
| #define | MMGR_OWNER_TIME_MASK |
| #define | MMGR_OWNER_SIGNAL_SHIFT |
| #define | MMGR_OWNER_COMPLETE |
| #define | MMGR_OWNER_PLACE_SHIFT |
| #define | MMGR_OWNER_PLACE_MASK |
| #define | MMGR_OWNER_PLACE(name_, text_) |
| One owner's place in the table, counted from 0, as the enumeration MMGR_OWNERS lays names it. | |
| #define | MMGR_OWNER_RECORD(name_, text_) |
| One owner's record as the table's initializer lays it: its name, its place from 1, nothing counted. | |
| #define | MMGR_OWNER_POINTER(name_, text_) |
| One owner's identity defined: a const pointer to its record in the table, resolved by the linker. | |
| #define | MMGR_OWNER_EXTERN(name_, text_) |
| One owner's identity declared, for the header the owner's module reads it through. | |
| #define | MMGR_OWNERS(list_) |
| The program's owners declared as data: the table laid, its count, and each owner's identity defined. | |
| #define | MMGR_CARCER_HALF_BITS |
| The bits each boundary has in the word that carries both, half the atomic size word, and the mask of a half. | |
| #define | MMGR_CARCER_HALF_MASK |
| #define | MMGR_CARCER_BYTES_MOST |
| The most bytes one cellblock may hold: half a boundary's reach. The other half is the headroom the bumps a round refuses move the boundary into before the next writer settles it. | |
| #define | MMGR_CARCER_WANT_MOST |
| The most payload one bump may ask: the headroom shared by the bumps in flight on the turnstiles' lanes, each of which may move its boundary once past MMGR_CARCER_BYTES_MOST before the refusal stops the rest. A take past it goes to the writer's path at once. | |
| #define | MMGR_CARCER_STATE_HW |
| The high-water members' first values, or nothing where the build tracks none. | |
| #define | MMGR_CARCER_STATE(base_, bytes_) |
| A cellblock's state as it stands over bytes_ bytes at base_ with no cell taken: both tiers empty, every mark at zero, and the turnstiles left to the zeroing of the storage they stand in. | |
| #define | MMGR_MOVABLE_HEAD_BYTES |
| Bytes of the option's state ahead of its turnstiles, which locus_carcerum.c asserts it fits. | |
| #define | MMGR_MOVABLE_CLAIM_BITS |
| The bits of one word of the option's claim bits: one an entry. | |
| #define | MMGR_MOVABLE_STORAGE_BYTES(cells_, width_, rows_) |
| The storage the movable option takes for a table of cells_ entries and rows_ rows of touches. | |
| #define | MMGR_CARCER_MOVABLE_ENTRIES(prisonsite_, name_, wipe_to_zero_on_release_, series_cellularum_) |
| The movable entries of one cellblock, bound to it through series_cellularum_. | |
| #define | MMGR_CARCER_BODY(prisonsite_, type_, name_, wipe_to_zero_on_release_) |
| Everything one cellblock is: its bytes, its state, and the entries bound to it. | |
| #define | MMGR_CARCER_MEM(prisonsite_, type_, name_, wipe_to_zero_on_release_) |
| One cellblock as a member of its site's type. | |
| #define | MMGR_CARCER_SEAT(prisonsite_, type_, name_, wipe_to_zero_on_release_) |
| One cellblock's entries, in the order its guard declares them. | |
| #define | MMGR_MINIMUM_SECURITY(name_) |
| Declares a minimum security cellblock over a pool. | |
| #define | MMGR_MAXIMUM_SECURITY(name_) |
| Declares a maximum security cellblock over a pool. | |
| #define | MMGR_UNTUPLE(...) |
| Strips a tuple's parentheses. | |
| #define | MMGR_CARCER_APPLY(what_, prisonsite_, tuple_) |
| Applies one reader to one cellblock tuple, with the site spliced in ahead of it. | |
| #define | MMGR_CARCER_APPLY_(what_, prisonsite_, ...) |
| Expands to what_(prisonsite_, VA_ARGS). | |
| #define | MMGR_CARCER_W1(what_, prisonsite_, SeriesCellularum1_) |
| Applies the reader to a site's one cellblock tuple. | |
| #define | MMGR_CARCER_W2(what_, prisonsite_, SeriesCellularum1_, SeriesCellularum2_) |
| Applies the reader to a site's two cellblock tuples. | |
| #define | MMGR_CARCER_W3(what_, prisonsite_, SeriesCellularum1_, SeriesCellularum2_, SeriesCellularum3_) |
| Applies the reader to a site's three cellblock tuples. | |
| #define | MMGR_CARCER_W4(what_, prisonsite_, SeriesCellularum1_, SeriesCellularum2_, SeriesCellularum3_, SeriesCellularum4_) |
| Applies the reader to a site's four cellblock tuples. | |
| #define | MMGR_CARCER_W5(what_, prisonsite_, SeriesCellularum1_, SeriesCellularum2_, SeriesCellularum3_, SeriesCellularum4_, SeriesCellularum5_) |
| Applies the reader to a site's five cellblock tuples. | |
| #define | MMGR_CARCER_W6(what_, prisonsite_, SeriesCellularum1_, SeriesCellularum2_, SeriesCellularum3_, SeriesCellularum4_, SeriesCellularum5_, SeriesCellularum6_) |
| Applies the reader to a site's six cellblock tuples. | |
| #define | MMGR_CARCER_W7(what_, prisonsite_, SeriesCellularum1_, SeriesCellularum2_, SeriesCellularum3_, SeriesCellularum4_, SeriesCellularum5_, SeriesCellularum6_, SeriesCellularum7_) |
| Applies the reader to a site's seven cellblock tuples. | |
| #define | MMGR_CARCER_W8(what_, prisonsite_, SeriesCellularum1_, SeriesCellularum2_, SeriesCellularum3_, SeriesCellularum4_, SeriesCellularum5_, SeriesCellularum6_, SeriesCellularum7_, SeriesCellularum8_) |
| Applies the reader to a site's eight cellblock tuples. | |
| #define | MMGR_CARCER_WALK(what_, prisonsite_, ...) |
| Expands the walk matching the cellblock count. | |
| #define | LocusCarcerum(prisonsite_, ...) |
| Declares a prison site and the cellblocks built at it. | |
Typedefs | |
| typedef struct CarcerMovableEntry | CarcerMovableEntry |
| The identity a movable cell's taker holds: a const pointer to the cell's entry in the cellblock's translation table. | |
Functions | |
| uint64_t | mmgr_carcer_hw_clock_ns (void) |
| The library's clock in nanoseconds, which a cell's owner word carries the take on. | |
| embed_bool | mmgr_owner_listed (const CellOwner *owner) |
| Whether an owner is one of the table's. | |
| static size_t | mmgr_owner_in_use (const CellOwner *owner) |
| The payload bytes of the cells an owner has now. | |
| static size_t | mmgr_owner_hw (const CellOwner *owner) |
| The most payload bytes an owner has had at once. | |
| void | mmgr_carcer_hw_misnamed (const CellOwner *named, const CellOwner *cell_owner, size_t bytes) |
| Told of each give or growth that names an owner other than the one the cell counts to. | |
| static size_t | mmgr_series_cellularum_persistent_end (const SeriesCellularum *series) |
| Offset just past the last persistent cell. | |
| static size_t | mmgr_series_cellularum_temporary_top (const SeriesCellularum *series) |
| Offset of the lowest temporary cell. | |
| static embed_bool | mmgr_series_cellularum_idle (const SeriesCellularum *series) |
| Whether no cell is taken from a cellblock. | |
| static size_t | mmgr_series_cellularum_persistent_hw (const SeriesCellularum *series) |
| The furthest a cellblock's persistent tier has reached. | |
| static size_t | mmgr_series_cellularum_temporary_hw (const SeriesCellularum *series) |
| The most bytes a cellblock's temporary tier has taken from the top. | |
| void * | mmgr_persistent_buf_alloc (SeriesCellularum *series, size_t size, const CellOwner *owner) |
| Takes size bytes from a cellblock's persistent tier. | |
| void * | mmgr_persistent_max_security_buf_alloc (SeriesCellularum *series, size_t size, const CellOwner *owner) |
| Takes size bytes from a maximum security cellblock's persistent tier. | |
| void | mmgr_persistent_buf_release (SeriesCellularum *series, void *prisoner, const CellOwner *owner) |
| Releases a prisoner, leaving the cell's bytes as they are. | |
| void | mmgr_persistent_max_security_buf_release (SeriesCellularum *series, void *prisoner, const CellOwner *owner) |
| Zeroes a cell, then releases the prisoner. | |
| void * | mmgr_buf_grow (SeriesCellularum *series, void *prisoner, size_t size, const CellOwner *owner) |
| Grows a cell to size payload bytes in place, where it is the newest cell of its tier. | |
| void * | mmgr_max_security_buf_grow (SeriesCellularum *series, void *prisoner, size_t size, const CellOwner *owner) |
| Grows a cell in place as mmgr_buf_grow does, and zeroes the bytes the growth adds. | |
| void * | mmgr_temporary_buf_alloc (SeriesCellularum *series, size_t size, const CellOwner *owner) |
| Takes size bytes from a cellblock's temporary tier. | |
| void * | mmgr_temporary_max_security_buf_alloc (SeriesCellularum *series, size_t size, const CellOwner *owner) |
| Takes size bytes from a maximum security cellblock's temporary tier. | |
| embed_bool | mmgr_who_owns_buf (const SeriesCellularum *series, const void *at) |
| Whether at lies inside the cellblock's bytes. | |
| const CellOwner * | mmgr_owner_of_buf (const SeriesCellularum *series, const void *prisoner) |
| The owner a cell counts to, read off the word behind its payload. | |
| size_t | mmgr_buf_available (SeriesCellularum *series) |
| The bytes lying between the two tiers. | |
| void | mmgr_zero_buf (void *prisoner, size_t size) |
| Zeroes size bytes at prisoner, releasing nothing. | |
| size_t | mmgr_align_up_buf (size_t size) |
| Rounds size up to a whole machine word. | |
| void | mmgr_series_cellularum_emptied (SeriesCellularum *series) |
| Puts a cellblock back to the state it was declared in: both tiers empty, the closed word and the turnstiles at rest, the option unassigned, and no byte of its storage touched. | |
| void | mmgr_owner_bytes_taken (const CellOwner *owner, size_t bytes) |
| Counts bytes that lie in no cellblock to an owner, as a ring's or a page's are. | |
| void | mmgr_owner_bytes_given (const CellOwner *owner, size_t bytes) |
| Takes bytes mmgr_owner_bytes_taken counted off their owner. | |
| size_t | mmgr_series_cellularum_fragmentation (const SeriesCellularum *series) |
| A cellblock's fragmentation: the bytes its persistent tier occupies and no cell's payload holds, as a percentage of the bytes it occupies. | |
| embed_bool | mmgr_movable_init (SeriesCellularum *series, const CarcerMovableInitCfg *args, embed_bool wipes) |
| Assigns a cellblock's movable option: the translation table, its claim bits, the rows of touches and the mover's thread. A cellblock's guard calls this, as movable_init. | |
| const CarcerMovableEntry * | mmgr_movable_buf_alloc (SeriesCellularum *series, size_t size, const CellOwner *owner) |
| Takes a persistent cell a move may move, and names it in the table. | |
| embed_bool | mmgr_movable_buf_release (SeriesCellularum *series, const CarcerMovableEntry *cell, const CellOwner *owner) |
| Gives a movable cell back and frees its entry. | |
| embed_bool | mmgr_movable_buf_read (const SeriesCellularum *series, const CarcerMovableCfg *args) |
| Copies args->bytes from args->offset of a movable cell to args->dst. | |
| embed_bool | mmgr_movable_buf_write (SeriesCellularum *series, const CarcerMovableCfg *args) |
| Copies args->bytes from args->src to args->offset of a movable cell. | |
| embed_iword | mmgr_movable_buf_compare (const SeriesCellularum *series, const CarcerMovableCfg *args) |
| Orders args->bytes of a movable cell against args->src, or against another cell where args->other_cell is set. | |
| size_t | mmgr_movable_buf_measure (const SeriesCellularum *series, const CarcerMovableCfg *args) |
| The bytes from args->offset of a movable cell to the next zero byte. | |
| embed_bool | mmgr_movable_buf_move (SeriesCellularum *series) |
| Moves one movable cell into the first free cell below it, highest cell first. | |
| void | mmgr_movable_run (SeriesCellularum *series) |
| The mover: what the thread the program gave runs, until its thread_wait answers EMBED_FALSE. | |
| size_t | mmgr_movable_queue_depth (const SeriesCellularum *series) |
| The contexts queued at the cellblock's turnstiles now: those that found every open lane busy and wait for a lane. | |
| embed_bool | mmgr_movable_touches (const SeriesCellularum *series, size_t at, size_t *id, size_t *touches) |
| One row of touches a lane, counted as passes go through it. | |
Variables | |
| CellOwner | mmgr_owner_table [] |
| The program's owner table and the owners in it, which MMGR_OWNERS defines once. | |
| const size_t | mmgr_owner_table_count |
A prison site: a caller's storage divided into cellblocks, with the warden that holds them.
Definition in file locus_carcerum.h.
| #define MMGR_ENABLE_HW_MEM_CAPACITY_CB |
Set to 1 to track each tier's high-water mark.
Definition at line 50 of file locus_carcerum.h.
| #define MMGR_CARCER_OWNERS |
The most owners a program's owner table holds.
Definition at line 63 of file locus_carcerum.h.
| #define MMGR_MOVABLE_SETTLE_PERCENT |
The fragmentation at which a cellblock's mover sorts its movable cells, as a percentage of the bytes its persistent tier occupies.
Definition at line 73 of file locus_carcerum.h.
| #define MMGR_MOVABLE_READ_MS |
The milliseconds between the mover's readings of its cellblock.
Definition at line 81 of file locus_carcerum.h.
| #define MMGR_MOVABLE_QUIET_READINGS |
The readings in a row that must find the cellblock quiet before the mover sorts.
Definition at line 86 of file locus_carcerum.h.
| #define MMGR_MOVABLE_BACKOFF_MOST_MS |
The longest the mover waits between readings after a sort it backed off from.
Definition at line 91 of file locus_carcerum.h.
| #define MMGR_CARCER_ALIGN |
Alignment every prisoner is handed out at: one machine word, or the atomic size word's alignment where that is wider.
Definition at line 107 of file locus_carcerum.h.
| #define MMGR_OWNER_PLACE_BITS |
The owner word a cell carries behind its payload, one machine word laid as fields, high to low: the owner's place in the table, the completion bit, signaling bits, and the nanosecond the cell was taken on the library's clock, rolling over its bits.
Definition at line 175 of file locus_carcerum.h.
| #define MMGR_OWNER_SIGNAL_BITS |
Definition at line 203 of file locus_carcerum.h.
| #define MMGR_OWNER_TIME_BITS |
Definition at line 206 of file locus_carcerum.h.
| #define MMGR_OWNER_TIME_MASK |
Definition at line 207 of file locus_carcerum.h.
| #define MMGR_OWNER_SIGNAL_SHIFT |
Definition at line 208 of file locus_carcerum.h.
| #define MMGR_OWNER_COMPLETE |
Definition at line 209 of file locus_carcerum.h.
| #define MMGR_OWNER_PLACE_SHIFT |
Definition at line 210 of file locus_carcerum.h.
| #define MMGR_OWNER_PLACE_MASK |
Definition at line 211 of file locus_carcerum.h.
| #define MMGR_OWNER_PLACE | ( | name_, | |
| text_ ) |
One owner's place in the table, counted from 0, as the enumeration MMGR_OWNERS lays names it.
| [in] | name_ | The owner's identity, as declared. |
| [in] | text_ | The owner's name as a reader prints it, unread here. |
Definition at line 239 of file locus_carcerum.h.
| #define MMGR_OWNER_RECORD | ( | name_, | |
| text_ ) |
One owner's record as the table's initializer lays it: its name, its place from 1, nothing counted.
| [in] | name_ | The owner's identity, as declared. |
| [in] | text_ | The owner's name as a reader prints it [BORROWS]. |
Definition at line 247 of file locus_carcerum.h.
| #define MMGR_OWNER_POINTER | ( | name_, | |
| text_ ) |
One owner's identity defined: a const pointer to its record in the table, resolved by the linker.
| [in] | name_ | The owner's identity, as declared. |
| [in] | text_ | The owner's name as a reader prints it, unread here. |
Definition at line 256 of file locus_carcerum.h.
| #define MMGR_OWNER_EXTERN | ( | name_, | |
| text_ ) |
One owner's identity declared, for the header the owner's module reads it through.
| [in] | name_ | The owner's identity, as declared. |
| [in] | text_ | The owner's name as a reader prints it, unread here. |
Definition at line 264 of file locus_carcerum.h.
| #define MMGR_OWNERS | ( | list_ | ) |
The program's owners declared as data: the table laid, its count, and each owner's identity defined.
| [in] | list_ | The program's list of owners, a macro taking one macro and applying it to each owner as list_(macro_) expanding to macro_(name_, text_) for every owner, name_ the identity the owner's module names and text_ the name a reader prints. |
Definition at line 277 of file locus_carcerum.h.
| #define MMGR_CARCER_HALF_BITS |
The bits each boundary has in the word that carries both, half the atomic size word, and the mask of a half.
Definition at line 337 of file locus_carcerum.h.
Referenced by mmgr_series_cellularum_temporary_top().
| #define MMGR_CARCER_HALF_MASK |
Definition at line 338 of file locus_carcerum.h.
| #define MMGR_CARCER_BYTES_MOST |
The most bytes one cellblock may hold: half a boundary's reach. The other half is the headroom the bumps a round refuses move the boundary into before the next writer settles it.
Definition at line 347 of file locus_carcerum.h.
| #define MMGR_CARCER_WANT_MOST |
The most payload one bump may ask: the headroom shared by the bumps in flight on the turnstiles' lanes, each of which may move its boundary once past MMGR_CARCER_BYTES_MOST before the refusal stops the rest. A take past it goes to the writer's path at once.
Definition at line 354 of file locus_carcerum.h.
| #define MMGR_CARCER_STATE_HW |
The high-water members' first values, or nothing where the build tracks none.
Definition at line 405 of file locus_carcerum.h.
| #define MMGR_CARCER_STATE | ( | base_, | |
| bytes_ ) |
A cellblock's state as it stands over bytes_ bytes at base_ with no cell taken: both tiers empty, every mark at zero, and the turnstiles left to the zeroing of the storage they stand in.
| [in] | base_ | First byte of the cellblock [BORROWS]. |
| [in] | bytes_ | Bytes in the cellblock. |
Definition at line 415 of file locus_carcerum.h.
| #define MMGR_MOVABLE_HEAD_BYTES |
Bytes of the option's state ahead of its turnstiles, which locus_carcerum.c asserts it fits.
Definition at line 487 of file locus_carcerum.h.
| #define MMGR_MOVABLE_CLAIM_BITS |
The bits of one word of the option's claim bits: one an entry.
Definition at line 490 of file locus_carcerum.h.
| #define MMGR_MOVABLE_STORAGE_BYTES | ( | cells_, | |
| width_, | |||
| rows_ ) |
The storage the movable option takes for a table of cells_ entries and rows_ rows of touches.
| [in] | cells_ | Movable cells the table can name at once. |
| [in] | width_ | The lanes open bound the mover reads quiet under, which takes no storage. |
| [in] | rows_ | Rows of touches. |
Definition at line 501 of file locus_carcerum.h.
| #define MMGR_CARCER_MOVABLE_ENTRIES | ( | prisonsite_, | |
| name_, | |||
| wipe_to_zero_on_release_, | |||
| series_cellularum_ ) |
The movable entries of one cellblock, bound to it through series_cellularum_.
| [in] | prisonsite_ | Site whose name every entry symbol carries. |
| [in] | name_ | Pool whose name the symbols carry alongside the site's. |
| [in] | wipe_to_zero_on_release_ | Security flag, which the option keeps for its releases and moves. |
| [in] | series_cellularum_ | The cellblock's record, as a pointer expression. |
Definition at line 667 of file locus_carcerum.h.
| #define MMGR_CARCER_BODY | ( | prisonsite_, | |
| type_, | |||
| name_, | |||
| wipe_to_zero_on_release_ ) |
Everything one cellblock is: its bytes, its state, and the entries bound to it.
| [in] | prisonsite_ | Site the cellblock is built at, which every emitted symbol carries. |
| [in] | type_ | MinimumSecurityGuard or MaximumSecurityGuard, read by MMGR_CARCER_MEM. |
| [in] | name_ | Pool the cellblock is built over, which is also the name it is reached by as a member of its site [BORROWS]. |
| [in] | wipe_to_zero_on_release_ | 1 where a release zeroes the cell first, 0 where it does not. |
Definition at line 720 of file locus_carcerum.h.
| #define MMGR_CARCER_MEM | ( | prisonsite_, | |
| type_, | |||
| name_, | |||
| wipe_to_zero_on_release_ ) |
One cellblock as a member of its site's type.
| [in] | prisonsite_ | Site the cellblock is built at, unused here. |
| [in] | type_ | MinimumSecurityGuard or MaximumSecurityGuard, the member's type. |
| [in] | name_ | Pool the cellblock is built over, and the name the member is given. |
| [in] | wipe_to_zero_on_release_ | Security flag, unused here. |
Definition at line 785 of file locus_carcerum.h.
| #define MMGR_CARCER_SEAT | ( | prisonsite_, | |
| type_, | |||
| name_, | |||
| wipe_to_zero_on_release_ ) |
One cellblock's entries, in the order its guard declares them.
| [in] | prisonsite_ | Site whose name every entry symbol carries. |
| [in] | type_ | Guard type, unused here. |
| [in] | name_ | Pool whose name the symbols carry alongside the site's. |
| [in] | wipe_to_zero_on_release_ | Security flag, unused here. |
Definition at line 797 of file locus_carcerum.h.
| #define MMGR_MINIMUM_SECURITY | ( | name_ | ) |
Declares a minimum security cellblock over a pool.
| [in] | name_ | Pool the cellblock is built over, which is also the name it is reached by as a member of its site [BORROWS]. |
Definition at line 824 of file locus_carcerum.h.
| #define MMGR_MAXIMUM_SECURITY | ( | name_ | ) |
Declares a maximum security cellblock over a pool.
| [in] | name_ | Pool the cellblock is built over, which is also the name it is reached by as a member of its site [BORROWS]. |
Definition at line 836 of file locus_carcerum.h.
| #define MMGR_UNTUPLE | ( | ... | ) |
Strips a tuple's parentheses.
| [in] | ... | The tuple's elements, which its own parentheses deliver as this macro's arguments. |
Definition at line 845 of file locus_carcerum.h.
| #define MMGR_CARCER_APPLY | ( | what_, | |
| prisonsite_, | |||
| tuple_ ) |
Applies one reader to one cellblock tuple, with the site spliced in ahead of it.
| [in] | what_ | Reader to apply: MMGR_CARCER_BODY, MMGR_CARCER_MEM or MMGR_CARCER_SEAT. |
| [in] | prisonsite_ | Site, which reaches the reader ahead of the tuple's own elements. |
| [in] | tuple_ | One MMGR_MINIMUM_SECURITY or MMGR_MAXIMUM_SECURITY tuple. |
Definition at line 857 of file locus_carcerum.h.
| #define MMGR_CARCER_APPLY_ | ( | what_, | |
| prisonsite_, | |||
| ... ) |
Expands to what_(prisonsite_, VA_ARGS).
| [in] | what_ | Reader to apply. |
| [in] | prisonsite_ | Site, which reaches the reader ahead of the elements. |
| [in] | ... | The tuple's elements, already flattened by MMGR_UNTUPLE. |
Definition at line 870 of file locus_carcerum.h.
| #define MMGR_CARCER_W1 | ( | what_, | |
| prisonsite_, | |||
| SeriesCellularum1_ ) |
Applies the reader to a site's one cellblock tuple.
| [in] | what_ | Reader to apply: MMGR_CARCER_BODY, MMGR_CARCER_MEM or MMGR_CARCER_SEAT. |
| [in] | prisonsite_ | Site, which reaches the reader ahead of the tuple's own elements. |
| [in] | SeriesCellularum1_ | The cellblock's tuple. |
Definition at line 880 of file locus_carcerum.h.
| #define MMGR_CARCER_W2 | ( | what_, | |
| prisonsite_, | |||
| SeriesCellularum1_, | |||
| SeriesCellularum2_ ) |
Applies the reader to a site's two cellblock tuples.
| [in] | what_ | Reader to apply. |
| [in] | prisonsite_ | Site, which reaches the reader with every tuple. |
| [in] | SeriesCellularum1_ | First cellblock's tuple, which MMGR_CARCER_W1 takes. |
| [in] | SeriesCellularum2_ | Second cellblock's tuple, applied after it. |
Definition at line 893 of file locus_carcerum.h.
| #define MMGR_CARCER_W3 | ( | what_, | |
| prisonsite_, | |||
| SeriesCellularum1_, | |||
| SeriesCellularum2_, | |||
| SeriesCellularum3_ ) |
Applies the reader to a site's three cellblock tuples.
| [in] | what_ | Reader to apply. |
| [in] | prisonsite_ | Site, which reaches the reader with every tuple. |
| [in] | SeriesCellularum1_ | First cellblock's tuple. |
| [in] | SeriesCellularum2_ | Second cellblock's tuple. |
| [in] | SeriesCellularum3_ | Third cellblock's tuple, applied after MMGR_CARCER_W2 expands the first two. |
Definition at line 907 of file locus_carcerum.h.
| #define MMGR_CARCER_W4 | ( | what_, | |
| prisonsite_, | |||
| SeriesCellularum1_, | |||
| SeriesCellularum2_, | |||
| SeriesCellularum3_, | |||
| SeriesCellularum4_ ) |
Applies the reader to a site's four cellblock tuples.
| [in] | what_ | Reader to apply. |
| [in] | prisonsite_ | Site, which reaches the reader with every tuple. |
| [in] | SeriesCellularum1_ | First cellblock's tuple. |
| [in] | SeriesCellularum2_ | Second cellblock's tuple. |
| [in] | SeriesCellularum3_ | Third cellblock's tuple. |
| [in] | SeriesCellularum4_ | Fourth cellblock's tuple, applied after MMGR_CARCER_W3 expands the first three. |
Definition at line 922 of file locus_carcerum.h.
| #define MMGR_CARCER_W5 | ( | what_, | |
| prisonsite_, | |||
| SeriesCellularum1_, | |||
| SeriesCellularum2_, | |||
| SeriesCellularum3_, | |||
| SeriesCellularum4_, | |||
| SeriesCellularum5_ ) |
Applies the reader to a site's five cellblock tuples.
| [in] | what_ | Reader to apply. |
| [in] | prisonsite_ | Site, which reaches the reader with every tuple. |
| [in] | SeriesCellularum1_ | First cellblock's tuple. |
| [in] | SeriesCellularum2_ | Second cellblock's tuple. |
| [in] | SeriesCellularum3_ | Third cellblock's tuple. |
| [in] | SeriesCellularum4_ | Fourth cellblock's tuple. |
| [in] | SeriesCellularum5_ | Fifth cellblock's tuple, applied after MMGR_CARCER_W4 expands the first four. |
Definition at line 939 of file locus_carcerum.h.
| #define MMGR_CARCER_W6 | ( | what_, | |
| prisonsite_, | |||
| SeriesCellularum1_, | |||
| SeriesCellularum2_, | |||
| SeriesCellularum3_, | |||
| SeriesCellularum4_, | |||
| SeriesCellularum5_, | |||
| SeriesCellularum6_ ) |
Applies the reader to a site's six cellblock tuples.
| [in] | what_ | Reader to apply. |
| [in] | prisonsite_ | Site, which reaches the reader with every tuple. |
| [in] | SeriesCellularum1_ | First cellblock's tuple. |
| [in] | SeriesCellularum2_ | Second cellblock's tuple. |
| [in] | SeriesCellularum3_ | Third cellblock's tuple. |
| [in] | SeriesCellularum4_ | Fourth cellblock's tuple. |
| [in] | SeriesCellularum5_ | Fifth cellblock's tuple. |
| [in] | SeriesCellularum6_ | Sixth cellblock's tuple, applied after MMGR_CARCER_W5 expands the first five. |
Definition at line 957 of file locus_carcerum.h.
| #define MMGR_CARCER_W7 | ( | what_, | |
| prisonsite_, | |||
| SeriesCellularum1_, | |||
| SeriesCellularum2_, | |||
| SeriesCellularum3_, | |||
| SeriesCellularum4_, | |||
| SeriesCellularum5_, | |||
| SeriesCellularum6_, | |||
| SeriesCellularum7_ ) |
Applies the reader to a site's seven cellblock tuples.
| [in] | what_ | Reader to apply. |
| [in] | prisonsite_ | Site, which reaches the reader with every tuple. |
| [in] | SeriesCellularum1_ | First cellblock's tuple. |
| [in] | SeriesCellularum2_ | Second cellblock's tuple. |
| [in] | SeriesCellularum3_ | Third cellblock's tuple. |
| [in] | SeriesCellularum4_ | Fourth cellblock's tuple. |
| [in] | SeriesCellularum5_ | Fifth cellblock's tuple. |
| [in] | SeriesCellularum6_ | Sixth cellblock's tuple. |
| [in] | SeriesCellularum7_ | Seventh cellblock's tuple, applied after MMGR_CARCER_W6 expands the first six. |
Definition at line 977 of file locus_carcerum.h.
| #define MMGR_CARCER_W8 | ( | what_, | |
| prisonsite_, | |||
| SeriesCellularum1_, | |||
| SeriesCellularum2_, | |||
| SeriesCellularum3_, | |||
| SeriesCellularum4_, | |||
| SeriesCellularum5_, | |||
| SeriesCellularum6_, | |||
| SeriesCellularum7_, | |||
| SeriesCellularum8_ ) |
Applies the reader to a site's eight cellblock tuples.
| [in] | what_ | Reader to apply. |
| [in] | prisonsite_ | Site, which reaches the reader with every tuple. |
| [in] | SeriesCellularum1_ | First cellblock's tuple. |
| [in] | SeriesCellularum2_ | Second cellblock's tuple. |
| [in] | SeriesCellularum3_ | Third cellblock's tuple. |
| [in] | SeriesCellularum4_ | Fourth cellblock's tuple. |
| [in] | SeriesCellularum5_ | Fifth cellblock's tuple. |
| [in] | SeriesCellularum6_ | Sixth cellblock's tuple. |
| [in] | SeriesCellularum7_ | Seventh cellblock's tuple. |
| [in] | SeriesCellularum8_ | Eighth cellblock's tuple, applied after MMGR_CARCER_W7 expands the first seven. |
Definition at line 1001 of file locus_carcerum.h.
| #define MMGR_CARCER_WALK | ( | what_, | |
| prisonsite_, | |||
| ... ) |
Expands the walk matching the cellblock count.
| [in] | what_ | Reader to apply: MMGR_CARCER_BODY, MMGR_CARCER_MEM or MMGR_CARCER_SEAT. |
| [in] | prisonsite_ | Site, forwarded to the walk ahead of the tuples. |
| [in] | ... | MMGR_MINIMUM_SECURITY and MMGR_MAXIMUM_SECURITY tuples, one per cellblock. |
Definition at line 1018 of file locus_carcerum.h.
| #define LocusCarcerum | ( | prisonsite_, | |
| ... ) |
Declares a prison site and the cellblocks built at it.
| [in] | prisonsite_ | Name of the site. Its cellblocks are reached as members of it. |
| [in] | ... | MMGR_MINIMUM_SECURITY and MMGR_MAXIMUM_SECURITY declarations, one each. |
Definition at line 1038 of file locus_carcerum.h.
| typedef struct CarcerMovableEntry CarcerMovableEntry |
The identity a movable cell's taker holds: a const pointer to the cell's entry in the cellblock's translation table.
Definition at line 436 of file locus_carcerum.h.
| uint64_t mmgr_carcer_hw_clock_ns | ( | void | ) |
The library's clock in nanoseconds, which a cell's owner word carries the take on.
References mmgr_carcer_hw_clock_ns(), and mmgr_owner_table.
Referenced by mmgr_carcer_hw_clock_ns().
| embed_bool mmgr_owner_listed | ( | const CellOwner * | owner | ) |
Whether an owner is one of the table's.
| [in] | owner | The owner, which may be NULL [BORROWS]. |
References mmgr_owner_listed().
Referenced by mmgr_owner_listed().
|
inlinestatic |
The payload bytes of the cells an owner has now.
| [in] | owner | The owner [BORROWS]. |
Definition at line 302 of file locus_carcerum.h.
References CellOwner::in_use, and mmgr_owner_in_use().
Referenced by mmgr_owner_in_use().
|
inlinestatic |
The most payload bytes an owner has had at once.
| [in] | owner | The owner [BORROWS]. |
Definition at line 314 of file locus_carcerum.h.
References CellOwner::hw, and mmgr_owner_hw().
Referenced by mmgr_owner_hw().
| void mmgr_carcer_hw_misnamed | ( | const CellOwner * | named, |
| const CellOwner * | cell_owner, | ||
| size_t | bytes ) |
Told of each give or growth that names an owner other than the one the cell counts to.
| [in] | named | The owner the give or the growth named [BORROWS]. |
| [in] | cell_owner | The owner the cell counts to, NULL where its owner word names no registered owner [BORROWS]. |
| [in] | bytes | The cell's payload bytes. |
References mmgr_carcer_hw_misnamed().
Referenced by mmgr_carcer_hw_misnamed().
|
inlinestatic |
Offset just past the last persistent cell.
| [in] | series | Cellblock to read [BORROWS]. |
Definition at line 514 of file locus_carcerum.h.
References SeriesCellularum::bounds, and mmgr_series_cellularum_persistent_end().
Referenced by mmgr_series_cellularum_idle(), and mmgr_series_cellularum_persistent_end().
|
inlinestatic |
Offset of the lowest temporary cell.
| [in] | series | Cellblock to read [BORROWS]. |
Definition at line 528 of file locus_carcerum.h.
References SeriesCellularum::bounds, MMGR_CARCER_HALF_BITS, and mmgr_series_cellularum_temporary_top().
Referenced by mmgr_series_cellularum_idle(), and mmgr_series_cellularum_temporary_top().
|
inlinestatic |
Whether no cell is taken from a cellblock.
| [in] | series | Cellblock to read [BORROWS]. |
Definition at line 540 of file locus_carcerum.h.
References mmgr_series_cellularum_idle(), mmgr_series_cellularum_persistent_end(), mmgr_series_cellularum_temporary_top(), and SeriesCellularum::size.
Referenced by mmgr_series_cellularum_idle().
|
inlinestatic |
The furthest a cellblock's persistent tier has reached.
| [in] | series | Cellblock to read [BORROWS]. |
Definition at line 553 of file locus_carcerum.h.
References mmgr_series_cellularum_persistent_hw().
Referenced by mmgr_series_cellularum_persistent_hw().
|
inlinestatic |
The most bytes a cellblock's temporary tier has taken from the top.
| [in] | series | Cellblock to read [BORROWS]. |
Definition at line 570 of file locus_carcerum.h.
References mmgr_series_cellularum_temporary_hw().
Referenced by mmgr_series_cellularum_temporary_hw().
| void * mmgr_persistent_buf_alloc | ( | SeriesCellularum * | series, |
| size_t | size, | ||
| const CellOwner * | owner ) |
Takes size bytes from a cellblock's persistent tier.
| [in,out] | series | Cellblock to take from [BORROWS]. |
| [in] | size | Bytes wanted. |
| [in] | owner | The registered owner the cell is counted to [BORROWS]. |
References MMGR_ALLOC_SIZE, and mmgr_persistent_buf_alloc().
Referenced by mmgr_persistent_buf_alloc().
| void * mmgr_persistent_max_security_buf_alloc | ( | SeriesCellularum * | series, |
| size_t | size, | ||
| const CellOwner * | owner ) |
Takes size bytes from a maximum security cellblock's persistent tier.
| [in,out] | series | Cellblock to take from [BORROWS]. |
| [in] | size | Bytes wanted. |
| [in] | owner | The registered owner the cell is counted to [BORROWS]. |
References mmgr_persistent_max_security_buf_alloc().
Referenced by mmgr_persistent_max_security_buf_alloc().
| void mmgr_persistent_buf_release | ( | SeriesCellularum * | series, |
| void * | prisoner, | ||
| const CellOwner * | owner ) |
Releases a prisoner, leaving the cell's bytes as they are.
| [in,out] | series | Cellblock the prisoner came from [BORROWS]. |
| [in] | prisoner | First byte of the cell [TAKES OWNERSHIP]. |
| [in] | owner | The owner the cell counts to, as its owner word names it [BORROWS]. |
References mmgr_persistent_buf_release().
Referenced by mmgr_persistent_buf_release().
| void mmgr_persistent_max_security_buf_release | ( | SeriesCellularum * | series, |
| void * | prisoner, | ||
| const CellOwner * | owner ) |
Zeroes a cell, then releases the prisoner.
| [in,out] | series | Cellblock the prisoner came from [BORROWS]. |
| [in,out] | prisoner | First byte of the cell, zeroed before release [TAKES OWNERSHIP]. |
| [in] | owner | The owner the cell counts to, as its owner word names it [BORROWS]. |
References mmgr_persistent_max_security_buf_release().
Referenced by mmgr_persistent_max_security_buf_release().
| void * mmgr_buf_grow | ( | SeriesCellularum * | series, |
| void * | prisoner, | ||
| size_t | size, | ||
| const CellOwner * | owner ) |
Grows a cell to size payload bytes in place, where it is the newest cell of its tier.
| [in,out] | series | Cellblock the prisoner came from [BORROWS]. |
| [in,out] | prisoner | First byte of the cell [BORROWS]. |
| [in] | size | Payload bytes the cell is to carry, rounded as a take rounds them. |
| [in] | owner | The owner the cell counts to, as its owner word names it, which the growth is counted to [BORROWS]. |
References MMGR_ALLOC_SIZE, and mmgr_buf_grow().
Referenced by mmgr_buf_grow().
| void * mmgr_max_security_buf_grow | ( | SeriesCellularum * | series, |
| void * | prisoner, | ||
| size_t | size, | ||
| const CellOwner * | owner ) |
Grows a cell in place as mmgr_buf_grow does, and zeroes the bytes the growth adds.
| [in,out] | series | Cellblock the prisoner came from [BORROWS]. |
| [in,out] | prisoner | First byte of the cell [BORROWS]. |
| [in] | size | Payload bytes the cell is to carry. |
| [in] | owner | The owner a persistent cell's growth is counted to [BORROWS]. |
References mmgr_max_security_buf_grow().
Referenced by mmgr_max_security_buf_grow().
| void * mmgr_temporary_buf_alloc | ( | SeriesCellularum * | series, |
| size_t | size, | ||
| const CellOwner * | owner ) |
Takes size bytes from a cellblock's temporary tier.
| [in,out] | series | Cellblock to take from [BORROWS]. |
| [in] | size | Bytes wanted. |
| [in] | owner | The registered owner the cell is counted to [BORROWS]. |
References MMGR_ALLOC_SIZE, and mmgr_temporary_buf_alloc().
Referenced by mmgr_temporary_buf_alloc().
| void * mmgr_temporary_max_security_buf_alloc | ( | SeriesCellularum * | series, |
| size_t | size, | ||
| const CellOwner * | owner ) |
Takes size bytes from a maximum security cellblock's temporary tier.
| [in,out] | series | Cellblock to take from [BORROWS]. |
| [in] | size | Bytes wanted. |
| [in] | owner | The registered owner the cell is counted to [BORROWS]. |
References mmgr_temporary_max_security_buf_alloc().
Referenced by mmgr_temporary_max_security_buf_alloc().
| embed_bool mmgr_who_owns_buf | ( | const SeriesCellularum * | series, |
| const void * | at ) |
Whether at lies inside the cellblock's bytes.
| [in] | series | Cellblock to test against [BORROWS]. |
| [in] | at | Address to test [BORROWS]. |
References mmgr_who_owns_buf().
Referenced by mmgr_who_owns_buf().
| const CellOwner * mmgr_owner_of_buf | ( | const SeriesCellularum * | series, |
| const void * | prisoner ) |
The owner a cell counts to, read off the word behind its payload.
| [in] | series | Cellblock the prisoner came from [BORROWS]. |
| [in] | prisoner | First byte of the cell [BORROWS]. |
References mmgr_owner_of_buf().
Referenced by mmgr_owner_of_buf().
| size_t mmgr_buf_available | ( | SeriesCellularum * | series | ) |
The bytes lying between the two tiers.
| [in,out] | series | Cellblock to read [BORROWS]. |
References mmgr_buf_available().
Referenced by mmgr_buf_available().
| void mmgr_zero_buf | ( | void * | prisoner, |
| size_t | size ) |
Zeroes size bytes at prisoner, releasing nothing.
| [in,out] | prisoner | First byte to clear [BORROWS]. |
| [in] | size | Bytes to clear. |
References mmgr_zero_buf().
Referenced by mmgr_zero_buf().
| size_t mmgr_align_up_buf | ( | size_t | size | ) |
Rounds size up to a whole machine word.
| [in] | size | Count to round. |
References mmgr_align_up_buf().
Referenced by mmgr_align_up_buf().
| void mmgr_series_cellularum_emptied | ( | SeriesCellularum * | series | ) |
Puts a cellblock back to the state it was declared in: both tiers empty, the closed word and the turnstiles at rest, the option unassigned, and no byte of its storage touched.
| [in,out] | series | Cellblock to empty [BORROWS]. |
References mmgr_series_cellularum_emptied().
Referenced by mmgr_series_cellularum_emptied().
| void mmgr_owner_bytes_taken | ( | const CellOwner * | owner, |
| size_t | bytes ) |
Counts bytes that lie in no cellblock to an owner, as a ring's or a page's are.
| [in] | owner | The registered owner [BORROWS]. |
| [in] | bytes | The bytes. |
References mmgr_owner_bytes_taken().
Referenced by mmgr_owner_bytes_taken().
| void mmgr_owner_bytes_given | ( | const CellOwner * | owner, |
| size_t | bytes ) |
Takes bytes mmgr_owner_bytes_taken counted off their owner.
| [in] | owner | The owner they were counted to [BORROWS]. |
| [in] | bytes | The bytes. |
References mmgr_owner_bytes_given().
Referenced by mmgr_owner_bytes_given().
| size_t mmgr_series_cellularum_fragmentation | ( | const SeriesCellularum * | series | ) |
A cellblock's fragmentation: the bytes its persistent tier occupies and no cell's payload holds, as a percentage of the bytes it occupies.
| [in] | series | Cellblock to read [BORROWS]. |
References mmgr_series_cellularum_fragmentation().
Referenced by mmgr_series_cellularum_fragmentation().
| embed_bool mmgr_movable_init | ( | SeriesCellularum * | series, |
| const CarcerMovableInitCfg * | args, | ||
| embed_bool | wipes ) |
Assigns a cellblock's movable option: the translation table, its claim bits, the rows of touches and the mover's thread. A cellblock's guard calls this, as movable_init.
| [in,out] | series | Cellblock the option serves [BORROWS]. |
| [in] | args | The storage, the sizes and the thread's calls [BORROWS]. |
| [in] | wipes | Whether a cell a move leaves or a release gives back is zeroed first. |
References mmgr_movable_init().
Referenced by mmgr_movable_init().
| const CarcerMovableEntry * mmgr_movable_buf_alloc | ( | SeriesCellularum * | series, |
| size_t | size, | ||
| const CellOwner * | owner ) |
Takes a persistent cell a move may move, and names it in the table.
| [in,out] | series | Cellblock to take from [BORROWS]. |
| [in] | size | Bytes wanted. |
| [in] | owner | The registered owner the cell is counted to [BORROWS]. |
References mmgr_movable_buf_alloc().
Referenced by mmgr_movable_buf_alloc().
| embed_bool mmgr_movable_buf_release | ( | SeriesCellularum * | series, |
| const CarcerMovableEntry * | cell, | ||
| const CellOwner * | owner ) |
Gives a movable cell back and frees its entry.
| [in,out] | series | Cellblock the cell is in [BORROWS]. |
| [in] | cell | The cell [BORROWS]. |
| [in] | owner | The owner the cell is counted to [BORROWS]. |
References mmgr_movable_buf_release().
Referenced by mmgr_movable_buf_release().
| embed_bool mmgr_movable_buf_read | ( | const SeriesCellularum * | series, |
| const CarcerMovableCfg * | args ) |
Copies args->bytes from args->offset of a movable cell to args->dst.
| [in,out] | series | Cellblock the cell is in [BORROWS]. |
| [in] | args | The cell, offset, dst and bytes [BORROWS]. |
References mmgr_movable_buf_read().
Referenced by mmgr_movable_buf_read().
| embed_bool mmgr_movable_buf_write | ( | SeriesCellularum * | series, |
| const CarcerMovableCfg * | args ) |
Copies args->bytes from args->src to args->offset of a movable cell.
| [in,out] | series | Cellblock the cell is in [BORROWS]. |
| [in] | args | The cell, offset, src and bytes [BORROWS]. |
References mmgr_movable_buf_write().
Referenced by mmgr_movable_buf_write().
| embed_iword mmgr_movable_buf_compare | ( | const SeriesCellularum * | series, |
| const CarcerMovableCfg * | args ) |
Orders args->bytes of a movable cell against args->src, or against another cell where args->other_cell is set.
| [in,out] | series | Cellblock the cell is in [BORROWS]. |
| [in] | args | The cell, offset, and src or other_cell and other_offset, and bytes [BORROWS]. |
References mmgr_movable_buf_compare().
Referenced by mmgr_movable_buf_compare().
| size_t mmgr_movable_buf_measure | ( | const SeriesCellularum * | series, |
| const CarcerMovableCfg * | args ) |
The bytes from args->offset of a movable cell to the next zero byte.
| [in,out] | series | Cellblock the cell is in [BORROWS]. |
| [in] | args | The cell and offset [BORROWS]. |
References mmgr_movable_buf_measure().
Referenced by mmgr_movable_buf_measure().
| embed_bool mmgr_movable_buf_move | ( | SeriesCellularum * | series | ) |
Moves one movable cell into the first free cell below it, highest cell first.
| [in,out] | series | Cellblock whose cells to move [BORROWS]. |
References mmgr_movable_buf_move().
Referenced by mmgr_movable_buf_move().
| void mmgr_movable_run | ( | SeriesCellularum * | series | ) |
The mover: what the thread the program gave runs, until its thread_wait answers EMBED_FALSE.
| [in,out] | series | Cellblock with the option assigned and thread_wait given [BORROWS]. |
References mmgr_movable_run().
Referenced by mmgr_movable_run().
| size_t mmgr_movable_queue_depth | ( | const SeriesCellularum * | series | ) |
The contexts queued at the cellblock's turnstiles now: those that found every open lane busy and wait for a lane.
| [in] | series | Cellblock to read [BORROWS]. |
References mmgr_movable_queue_depth().
Referenced by mmgr_movable_queue_depth().
| embed_bool mmgr_movable_touches | ( | const SeriesCellularum * | series, |
| size_t | at, | ||
| size_t * | id, | ||
| size_t * | touches ) |
One row of touches a lane, counted as passes go through it.
| [in,out] | series | Cellblock to read [BORROWS]. |
| [in] | at | The row, from 0: the lane of the same place. |
| [out] | id | The id of the last badge through the lane: an owner's place, or a thread's id plus one for a pass naming no owner [BORROWS]. |
| [out] | touches | The passes through the lane so far [BORROWS]. |
References mmgr_movable_touches().
Referenced by mmgr_movable_touches().
|
extern |
The program's owner table and the owners in it, which MMGR_OWNERS defines once.
Referenced by mmgr_carcer_hw_clock_ns().