数据队列
优质
小牛编辑
127浏览
2023-12-01
数据队列接口
结构体 | |
struct | rt_data_queue |
数据队列控制块 更多... | |
宏定义 | |
#define | RT_DATAQUEUE_EVENT_UNKNOWN 0x00 |
未知数据队列事件 | |
#define | RT_DATAQUEUE_EVENT_POP 0x01 |
数据队列取出事件 | |
#define | RT_DATAQUEUE_EVENT_PUSH 0x02 |
数据队列写入事件 | |
#define | RT_DATAQUEUE_EVENT_LWM 0x03 |
数据队列数达到设定阈值事件 | |
#define | RT_DATAQUEUE_SIZE(dq) ((dq)->put_index - (dq)->get_index) |
数据队列使用数量 | |
#define | RT_DATAQUEUE_EMPTY(dq) ((dq)->size - RT_DATAQUEUE_SIZE(dq)) |
数据队列空闲数量 | |
函数 | |
rt_err_t | rt_data_queue_init (struct rt_data_queue *queue, rt_uint16_t size, rt_uint16_t lwm, void(*evt_notify)(struct rt_data_queue *queue, rt_uint32_t event)) |
数据队列初始化 | |
rt_err_t | rt_data_queue_push (struct rt_data_queue *queue, const void *data_ptr, rt_size_t data_size, rt_int32_t timeout) |
向数据队列中写入数据 | |
rt_err_t | rt_data_queue_pop (struct rt_data_queue *queue, const void **data_ptr, rt_size_t *size, rt_int32_t timeout) |
取出数据队列中的数据 | |
rt_err_t | rt_data_queue_peak (struct rt_data_queue *queue, const void **data_ptr, rt_size_t *size) |
取出但保留数据队列中的数据 | |
void | rt_data_queue_reset (struct rt_data_queue *queue) |
重置数据队列 | |
详细描述
数据队列接口
函数说明
rt_err_t rt_data_queue_init | ( | struct rt_data_queue * | queue, |
rt_uint16_t | size, | ||
rt_uint16_t | lwm, | ||
void(*)(struct rt_data_queue *queue, rt_uint32_t event) | evt_notify | ||
) |
数据队列初始化
调用该函数将初始化数据队列控制块,并设定通知回调函数。
- 参数
queue 数据队列句柄 size 数据队列块大小 lwm 阈值设定 evt_notify 通知事件回调函数
- 返回
- -RT_ENOMEM 内存不足申请失败; RT_EOK 初始化成功
rt_err_t rt_data_queue_push | ( | struct rt_data_queue * | queue, |
const void * | data_ptr, | ||
rt_size_t | data_size, | ||
rt_int32_t | timeout | ||
) |
向数据队列中写入数据
调用该函数可以向指定的数据队列中写入数据,当数据队列已满,则在指定的超时时间内挂起等待。
- 参数
queue 数据队列句柄 data_ptr 待写入的数据指针 data_size 待写入数据的字节数 timeout 指定超时时间
- 返回
- -RT_ETIMEOUT 队列已满,等待超时;RT_EOK 写入成功
rt_err_t rt_data_queue_pop | ( | struct rt_data_queue * | queue, |
const void ** | data_ptr, | ||
rt_size_t * | size, | ||
rt_int32_t | timeout | ||
) |
取出数据队列中的数据
调用该函数可以从指定的数据队列中取出数据,如果数据队列为空,则在指定的时间内挂起等待。
- 参数
queue 数据队列句柄 data_ptr 待取出的数据指针 size 待取出数据的字节数 timeout 指定超时时间
- 返回
- -RT_ETIMEOUT 队列已空,等待超时;RT_EOK 取出成功
rt_err_t rt_data_queue_peak | ( | struct rt_data_queue * | queue, |
const void ** | data_ptr, | ||
rt_size_t * | size | ||
) |
取出但保留数据队列中的数据
调用该函数可以从指定的数据队列中取出数据,如果数据队列为空,则在指定的时间内挂起等待。
- 参数
queue 数据队列句柄 data_ptr 待取出的数据指针 size 待取出数据的字节数
- 返回
- –RT_EEMPTY 队列已空;RT_EOK 取出成功
void rt_data_queue_reset | ( | struct rt_data_queue * | queue | ) |
重置数据队列
调用该函数将唤醒数据队列上挂起等待的所有线程。
- 参数
queue 数据队列句柄