1b5e5d424c
前 24 组全都只用一条 UDP socket,漏掉的正是队列化真正要保的那半句承诺: **等待是一条 socket 自己的事**——串行的是命令,不是等待者。 UDP-25 用 13 条断言钉住两条并存 socket 的四件事:fdB 来包不得结算也不得通知 fdA 的 parked 收包(连它的调用缓冲都不许被写一个字节);fdA 自己的包到达时按 自己那一包的表头结算并恰好通知一次;fdB parked 时 fdA 自己 recvfrom 照常拿到 数据;关停在等的 fdB 必须当场结算、槽位与出参槽都不残留。 写这组时踩到假件的一个真坑,值得记下来:假件的 get_recv_len 是"每次读消耗一格、 最后一格永远重复"的脚本队列,本组前面给同一 fd 留过旧长度,不清就会拿**旧长度配 新内容**(现象是 UDP-25j 读出 12 字节而不是 7 字节),所以每条用例前用 ch395f_fake_reset_recv_len(fd) 归零再宣布——这是测法问题,不是被测代码的问题。 全套 667/667 绿(改造前 470,本次 +13);net_udp.c 仍 237/239 行 14/14 函数, net_socket.c 966/969 行 59/59 函数,模块级覆盖率无回退。