45 queue->head = (uint8_t *)data;
72 return (0 ==
queue->waiting) ? true :
false;
79 return queue->waiting;
86 uint8_t *ret_value = NULL;
88 if (
queue->waiting > 0) {
89 ret_value = (uint8_t *)(
queue->reader +
queue->size);
90 if (ret_value >=
queue->tail) {
91 ret_value =
queue->head;
120 TAG,
"pos must be XF_TASK_QUEUE_SEND_TO_BACK or XF_TASK_QUEUE_SEND_TO_FRONT");
134 if (
queue->waiting > 0) {
145 if (
queue->waiting > 0) {
bool xf_task_queue_is_full(const xf_task_queue_t *const queue)
判断队列是否已满。
xf_err_t xf_task_queue_receive(xf_task_queue_t *const queue, void *const buffer)
从队列接收一个元素。
xf_err_t xf_task_queue_reset(xf_task_queue_t *const queue)
重置队列。
bool xf_task_queue_is_empty(const xf_task_queue_t *const queue)
判断队列是否为空。
size_t xf_task_queue_available(const xf_task_queue_t *const queue)
获取队列剩余空间。
xf_err_t xf_task_queue_init(xf_task_queue_t *const queue, void *data, const size_t size, const size_t count)
队列对象初始化。
xf_err_t xf_task_queue_remove_front(xf_task_queue_t *const queue)
从队列删除第一个元素。
void * xf_task_queue_peek(const xf_task_queue_t *const queue)
获取队列第一个元素。
size_t xf_task_queue_count(const xf_task_queue_t *const queue)
获取队列数据个数
enum _xf_task_queue_mode_t xf_task_queue_mode_t
消息队列传输模式枚举。
xf_err_t xf_task_queue_send(xf_task_queue_t *const queue, void *item, const xf_task_queue_mode_t pos)
队列发送数据。
#define XF_ASSERT(condition, retval, tag, format,...)
xfusion 断言宏(条件 不成立 时则输出日志后返回)。
int32_t xf_err_t
整形错误类型。 错误码具体值见 xf_err_code_t.
#define xf_memcpy(dest, src, n)
#define xf_bzero(ptr, size)
static xf_osal_queue_t queue
#define XF_LOGE(tag, format,...)
static void copy_data_to_queue(xf_task_queue_t *const queue, const void *item, const bool pos)
static void copy_data_from_queue(xf_task_queue_t *const queue, void *const buffer)
static void move_reader(xf_task_queue_t *const queue)