xtos_ spsc_ pop
从队列取出一帧,将元数据和样本复制到调用方提供的输出存储。
本页目录
声明
#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);参数
| 参数 | 类型 | 说明 |
|---|---|---|
| queue | struct xtos_spsc_queue * | 非 NULL 的已创建队列。 |
| frame | struct xtos_sample_frame * | 非 NULL 输出结构;成功后 samples_nv 指向 samples_nv。 |
| samples_nv | int32_t * | 非 NULL 输出数组,至少 samples_capacity 个元素。 |
| samples_capacity | size_t | 输出数组容量,以 int32 元素计,至少等于队列通道数。 |
返回值
成功返回 0;空队列或参数错误返回 -1。
错误
| errno | 条件 |
|---|---|
| EINVAL | 指针为 NULL,或 samples_capacity 小于队列通道数。 |
| EAGAIN | 当前没有可取帧;输出 frame 和数组不应被当作新结果使用。 |
注意事项
- 样本被复制到调用方数组;下一次复用该数组会使之前返回 frame.samples_nv 的内容失效。
- pop 不分配内存,且只能由唯一消费者调用;空队列不消费数据。
示例
源码
本文按 OpenXTOS 提交 dd313955ad57542bcd2af8827157d1bbd0cf5e83 的头文件和实现编写。