XWOS API  4.0
XWOS C/C++ API参考手册
载入中...
搜索中...
未找到
Sem.hxx
浏览该文件的文档.
1
13#ifndef __xwos_cxx_sync_Sem_hxx__
14#define __xwos_cxx_sync_Sem_hxx__
15
17#include <xwos/cxx/sync/Sel.hxx>
18
19namespace xwos {
20namespace sync {
21
59class Sem
60{
61 public:
66 SemWait = 0,
70 };
71
72 protected:
73 struct xwos_sem * mSemPtr;
74
75 protected:
76 Sem() : mSemPtr(nullptr) {}
77 ~Sem() { mSemPtr = nullptr; }
78
79 public:
94
127 {
128 xwer_t rc;
129 switch (mode) {
132 break;
134 rc = xwos_sem_wait_to(mSemPtr, to);
135 break;
138 break;
141 break;
142 default:
144 break;
145 }
146 return rc;
147 }
148
163
177
185 {
186 xwssq_t max;
188 return max;
189 }
190
198 {
201 return value;
202 }
203
218 template<xwsz_t TSelNum>
219 xwer_t bind(Sel<TSelNum> * sel, long pos)
220 {
221 return xwos_sem_bind(mSemPtr, sel->getXwosObj(), (xwsq_t)pos);
222 }
223
238 template<xwsz_t TSelNum>
239 xwer_t bind(Sel<TSelNum> & sel, long pos)
240 {
241 return xwos_sem_bind(mSemPtr, sel.getXwosObj(), (xwsq_t)pos);
242 }
243
254 template<xwsz_t TSelNum>
256 {
257 return xwos_sem_unbind(mSemPtr, sel->getXwosObj());
258 }
259
270 template<xwsz_t TSelNum>
272 {
273 return xwos_sem_unbind(mSemPtr, sel.getXwosObj());
274 }
275
279 struct xwos_sem * getXwosObj() { return mSemPtr; }
280};
281
286} // namespace sync
287} // namespace xwos
288
289#endif /* xwos/cxx/sync/Sem.hxx */
xwos::sync::Sel
信号选择器基类
Definition Sel.hxx:55
struct xwos_sel * getXwosObj()
获取XWOS对象指针
Definition Sel.hxx:196
信号量基类
Definition Sem.hxx:60
struct xwos_sem * getXwosObj()
获取XWOS对象指针
Definition Sem.hxx:279
xwer_t bind(Sel< TSelNum > *sel, long pos)
绑定信号量对象到信号选择器
Definition Sem.hxx:219
xwssq_t max()
获取信号量计数器的最大值
Definition Sem.hxx:184
xwer_t wait(enum WaitMode mode=WaitMode::SemWait, xwtm_t to=((xwtm_t)((~(xwu64_t) 0) > > 1)))
等待并获取信号量
Definition Sem.hxx:126
xwer_t thaw()
解冻信号量
Definition Sem.hxx:176
struct xwos_sem * mSemPtr
Definition Sem.hxx:73
xwer_t unbind(Sel< TSelNum > &sel)
从信号选择器上解绑信号量对象
Definition Sem.hxx:271
xwer_t bind(Sel< TSelNum > &sel, long pos)
绑定信号量对象到信号选择器
Definition Sem.hxx:239
WaitMode
静态信号量的等待模式
Definition Sem.hxx:65
@ SemWaitUninterruptable
Definition Sem.hxx:68
xwer_t unbind(Sel< TSelNum > *sel)
从信号选择器上解绑信号量对象
Definition Sem.hxx:255
xwssq_t value()
获取信号量计数器的值
Definition Sem.hxx:197
xwer_t freeze()
冻结信号量
Definition Sem.hxx:162
xwer_t post()
发布信号量
Definition Sem.hxx:93
xws64_t xwtm_t
XWOS系统时间 (有符号)
Definition type.h:742
#define XWTM_MAX
xwtm_t 的最大值
Definition type.h:755
signed long xwer_t
Definition type.h:554
unsigned long xwsq_t
Definition type.h:445
signed long xwssq_t
Definition type.h:461
uint32_t xwu32_t
Definition type.h:266
static xwer_t xwos_sem_get_value(struct xwos_sem *sem, xwssq_t *val)
XWOS API:获取信号量对象计数器的值
Definition sem.h:486
static xwer_t xwos_sem_get_max(struct xwos_sem *sem, xwssq_t *max)
XWOS API:获取信号量对象计数器的最大值
Definition sem.h:470
static xwer_t xwos_sem_trywait(struct xwos_sem *sem)
XWOS API:尝试获取信号量
Definition sem.h:454
static xwer_t xwos_sem_bind(struct xwos_sem *sem, struct xwos_sel *sel, xwsq_t pos)
XWOS API:绑定信号量对象到信号选择器
Definition sem.h:297
static xwer_t xwos_sem_unbind(struct xwos_sem *sem, struct xwos_sel *sel)
XWOS API:从信号选择器上解绑信号量对象
Definition sem.h:314
static xwer_t xwos_sem_wait(struct xwos_sem *sem)
XWOS API:等待并获取信号量
Definition sem.h:392
static xwer_t xwos_sem_wait_unintr(struct xwos_sem *sem)
XWOS API:等待并获取信号量,且等待不可被中断
Definition sem.h:436
static xwer_t xwos_sem_freeze(struct xwos_sem *sem)
XWOS API:冻结信号量对象
Definition sem.h:334
static xwer_t xwos_sem_wait_to(struct xwos_sem *sem, xwtm_t to)
XWOS API:限时等待并获取信号量
Definition sem.h:418
static xwer_t xwos_sem_thaw(struct xwos_sem *sem)
XWOS API:解冻信号量对象
Definition sem.h:353
static xwer_t xwos_sem_post(struct xwos_sem *sem)
XWOS API:发布信号量
Definition sem.h:373
Definition Bmp.hxx:21
C++操作系统抽象层:信号量
XWOS API:信号量对象
Definition sem.h:95