98 goto err_xwobj_activate;
106 goto err_memslice_init;
193 goto err_sem_wait_to;
220 goto err_sem_wait_unintr;
247 goto err_sem_trywait;
280 goto err_sem_wait_to;
307 goto err_sem_wait_unintr;
334 goto err_sem_trywait;
405 goto err_sem_wait_to;
408 *databuf = msg->
data;
432 goto err_sem_wait_unintr;
435 *databuf = msg->
data;
459 goto err_sem_trywait;
462 *databuf = msg->
data;
492 goto err_sem_wait_to;
495 *databuf = msg->
data;
519 goto err_sem_wait_unintr;
522 *databuf = msg->
data;
546 goto err_sem_trywait;
549 *databuf = msg->
data;
xwer_t xwmq_jq_to(struct xwmq *mq, xwsq_t topic, void *data, xwtm_t to)
XWMQ API:限时等待消息槽,成功后将消息发送到消息队列的 首端 (插队)
xwer_t xwmq_trydq(struct xwmq *mq, xwsq_t *topic, void **databuf)
XWMQ API: 尝试从消息队列 首端 接收一条消息
xwer_t xwmq_acquire(xwmq_d mqd)
XWMQ API:检查消息队列对象的标签并增加引用计数
xwer_t xwmq_jq(struct xwmq *mq, xwsq_t topic, void *data)
XWMQ API:等待消息槽,成功后将消息发送到消息队列的 首端 (插队)
xwer_t xwmq_rq_unintr(struct xwmq *mq, xwsq_t *topic, void **databuf)
XWMQ API: 等待从消息队列 尾端 接收一条消息,且等待不可被中断
xwer_t xwmq_tryeq(struct xwmq *mq, xwsq_t topic, void *data)
XWMQ API:尝试获取消息槽,成功后将消息发送到消息队列的 尾端 (入队)
xwer_t xwmq_put(struct xwmq *mq)
XWMQ API:减少消息队列对象的引用计数
xwer_t xwmq_jq_unintr(struct xwmq *mq, xwsq_t topic, void *data)
XWMQ API:等待消息槽,且等待不可被中断, 成功后将消息发送到消息队列的 首端 (插队)
xwer_t xwmq_init(struct xwmq *mq, struct xwmq_msg *txq, xwsz_t num)
XWMQ API:静态方式初始化消息队列
xwer_t xwmq_release(xwmq_d mqd)
XWMQ API:检查消息队列对象的标签并减少引用计数
xwer_t xwmq_fini(struct xwmq *mq)
XWMQ API:销毁静态方式初始化的消息队列对象
xwsq_t xwmq_get_tik(struct xwmq *mq)
XWMQ API:获取消息队列对象的标签
xwer_t xwmq_dq(struct xwmq *mq, xwsq_t *topic, void **databuf)
XWMQ API: 等待从消息队列 首端 接收一条消息
xwer_t xwmq_tryjq(struct xwmq *mq, xwsq_t topic, void *data)
XWMQ API:尝试获取消息槽,成功后将消息发送到消息队列的 首端 (插队)
xwer_t xwmq_rq(struct xwmq *mq, xwsq_t *topic, void **databuf)
XWMQ API: 等待从消息队列 尾端 接收一条消息
xwer_t xwmq_tryrq(struct xwmq *mq, xwsq_t *topic, void **databuf)
XWMQ API: 尝试从消息队列 尾端 接收一条消息
xwer_t xwmq_eq_to(struct xwmq *mq, xwsq_t topic, void *data, xwtm_t to)
XWMQ API:限时等待消息槽,成功后将消息发送到消息队列的 尾端 (入队)
xwer_t xwmq_eq_unintr(struct xwmq *mq, xwsq_t topic, void *data)
XWMQ API:等待消息槽,且等待不可被中断, 成功后将消息发送到消息队列的 尾端 (入队)
xwer_t xwmq_grab(struct xwmq *mq)
XWMQ API:增加消息队列对象的引用计数
xwer_t xwmq_dq_unintr(struct xwmq *mq, xwsq_t *topic, void **databuf)
XWMQ API: 等待从消息队列 首端 接收一条消息,且等待不可被中断
xwer_t xwmq_dq_to(struct xwmq *mq, xwsq_t *topic, void **databuf, xwtm_t to)
XWMQ API: 限时等待从消息队列 首端 接收一条消息
xwer_t xwmq_rq_to(struct xwmq *mq, xwsq_t *topic, void **databuf, xwtm_t to)
XWMQ API: 限时等待从消息队列 尾端 接收一条消息
xwer_t xwmq_eq(struct xwmq *mq, xwsq_t topic, void *data)
XWMQ API:等待消息槽,成功后将消息发送到消息队列的 尾端 (入队)
xwer_t xwmm_memslice_free(struct xwmm_memslice *msa, void *mem)
XWMM API:释放内存切片
xwer_t xwmm_memslice_init(struct xwmm_memslice *msa, xwptr_t origin, xwsz_t total_size, xwsz_t card_size, const char *name, ctor_f ctor, dtor_f dtor)
XWMM API:静态方式初始化内存切片分配器
xwer_t xwmm_memslice_alloc(struct xwmm_memslice *msa, void **membuf)
XWMM API:申请内存切片
static void xwlib_bclst_init_head(struct xwlib_bclst_node *h)
初始化一个链表头。
static void xwlib_bclst_add_tail(struct xwlib_bclst_node *head, struct xwlib_bclst_node *newn)
将一个节点加入链表尾部(链表头的前面)
static void xwlib_bclst_init_node(struct xwlib_bclst_node *n)
初始化一个链表节点。
static void xwlib_bclst_add_head(struct xwlib_bclst_node *head, struct xwlib_bclst_node *newn)
将一个节点加入链表头部(链表头的后面)
static void xwlib_bclst_del_init(struct xwlib_bclst_node *node)
删除一个节点,并重新初始化它
#define xwlib_bclst_last_entry(head, type, member)
获得包含链表最后一个节点的外层结构体的指针。
#define xwlib_bclst_first_entry(head, type, member)
获得包含链表第一个节点的外层结构体的指针。
#define xwcc_derof(baseptr, derclass, member)
将基类结构体指针转换为派生类结构体指针
#define EFAULT
Bad address
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_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_wait_to(struct xwos_sem *sem, xwtm_t to)
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:发布信号量
struct xwlib_bclst_node node
struct xwlib_bclst_node rxq
static struct xwmq_msg * xwmq_msg_get(struct xwmq *mq)
获取一个消息槽
static void xwmq_destruct(struct xwmq *mq)
static void xwmq_msg_put(struct xwmq *mq, struct xwmq_msg *msg)
释放一个消息槽
static const char xwmq_txq_name[]
static xwer_t xwmq_gc(struct xwos_object *obj)
static xwer_t xwmq_activate(struct xwmq *mq, struct xwmq_msg *txq, xwsz_t num, xwobj_gc_f gcfunc)
static struct xwmq_msg * xwmq_choose_tail(struct xwmq *mq)
从消息接收队列尾部选择一条消息
static void xwmq_construct(struct xwmq *mq)
static void xwmq_msg_construct(struct xwmq_msg *msg)
消息槽的构造函数
static struct xwmq_msg * xwmq_choose_head(struct xwmq *mq)
从消息接收队列头部选择一条消息