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

xtos_spsc_pop

从队列取出一帧,将元数据和样本复制到调用方提供的输出存储。

本页目录

声明

c
#include <xtos/spsc.h>

int xtos_spsc_pop(struct xtos_spsc_queue *queue,
                  struct xtos_sample_frame *frame,
                  int32_t *samples_nv, size_t samples_capacity);

参数

参数类型说明
queuestruct xtos_spsc_queue *非 NULL 的已创建队列。
framestruct xtos_sample_frame *非 NULL 输出结构;成功后 samples_nv 指向 samples_nv。
samples_nvint32_t *非 NULL 输出数组,至少 samples_capacity 个元素。
samples_capacitysize_t输出数组容量,以 int32 元素计,至少等于队列通道数。

返回值

成功返回 0;空队列或参数错误返回 -1。

错误

errno条件
EINVAL指针为 NULL,或 samples_capacity 小于队列通道数。
EAGAIN当前没有可取帧;输出 frame 和数组不应被当作新结果使用。

注意事项

  • 样本被复制到调用方数组;下一次复用该数组会使之前返回 frame.samples_nv 的内容失效。
  • pop 不分配内存,且只能由唯一消费者调用;空队列不消费数据。

示例

源码

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