代码拉取完成,页面将自动刷新
同步操作将从 erickhuang/rtos 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#include "os.h"
#define QUE_OPT_PRI (1<<0)
#define QUE_OPT_FIFO (1<<1)
Status_t os_que_create(OS_Que *q, U32 opt)
{
U32 sem_opt;
if (q == NULL) {
return RET_FAILURE;
}
if (opt & QUE_OPT_PRI) {
sem_opt = (SEM_OPT_CNT | SEM_OPT_PRI);
}
else if (opt & QUE_OPT_FIFO) {
sem_opt = (SEM_OPT_CNT | SEM_OPT_FIFO);
}
else {
return RET_FAILURE;
}
list_init(&q->head);
return os_sem_create(&q->sem, sem_opt, SEM_EMPTY);
}
Status_t os_que_put(OS_Que *q, LIST *node)
{
if (!q || !node) {
return RET_FAILURE;
}
os_int_lock();
list_insert(&q->head, node);
os_int_unlock();
return os_sem_give(&q->sem);
}
Status_t os_que_get(OS_Que *q, LIST **out, U32 timeout)
{
if (!q || !out) {
return RET_FAILURE;
}
if (os_sem_take(&q->sem, timeout) == RET_SUCCESS) {
os_int_lock();
if (!is_list_empty(&q->head)) {
*out = q->head.next;
list_delete(&q->head.next);
}
else {
*out = NULL;
}
os_int_unlock();
return RET_SUCCESS;
}
else {
*out = NULL;
return RET_FAILURE;
}
}
Status_t os_que_delete(OS_Que *q)
{
if (q == NULL) {
return RET_FAILURE;
}
os_sem_delete(&q->sem);
return RET_SUCCESS;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。