79 goto err_xwobj_activate;
238 goto err_sem_wait_to;
271 goto err_sem_wait_unintr;
304 goto err_sem_trywait;
343 goto err_sem_wait_to;
376 goto err_sem_wait_unintr;
409 goto err_sem_trywait;
448 goto err_sem_wait_to;
478 goto err_sem_wait_unintr;
508 goto err_sem_trywait;
545 goto err_sem_wait_to;
580 goto err_sem_wait_unintr;
615 goto err_sem_trywait;
xwer_t xwcq_get_availability(struct xwcq *cq, xwsz_t *avbbuf)
XWCQ API: 获取循环队列中有效数据槽的数量
xwer_t xwcq_init(struct xwcq *cq, xwsz_t slotsize, xwsz_t slotnum, xwu8_t *mem)
XWCQ API:初始化循环队列
xwer_t xwcq_dq_to(struct xwcq *cq, xwu8_t *buf, xwsz_t *size, xwtm_t to)
XWCQ API: 限时等待从循环队列的 首端 接收数据 (离队,DeQueue)
xwer_t xwcq_get_capacity(struct xwcq *cq, xwsz_t *capbuf)
XWCQ API: 获取循环队列的容量
xwer_t xwcq_bind(struct xwcq *cq, struct xwos_sel *sel, xwsq_t pos)
XWOS API:绑定循环队列对象到信号选择器
xwsq_t xwcq_get_tik(struct xwcq *cq)
XWCQ API:获取循环队列对象的标签
xwer_t xwcq_prq(struct xwcq *cq, xwu8_t *buf, xwsz_t *size)
XWCQ API: 等待从循环队列 尾端 拷贝数据 (Peek at the Rear of Queue)
xwer_t xwcq_pfq_unintr(struct xwcq *cq, xwu8_t *buf, xwsz_t *size)
XWCQ API: 等待从循环队列 头端 拷贝数据 (Peek at the Front of Queue), 并且等待不可被中断
xwer_t xwcq_tryrq(struct xwcq *cq, xwu8_t *buf, xwsz_t *size)
XWCQ API: 尝试从循环队列的 尾端 接收数据 (反向离队,Reversely deQueue)
xwer_t xwcq_release(xwcq_d cqd)
XWCQ API:检查循环队列对象的标签并增加引用计数
xwer_t xwcq_trydq(struct xwcq *cq, xwu8_t *buf, xwsz_t *size)
XWCQ API: 尝试从循环队列的 首端 接收数据 (离队,DeQueue)
xwer_t xwcq_put(struct xwcq *cq)
XWCQ API:减少循环队列对象的引用计数
xwer_t xwcq_pfq_to(struct xwcq *cq, xwu8_t *buf, xwsz_t *size, xwtm_t to)
XWCQ API: 限时等待从循环队列 头端 拷贝数据 (Peek at the Front of Queue)
xwer_t xwcq_dq_unintr(struct xwcq *cq, xwu8_t *buf, xwsz_t *size)
XWCQ API: 等待从循环队列的 首端 接收数据 (离队,DeQueue), 并且等待不可被中断
xwer_t xwcq_prq_to(struct xwcq *cq, xwu8_t *buf, xwsz_t *size, xwtm_t to)
XWCQ API: 限时等待从循环队列 尾端 拷贝数据 (Peek at the Rear of Queue)
xwer_t xwcq_jq(struct xwcq *cq, const xwu8_t *data, xwsz_t *size)
XWCQ API:将数据发送循环队列的 首端 (插队,Jump the Queue)
xwer_t xwcq_rq(struct xwcq *cq, xwu8_t *buf, xwsz_t *size)
XWCQ API: 等待从循环队列的 尾端 接收数据 (反向离队,Reversely deQueue)
xwer_t xwcq_tryprq(struct xwcq *cq, xwu8_t *buf, xwsz_t *size)
XWCQ API: 尝试从循环队列 尾端 拷贝数据 (Peek at the Rear of Queue)
xwer_t xwcq_get_size(struct xwcq *cq, xwsz_t *szbuf)
XWCQ API: 获取循环队列的单个数据槽的大小
xwer_t xwcq_unbind(struct xwcq *cq, struct xwos_sel *sel)
XWOS API:从信号选择器上解绑循环队列对象
xwer_t xwcq_prq_unintr(struct xwcq *cq, xwu8_t *buf, xwsz_t *size)
XWCQ API: 等待从循环队列 尾端 拷贝数据 (Peek at the Rear of Queue), 并且等待不可被中断
xwer_t xwcq_dq(struct xwcq *cq, xwu8_t *buf, xwsz_t *size)
XWCQ API: 等待从循环队列的 首端 接收数据 (离队,DeQueue)
xwer_t xwcq_eq(struct xwcq *cq, const xwu8_t *data, xwsz_t *size)
XWCQ API:将数据发送到循环队列的 尾端 (入队,EnQueue)
xwer_t xwcq_fini(struct xwcq *cq)
XWCQ API:销毁循环队列对象
xwer_t xwcq_grab(struct xwcq *cq)
XWCQ API:增加循环队列对象的引用计数
xwer_t xwcq_rq_unintr(struct xwcq *cq, xwu8_t *buf, xwsz_t *size)
XWCQ API: 等待从循环队列的 尾端 接收数据 (反向离队,Reversely deQueue), 并且等待不可被中断
xwer_t xwcq_flush(struct xwcq *cq)
XWCQ API: 清空循环队列
xwer_t xwcq_acquire(xwcq_d cqd)
XWCQ API:检查循环队列对象的标签并增加引用计数
xwer_t xwcq_rq_to(struct xwcq *cq, xwu8_t *buf, xwsz_t *size, xwtm_t to)
XWCQ API: 限时等待从循环队列的 尾端 接收数据 (反向离队,Reversely deQueue)
xwer_t xwcq_trypfq(struct xwcq *cq, xwu8_t *buf, xwsz_t *size)
XWCQ API: 尝试从循环队列 头端 拷贝数据 (Peek at the Front of Queue)
xwer_t xwcq_pfq(struct xwcq *cq, xwu8_t *buf, xwsz_t *size)
XWCQ API: 等待从循环队列 头端 拷贝数据 (Peek at the Front of Queue)
#define XWMM_UNALIGNED_MASK
#define xwcc_derof(baseptr, derclass, member)
将基类结构体指针转换为派生类结构体指针
#define EFAULT
Bad address
#define EALIGN
Not aligned
xws64_t xwtm_t
XWOS系统时间 (有符号)
#define XWTM_MAX
xwtm_t 的最大值
xwer_t(* xwobj_gc_f)(struct xwos_object *)
垃圾回收函数指针类型
xwer_t xwos_object_grab(struct xwos_object *obj)
增加对象的引用计数
xwer_t xwos_object_activate(struct xwos_object *obj, xwobj_gc_f gcfunc)
激活一个XWOS对象(将其引用计数初始化位1)
void xwos_object_construct(struct xwos_object *obj)
XWOS对象的构造函数
void xwos_object_destruct(struct xwos_object *obj)
XWOS对象的析构函数
xwer_t xwos_object_release(struct xwos_object *obj, xwsq_t tik)
检查对象的标签并减少引用计数
xwer_t xwos_object_acquire(struct xwos_object *obj, xwsq_t tik)
检查对象的标签并增加引用计数
xwer_t xwos_object_put(struct xwos_object *obj)
减少对象的引用计数
static void xwos_splk_unlock_cpuirqrs(struct xwos_splk *spl, xwreg_t cpuirq)
XWOS API:解锁自旋锁,并恢复本地CPU的中断标志
static void xwos_splk_init(struct xwos_splk *spl)
XWOS API:初始化自旋锁
static void xwos_splk_lock_cpuirqsv(struct xwos_splk *spl, xwreg_t *cpuirq)
XWOS API:上锁自旋锁,保存本地CPU的中断标志并关闭
#define XWOS_VALIDATE(exp, errstr,...)
检查函数参数是否有效
static xwer_t xwos_sem_trywait(struct xwos_sem *sem)
XWOS API:尝试获取信号量
static xwer_t xwos_sem_bind(struct xwos_sem *sem, struct xwos_sel *sel, xwsq_t pos)
XWOS API:绑定信号量对象到信号选择器
static xwer_t xwos_sem_unbind(struct xwos_sem *sem, struct xwos_sel *sel)
XWOS API:从信号选择器上解绑信号量对象
static xwer_t xwos_sem_wait_unintr(struct xwos_sem *sem)
XWOS API:等待并获取信号量,且等待不可被中断
static xwer_t xwos_sem_fini(struct xwos_sem *sem)
XWOS API:销毁静态方式初始化的信号量对象
static xwer_t xwos_sem_freeze(struct xwos_sem *sem)
XWOS API:冻结信号量对象
static xwer_t xwos_sem_wait_to(struct xwos_sem *sem, xwtm_t to)
XWOS API:限时等待并获取信号量
static xwer_t xwos_sem_thaw(struct xwos_sem *sem)
XWOS API:解冻信号量对象
static xwer_t xwos_sem_init(struct xwos_sem *sem, xwssq_t val, xwssq_t max)
XWOS API:静态方式初始化信号量对象
static xwer_t xwos_sem_post(struct xwos_sem *sem)
XWOS API:发布信号量
static xwer_t xwcq_gc(struct xwos_object *obj)
循环队列对象的垃圾回收函数
static void xwcq_destruct(struct xwcq *cq)
循环队列对象的析构函数
static xwer_t xwcq_activate(struct xwcq *cq, xwsz_t slotsize, xwsz_t slotnum, xwobj_gc_f gcfunc)
激活循环队列对象
static void xwcq_construct(struct xwcq *cq, xwu8_t *mem)
循环队列对象的构造函数