https://gitlab.synchro.net/main/sbbs/-/commit/9e0b9157c5a32b44fb75b7c9
Added Files:
src/bench/zmodem/zrx_buf.c
Log Message:
bench/zmodem: add zrx_buf, the receive-side counterpart of ztx_buf
ztx_buf answers "how much of a send costs zmodem.c and how much costs the wrapper around it". Nothing answered that for receive, so every receive
figure was a sexyz figure -- and sexyz's recv_byte is 30% of the
instructions in a sexyz receive, code SyncTERM does not share.
zrx_buf links the real zmodem.o behind a plain buffered recv_byte, so what it measures is the engine. That puts 76% of sexyz's excess receive CPU inside zmodem.c, which is the part SyncTERM does share, and makes the engine's own ceiling measurable without driving a GUI end to end.
It is built in the SyncTERM shape, supplying a real is_cancelled callback
where sexyz passes NULL; ZRX_NO_CANCEL=1 switches to sexyz's shape and ZRX_NO_SPAN=1 forces the byte-at-a-time path, so one binary covers all four combinations. As with ztx_buf it is not a SyncTERM throughput model: it
omits the wren and RIP input filters, so it bounds SyncTERM's receive from above rather than predicting it.
Co-Authored-By: Claude Opus 5 (1M context) <
noreply@anthropic.com>
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net