XTOS / OPEN SOURCE REAL-TIME SYSTEMOPEN SOURCE · VERSION 0.9.0 · BUILD FROM SOURCE
libxtos-rtxtos_spsc_push

xtos_spsc_push

将一帧元数据和 channels 个纳伏样本复制到队列拥有的槽中。

本页目录

声明

c
#include <xtos/spsc.h>

int xtos_spsc_push(struct xtos_spsc_queue *queue,
                   const struct xtos_sample_frame *frame);

参数

参数类型说明
queuestruct xtos_spsc_queue *非 NULL 的已创建队列;由调用方保证生命周期。
frameconst struct xtos_sample_frame *非 NULL;channels 必须匹配队列,timestamp_ns 必须非零。

返回值

成功返回 0;满队列或参数错误返回 -1。成功后源 frame 和 samples_nv 可复用。

错误

errno条件
EINVALqueue、frame 或 frame->samples_nv 为 NULL,通道数不匹配,或 timestamp_ns 为 0。
EAGAIN队列已满;新帧被拒绝,不覆盖已有帧。

注意事项

  • 实现只检查源指针,不知道其长度;samples_nv 必须至少有 queue channels 个可读 int32。
  • 这是严格 SPSC 操作;实现使用原子 head/tail 发布顺序,但不提供多生产者或多消费者仲裁。
  • sequence、sample_rate_hz、quality_flags 不做语义或连续性校验。

示例

源码

本文按 OpenXTOS 提交 dd313955ad57542bcd2af8827157d1bbd0cf5e83 的头文件和实现编写。