• src/bench/zmodem/zrx_buf.c

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Mon Aug 24 20:32:03 2026
    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