XWOS API  4.0
XWOS C/C++ API参考手册
载入中...
搜索中...
未找到
Sel.hxx
浏览该文件的文档.
1
13#ifndef __xwos_cxx_sync_Sel_hxx__
14#define __xwos_cxx_sync_Sel_hxx__
15
16#include <xwos/cxx/Bmp.hxx>
17
18extern "C" {
19#include <xwos/osal/sync/sel.h>
20}
21
22namespace xwos {
23namespace sync {
24
53template<xwsz_t TNum>
54class Sel
55{
56 public:
61 SelWait = 0,
65 };
66
67 protected:
68 struct xwos_sel * mSelPtr;
69
70 protected:
72 : mSelPtr(nullptr)
73 {
74 }
75 ~Sel() { mSelPtr = nullptr; }
76
77 public:
81 xwsz_t num() { return TNum; }
82
115 xwtm_t to)
116 {
117 xwer_t rc;
118 switch (mode) {
120 rc = xwos_sel_select(mSelPtr, msk->mData, trigger->mData);
121 break;
123 rc = xwos_sel_select_to(mSelPtr, msk->mData, trigger->mData, to);
124 break;
126 rc = xwos_sel_select_unintr(mSelPtr, msk->mData, trigger->mData);
127 break;
129 rc = xwos_sel_tryselect(mSelPtr, msk->mData, trigger->mData);
130 break;
131 default:
132 rc = xwos_sel_select(mSelPtr, msk->mData, trigger->mData);
133 break;
134 }
135 return rc;
136 }
137
155 template<xwsz_t TSelNum>
156 xwer_t bind(Sel<TSelNum> * src, long pos)
157 {
158 return xwos_sel_bind(src->getXwosObj(), mSelPtr, (xwsq_t)pos);
159 }
163 template<xwsz_t TSelNum>
164 xwer_t bind(Sel<TSelNum> & src, long pos)
165 {
166 return xwos_sel_bind(src.getXwosObj(), mSelPtr, (xwsq_t)pos);
167 }
168
179 template<xwsz_t TSelNum>
181 {
182 return xwos_sel_unbind(src->getXwosObj(), mSelPtr);
183 }
187 template<xwsz_t TSelNum>
189 {
190 return xwos_sel_unbind(src.getXwosObj(), mSelPtr);
191 }
192
196 struct xwos_sel * getXwosObj() { return mSelPtr; }
197};
198
203} // namespace sync
204} // namespace xwos
205
206#endif /* xwos/cxx/sync/Sel.hxx */
xwos::Bmp
xwbmp_t mData[(((TNum)+(8U *sizeof(xwbmp_t)) - 1U)/(8U *sizeof(xwbmp_t)))]
Definition Bmp.hxx:112
信号选择器基类
Definition Sel.hxx:55
xwer_t bind(Sel< TSelNum > &src, long pos)
Definition Sel.hxx:164
xwer_t bind(Sel< TSelNum > *src, long pos)
绑定源信号选择器到本信号选择器
Definition Sel.hxx:156
struct xwos_sel * getXwosObj()
获取XWOS对象指针
Definition Sel.hxx:196
xwer_t unbind(Sel< TSelNum > &src)
Definition Sel.hxx:188
xwsz_t num()
获取信号选择器中的信号槽的数量
Definition Sel.hxx:81
xwer_t select(xwos::Bmp< TNum > *msk, xwos::Bmp< TNum > *trigger, enum WaitMode mode, xwtm_t to)
等待信号选择器
Definition Sel.hxx:114
WaitMode
等待模式枚举
Definition Sel.hxx:60
@ SelWaitUninterruptable
Definition Sel.hxx:63
xwer_t unbind(Sel< TSelNum > *src)
从目的信号选择器上解绑源信号选择器
Definition Sel.hxx:180
struct xwos_sel * mSelPtr
Definition Sel.hxx:68
xws64_t xwtm_t
XWOS系统时间 (有符号)
Definition type.h:742
signed long xwer_t
Definition type.h:554
unsigned long xwsz_t
Definition type.h:339
unsigned long xwsq_t
Definition type.h:445
uint32_t xwu32_t
Definition type.h:266
static xwer_t xwos_sel_select_to(struct xwos_sel *sel, xwbmp_t msk[], xwbmp_t trg[], xwtm_t to)
XWOS API:限时等待信号选择器中的 选择信号
Definition sel.h:364
static xwer_t xwos_sel_bind(struct xwos_sel *src, struct xwos_sel *dst, xwsq_t pos)
XWOS API:绑定源信号选择器到目的信号选择器
Definition sel.h:286
static xwer_t xwos_sel_unbind(struct xwos_sel *src, struct xwos_sel *dst)
XWOS API:从目的信号选择器上解绑源信号选择器
Definition sel.h:303
static xwer_t xwos_sel_tryselect(struct xwos_sel *sel, xwbmp_t msk[], xwbmp_t trg[])
XWOS API:检测信号选择器中是否有 选择信号
Definition sel.h:386
static xwer_t xwos_sel_select_unintr(struct xwos_sel *sel, xwbmp_t msk[], xwbmp_t trg[])
XWOS API:等待信号选择器中的 选择信号 ,且等待不可被中断
Definition sel.h:405
static xwer_t xwos_sel_select(struct xwos_sel *sel, xwbmp_t msk[], xwbmp_t trg[])
XWOS API:等待信号选择器中的 选择信号
Definition sel.h:338
Definition Bmp.hxx:21
XWOS API:信号选择器对象
Definition sel.h:82
操作系统抽象层:信号选择器