Readiness is a property of the stream now

This figure documents the historical i386 source baseline. Current native x86-64/AArch64 qualification is recorded separately; this is not an ELF64 or native SMP implementation diagram.

Writers
4096-byte ringhead + byte count
Readers
Level-triggered readiness from current stream state
EndpointConditionResult
ReadBytes presentREAD
ReadNo writersREAD + HUP; drain then EOF
WriteReaders + free spaceWRITE
WriteNo readersHUP + ERROR; broken pipe
EitherEmpty / full, peer still presentOperation may WOULD_BLOCK

EOF and broken pipe derive from endpoint reference counts, not a special byte in the stream.

Text equivalent and source references
  • A read endpoint is ready when bytes exist or no writers remain. After buffered bytes drain, no writers means EOF; readiness also reports HUP.
  • A write endpoint is ready when readers exist and the 4096-byte ring has space. No readers yields HUP plus ERROR and writes report broken pipe. Empty/full streams with a peer present may return WOULD_BLOCK.

State / result matrix. Source paths refer to the atlas baseline; the kernel checkout is private.

  • kernel/core/user_io.c · stream_t, readiness, user_io_read, user_io_write