xtos_ spsc_ get_ stats
读取队列的推送、弹出、拒绝和覆盖计数。
本页目录
声明
#include <xtos/spsc.h>
void xtos_spsc_get_stats(const struct xtos_spsc_queue *queue,
struct xtos_spsc_stats *stats);参数
| 参数 | 类型 | 说明 |
|---|---|---|
| queue | const struct xtos_spsc_queue * | 队列指针;NULL 时静默返回。 |
| stats | struct xtos_spsc_stats * | 非 NULL 输出结构;调用方提供存储。 |
输出字段
| 字段 | 类型 | 含义 |
|---|---|---|
| pushed | uint64_t | 表示成功写入队列的完整帧数量。 |
| popped | uint64_t | 表示成功从队列取出的完整帧数量。 |
| rejected_full | uint64_t | 表示因队列已满而被拒绝的 push 次数。 |
| rejected_invalid | uint64_t | 表示因参数无效而被拒绝的 push 次数。 |
| overwritten | uint64_t | 表示被新帧覆盖的帧数量;当前实现不覆盖,读取始终为 0。 |
返回值
无返回值;成功时逐个写入五个计数。
错误
没有 errno 错误返回。输入限制见注意事项。
注意事项
- 各计数分别以原子 relaxed load 读取,不是跨字段一致的事务快照;并发时只能作观测。
- 当前 push 满队列时拒绝而不覆盖,因此 overwritten 在此实现中不会递增,读取到的值始终为 0;该字段保留用于接口统计扩展。
示例
源码
本文按 OpenXTOS 提交 dd313955ad57542bcd2af8827157d1bbd0cf5e83 的头文件和实现编写。