wandering1
1d1a9d4656
net/ui: UI 推流加就绪门控,刷新脱离 netTask 往返(销项 N-10)
新增 net_can_accept() / net_can_read():纯 RAM 读 Socket 控制块,不入队、
不等 netTask 回执,供实时性敏感任务在发 RPC 前判断"有没有活"。
ui_net_sink_poll() 改为先门控再 RPC;无客户端时 RPC 从 100 msg/s 降到 0。
两条兜底(门控引入的新卡死路径,设计阶段未预见):
- I-2 每 32 轮无条件 recv:readable 仅由 RECV_OK 中断置位,Trap 22 三类
对账不含"RX 非空但 readable=0",纯门控会把已到达的数据永久藏住;
- I-3 门控返 0 时查监听控制块,消失即 g_listen=-1 重建(改前靠每轮
accept 撞 BADF 暴露,门控会连这条暴露路径一起消掉)。
net_can_read() 对非 ESTABLISHED / 非法 fd 故意返 1,让上层必得 EOF/BADF
走既有错误分支——返 0 会把死连接永久藏住。
模拟器后端恒返 1(Winsock 无 RPC 成本,行为逐位不变)。
实测:uis 50ms→1µs、uiw 50ms→11.4ms(只剩 LVGL);@build 0 错 0 警、
@test 10/10 PASS(uis≤1µs、uisn≡0、0 task stall、0 [ERR])、
check_remo_sink.py e2e 0/25600 位差异、内容页文本断言 50/50。
uip 最坏 61ms 是 LVGL 帧周期地板、与网络无关,判据已按实测修订。
方案 B(把推流搬出 uiTask + 帧 seqlock)已评估并决定不做:搬任务不会
让刷新变快,收益只剩极端并发下的观感隔离,成本含必改 .ioc 的 CubeMX
重生成。残留暴露与观测手段(uis/uisn)如实记录在 §9.4。
N-19 / C7 不入登记簿(当日结案),结论沉淀进问题记录 §9。
2026-10-10 20:47:59 +08:00
..
2026-09-26 12:25:36 +08:00
2026-09-14 19:05:00 +08:00
2026-09-14 19:05:00 +08:00
2026-09-09 17:15:04 +08:00
2026-09-09 17:15:04 +08:00
2026-09-14 19:05:00 +08:00
2026-09-13 19:38:30 +08:00
2026-09-13 19:38:30 +08:00
2026-09-13 19:38:14 +08:00
2026-09-08 22:24:45 +08:00
2026-09-14 19:05:00 +08:00
2026-09-07 10:48:18 +08:00
2026-09-21 03:50:54 +08:00
2026-09-11 21:25:02 +08:00
2026-10-10 20:47:59 +08:00
2026-10-10 20:47:59 +08:00
2026-09-09 17:15:04 +08:00
2026-09-09 17:15:04 +08:00
2026-09-09 17:15:04 +08:00
2026-09-09 17:15:04 +08:00
2026-09-09 17:15:04 +08:00
2026-09-09 17:15:04 +08:00
2026-09-15 21:13:20 +08:00
2026-09-10 11:36:33 +08:00
2026-09-14 19:05:00 +08:00
2026-09-10 11:36:33 +08:00
2026-09-26 00:51:53 +08:00
2026-09-26 00:51:53 +08:00
2026-09-26 00:51:53 +08:00
2026-09-26 00:51:53 +08:00
2026-09-21 05:12:18 +08:00
2026-09-21 03:50:54 +08:00
2026-09-10 11:36:33 +08:00
2026-09-26 00:51:53 +08:00
2026-09-26 00:51:53 +08:00