正确等待并停止显式 owner¶
选择可选 Native、FreeRTOS 或 ThreadX adapter 的应用使用本指南。应用拥有 task、stack、notification、queue 和执行进度。Baremetal 没有 scheduler。平台 start 从不启动 kernel。OS 合同保持权威。
避免丢失完成和无限等待¶
以请求锁存的 predicate 为权威。检查完成 predicate,arm notification sequence,再检查,以同一 absolute monotonic deadline 等待,随后再次检查。Wake 只是提示,可能合并或无关。Timeout 后执行合同要求的最终 predicate 观察。不得每次 hint 后重启相对预算,也不得阻塞唯一需要推进的 executor。
FIG-08 表示当前 wait/wake 责任。Provider IRQ sink 必须遵守选定 kernel syscall ceiling;不合法 priority 不得调用 ISR kernel API。ThreadX 有自己复核的 M4/Native 子集和 masking policy,不继承 FreeRTOS port 或 tickless/isolation 能力集。
按依赖顺序停机¶
关闭 client admission,不借用地拒绝新工作。
保持资源 owner/executor 运行。通过稳定 slot 与匹配 epoch 请求取消;取消不释放 accepted 存储。
排空 transfer 和 block loan。Acquire 观察 SETTLED 并读取结果。失败排空保留 QUARANTINED 存储和明确恢复责任。
复用 slot 或 request 前,join producer 并 detach/join control observer。
停止并 join owner。销毁 notification、queue、guard、stack 或 TCB 存储前,确保硬件 IRQ publisher 停止访问并完成必要同步。
只有选定 lifetime 与 kernel clock/Tick ownership 允许时才能 stop platform provider。普通 I/O teardown 不停止正在运行的 scheduler。
返回的 adapter task 保持 parked,直到其唯一外部 lifecycle owner join。Entry function 返回不允许回收 stack/TCB。Raw queue 与 closable queue 具有不同 lifecycle contract;close 不是销毁。失败路径保留所有存储,仅由真实 owner 重试 cleanup。
执行维护中的软件夹具¶
从仓库根目录执行:
python tools/dev/dev.py configure --preset native-debug
python tools/dev/dev.py build --preset native-debug --parallel 4 --target nexus_os_wait_test nexus_uart_owner_mock_test
build/native-debug/bin/nexus_os_wait_test
build/native-debug/bin/nexus_uart_owner_mock_test
两个 binary 都必须完成非空的通过用例。这一 targeted development scope 不替代完整 TDD gate。nexus-examples 的外部 UART owner 应用提供产品 workers;声明 consumer 执行前必须记录其 pin/revision。
物理 scheduler context、IRQ ceiling、FP/MVE 保留、stack 峰值和 wake latency 需要真实 station 证据。不得将 POSIX 行为继承为 MCU 时序。