借用、完成与观察者生命周期

调用方拥有请求与缓冲区存储。已接受异步 I/O 借用存储;拒绝不借用。取消、截止时间或失败停止都不能撤销借用。这防止 IRQ/DMA 或执行者访问已复用内存。生命周期合同和公共操作声明定义精确上下文与结果行为。

事件

存储责任

拒绝准入

不保留请求/缓冲区引用或残留硬件效果

接受准入

保持请求和缓冲区有效,直到 acquire 观察 SETTLED

Cancel 或截止时间

请求终止;继续必要进度并保留借用

DMA 完成

内存引擎阶段完成;wire/发布者引用可能仍存在

失败排空 / QUARANTINED

保留存储与明确恢复责任

SETTLED 发布

必要引用排空后,提供者最终访问已结束

观察者/控制复用

还需 detach/drain 匹配 epoch,并 join 观察者

当前借用请求状态与最终结束证明义务

FIG-06 不把 REJECTED/ACCEPTED 当成请求状态枚举。Core 辅助函数不能观察外设物理排空;提供者必须先建立证明,才能发布结束。

三种不同的完成事实

当前 UART/SPI 内存、线上与最终发布顺序

FIG-07 分开内存完成、线上完成与最终发布。UART TC 不是 NDTR 为零;SPI 空闲和 CS 区间不是 DMA 中断。Release 发布 SETTLED 前,必须关闭并解除实际 IRQ/DMA/队列引用。调用方 acquire 观察后才能取得最终 result/count。超时结果只有经过这一生命周期才能最终成立,不能在截止时间到达时直接认定。

跨任务控制与连续流

远程控制使用稳定槽和单调递增 epoch。不得传递另一任务能够复用存储的裸指针。释放槽并准备下一请求前,必须解除控制/观察者引用并 join 观察者。代次计数可检测过期身份,但自身不会 join 任务。

连续接收与 ADC 使用调用者显式拥有的块借用。消费者必须保持块不可变,直到匹配释放成功。生产者发布旧硬件 bank 前,必须取得替换目标;无法替换时显式停止或施加背压,绝不能覆盖消费者。停止需等待正在填充、就绪及已借用的块,而不只是活动 DMA。流合同说明丢失计数与软件时间戳能够证明及不能证明的范围。

当前连续块生产者、替换与借用块排空

FIG-15 包括可见丢失和停止/drain 责任。容量与服务延迟预算是明确的产品输入;不能承诺任意 IRQ 延迟或消费者速度下无损。教程执行拒绝和隔离;OS 停机说明等待与 join 责任。