starkernel: item 3.4 -- density ranking
Punch list §25 item 3.4 complete. stadium_density(cell_index) reads a header's heat and mass and returns heat / mass -- a division on demand from fields already stored in the cell, matching §19.3's "read, not computed by a scheduler" literally. Stays valid Q48.16 without a special fixed-point routine, since heat is already Q48.16 and mass is a plain integer divisor. mass == 0 and an out-of-range cell_index both return 0 rather than dividing by zero -- an empty or never-admitted slot has no footprint to be dense within. Deliberately not built here, per the item's own wording: finding the densest or least-dense resident (§19.3's admission/eviction comparison) is item 3.5's scope, not this one's. Nothing calls stadium_density() yet either. Verified: three-architecture boot (amd64, aarch64, riscv64), all reaching ok> with identical dict_hash=0x3d4e1daf289da94f matching the item-3.3 baseline. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
378d688898
commit
0b47c256fc
@@ -150,4 +150,23 @@ void stadium_dispatch(size_t cell_index, StadiumBehaviour behaviour) {
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* FABRIC.md §19.2/§19.3: density is heat / mass, read on demand from fields
|
||||
* already in the header -- not a value a scheduler maintains. mass == 0
|
||||
* (an empty or never-admitted slot; everything is zero-initialized until
|
||||
* something is actually born into the Stadium, which nothing yet does)
|
||||
* returns 0 rather than dividing by zero. An out-of-range cell_index also
|
||||
* returns 0 -- there is no patron there to be dense.
|
||||
*/
|
||||
uint64_t stadium_density(size_t cell_index) {
|
||||
StadiumPatronHeader *header;
|
||||
|
||||
if (cell_index >= stadium_ncells) return 0;
|
||||
|
||||
header = &stadium_cell_array[cell_index].header;
|
||||
if (header->mass == 0) return 0;
|
||||
|
||||
return header->heat / (uint64_t)header->mass;
|
||||
}
|
||||
|
||||
#endif /* __STARKERNEL__ */
|
||||
Reference in New Issue
Block a user