XWOS API  4.0
XWOS C/C++ API参考手册
载入中...
搜索中...
未找到
sem.h
浏览该文件的文档.
1
13#ifndef __xwos_osal_sync_sem_h__
14#define __xwos_osal_sync_sem_h__
15
16#include <xwos/standard.h>
18#include <xwos/osal/time.h>
19#include <xwos/osal/sync/sel.h>
20
91struct xwos_sem {
92 struct xwosdl_sem ossem;
93};
94
98typedef struct {
99 struct xwos_sem * sem;
101} xwos_sem_d;
102
106#define XWOS_SEM_NILD ((xwos_sem_d){NULL, 0,})
107
122{
123 return xwosdl_sem_init(&sem->ossem, val, max);
124}
125
137{
138 return xwosdl_sem_fini(&sem->ossem);
139}
140
156{
157 return xwosdl_sem_grab(&sem->ossem);
158}
159
175{
176 return xwosdl_sem_put(&sem->ossem);
177}
178
194{
195 return xwosdl_sem_create((xwosdl_sem_d *)semd, val, max);
196}
197
209{
210 return xwosdl_sem_delete(&semd.sem->ossem, semd.tik);
211}
212
226{
227 return xwosdl_sem_acquire(&semd.sem->ossem, semd.tik);
228}
229
243{
244 return xwosdl_sem_release(&semd.sem->ossem, semd.tik);
245}
246
256{
257 return xwosdl_sem_get_tik(&sem->ossem);
258}
259
269{
270 xwos_sem_d semd;
271
272 semd.sem = sem;
273 semd.tik = xwosdl_sem_get_tik(&sem->ossem);
274 return semd;
275}
276
293xwer_t xwos_sem_bind(struct xwos_sem * sem, struct xwos_sel * sel, xwsq_t pos)
294{
295 return xwosdl_sem_bind(&sem->ossem, &sel->ossel, pos);
296}
297
310xwer_t xwos_sem_unbind(struct xwos_sem * sem, struct xwos_sel * sel)
311{
312 return xwosdl_sem_unbind(&sem->ossem, &sel->ossel);
313}
314
331{
332 return xwosdl_sem_freeze(&sem->ossem);
333}
334
350{
351 return xwosdl_sem_thaw(&sem->ossem);
352}
353
370{
371 return xwosdl_sem_post(&sem->ossem);
372}
373
389{
390 return xwosdl_sem_wait(&sem->ossem);
391}
392
415{
416 return xwosdl_sem_wait_to(&sem->ossem, to);
417}
418
433{
434 return xwosdl_sem_wait_unintr(&sem->ossem);
435}
436
451{
452 return xwosdl_sem_trywait(&sem->ossem);
453}
454
467{
468 return xwosdl_sem_get_max(&sem->ossem, max);
469}
470
483{
484 return xwosdl_sem_get_value(&sem->ossem, val);
485}
486
491#endif /* xwos/osal/sync/sem.h */
#define __xwos_inline_api
Definition compiler.h:179
xws64_t xwtm_t
XWOS系统时间 (有符号)
Definition type.h:742
signed long xwer_t
Definition type.h:554
unsigned long xwsq_t
Definition type.h:445
signed long xwssq_t
Definition type.h:461
static xwos_sem_d xwos_sem_get_d(struct xwos_sem *sem)
XWOS API:获取信号量对象描述符
Definition sem.h:268
static xwer_t xwos_sem_get_value(struct xwos_sem *sem, xwssq_t *val)
XWOS API:获取信号量对象计数器的值
Definition sem.h:482
static xwer_t xwos_sem_release(xwos_sem_d semd)
XWOS API:检查对象的标签并减少引用计数
Definition sem.h:242
static xwer_t xwos_sem_get_max(struct xwos_sem *sem, xwssq_t *max)
XWOS API:获取信号量对象计数器的最大值
Definition sem.h:466
static xwer_t xwos_sem_trywait(struct xwos_sem *sem)
XWOS API:尝试获取信号量
Definition sem.h:450
static xwer_t xwos_sem_bind(struct xwos_sem *sem, struct xwos_sel *sel, xwsq_t pos)
XWOS API:绑定信号量对象到信号选择器
Definition sem.h:293
static xwer_t xwos_sem_unbind(struct xwos_sem *sem, struct xwos_sel *sel)
XWOS API:从信号选择器上解绑信号量对象
Definition sem.h:310
static xwer_t xwos_sem_wait(struct xwos_sem *sem)
XWOS API:等待并获取信号量
Definition sem.h:388
static xwer_t xwos_sem_delete(xwos_sem_d semd)
XWOS API:删除动态方式创建的信号量对象
Definition sem.h:208
static xwer_t xwos_sem_grab(struct xwos_sem *sem)
XWOS API:增加信号量对象的引用计数
Definition sem.h:155
static xwer_t xwos_sem_wait_unintr(struct xwos_sem *sem)
XWOS API:等待并获取信号量,且等待不可被中断
Definition sem.h:432
static xwer_t xwos_sem_put(struct xwos_sem *sem)
XWOS API:减少信号量对象的引用计数
Definition sem.h:174
static xwer_t xwos_sem_fini(struct xwos_sem *sem)
XWOS API:销毁静态方式初始化的信号量对象
Definition sem.h:136
static xwer_t xwos_sem_freeze(struct xwos_sem *sem)
XWOS API:冻结信号量对象
Definition sem.h:330
static xwer_t xwos_sem_wait_to(struct xwos_sem *sem, xwtm_t to)
XWOS API:限时等待并获取信号量
Definition sem.h:414
static xwer_t xwos_sem_acquire(xwos_sem_d semd)
XWOS API:检查信号量对象的标签并增加引用计数
Definition sem.h:225
static xwer_t xwos_sem_thaw(struct xwos_sem *sem)
XWOS API:解冻信号量对象
Definition sem.h:349
static xwsq_t xwos_sem_get_tik(struct xwos_sem *sem)
XWOS API:获取信号量对象的标签
Definition sem.h:255
static xwer_t xwos_sem_create(xwos_sem_d *semd, xwssq_t val, xwssq_t max)
XWOS API:动态方式创建信号量对象
Definition sem.h:193
static xwer_t xwos_sem_init(struct xwos_sem *sem, xwssq_t val, xwssq_t max)
XWOS API:静态方式初始化信号量对象
Definition sem.h:121
static xwer_t xwos_sem_post(struct xwos_sem *sem)
XWOS API:发布信号量
Definition sem.h:369
操作系统抽象层:信号量接口描述
XWOS API:信号选择器对象
Definition sel.h:78
struct xwmp_evt ossel
Definition sel.h:79
XWOS API:信号量对象描述符
Definition sem.h:98
struct xwos_sem * sem
Definition sem.h:99
xwsq_t tik
Definition sem.h:100
XWOS API:信号量对象
Definition sem.h:91
struct xwmp_sem ossem
Definition sem.h:92
操作系统抽象层:信号选择器
操作系统抽象层:时间
XWOS的标准头文件