XWOS API  4.0
XWOS C/C++ API参考手册
载入中...
搜索中...
未找到
xwos::sync::Sel< TNum > 模板类 参考

信号选择器基类 更多...

#include <Sel.hxx>

类 xwos::sync::Sel< TNum > 继承关系图:
xwos::sync::Sel< TNum > 的协作图:

Public 类型

enum  WaitMode : xwu32_t { SelWait = 0 , SelWaitTimed , SelWaitUninterruptable , SelTryWait }
 等待模式枚举 更多...
 

Public 成员函数

xwsz_t num ()
 获取信号选择器中的信号槽的数量
 
xwer_t select (xwos::Bmp< TNum > *msk, xwos::Bmp< TNum > *trigger, enum WaitMode mode, xwtm_t to)
 等待信号选择器
 
template<xwsz_t TSelNum>
xwer_t bind (Sel< TSelNum > *src, long pos)
 绑定源信号选择器到本信号选择器
 
template<xwsz_t TSelNum>
xwer_t bind (Sel< TSelNum > &src, long pos)
 
template<xwsz_t TSelNum>
xwer_t unbind (Sel< TSelNum > *src)
 从目的信号选择器上解绑源信号选择器
 
template<xwsz_t TSelNum>
xwer_t unbind (Sel< TSelNum > &src)
 
struct xwos_selgetXwosObj ()
 获取XWOS对象指针
 

Protected 成员函数

 Sel ()
 
 ~Sel ()
 

Protected 属性

struct xwos_selmSelPtr
 

详细描述

template<xwsz_t TNum>
class xwos::sync::Sel< TNum >

信号选择器基类

在文件 Sel.hxx54 行定义.

成员枚举类型说明

◆ WaitMode

template<xwsz_t TNum>
enum xwos::sync::Sel::WaitMode : xwu32_t

等待模式枚举

枚举值
SelWait 

等待模式

SelWaitTimed 

定时等待模式

SelWaitUninterruptable 

不可中断等待模式

SelTryWait 

尝试模式(只测试不等待)

在文件 Sel.hxx60 行定义.

60 : xwu32_t {
61 SelWait = 0,
65 };
@ SelWaitUninterruptable
Definition Sel.hxx:63
uint32_t xwu32_t
Definition type.h:266

构造及析构函数说明

◆ Sel()

template<xwsz_t TNum>
xwos::sync::Sel< TNum >::Sel ( )
inlineprotected

在文件 Sel.hxx71 行定义.

72 : mSelPtr(nullptr)
73 {
74 }
struct xwos_sel * mSelPtr
Definition Sel.hxx:68

◆ ~Sel()

template<xwsz_t TNum>
xwos::sync::Sel< TNum >::~Sel ( )
inlineprotected

在文件 Sel.hxx75 行定义.

75{ mSelPtr = nullptr; }

成员函数说明

◆ num()

template<xwsz_t TNum>
xwsz_t xwos::sync::Sel< TNum >::num ( )
inline

获取信号选择器中的信号槽的数量

在文件 Sel.hxx81 行定义.

81{ return TNum; }

◆ select()

template<xwsz_t TNum>
xwer_t xwos::sync::Sel< TNum >::select ( xwos::Bmp< TNum > *  msk,
xwos::Bmp< TNum > *  trigger,
enum WaitMode  mode,
xwtm_t  to 
)
inline

等待信号选择器

参数
[in]msk同步对象位图掩码,表示只关注掩码内的同步对象
[out]trigger指向缓冲区的指针,通过此缓冲区返回已触发的同步对象位图掩码
[in]mode等待模式,取值 Sel::WaitMode
[in]to期望唤醒的时间点,仅当 mode == Sel::WaitMode::SelWaitTimed 时有效。
返回
错误码
返回值
XWOK没有错误
-EFAULT空指针
-ETIMEDOUT超时
-ENODATA没有任何同步对象向信号选择器发送 选择信号
-EINTR等待被中断
-ENOTTHDCTX不在线程上下文中
注解

在文件 Sel.hxx114 行定义.

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 }
xwbmp_t mData[(((TNum)+(8U *sizeof(xwbmp_t)) - 1U)/(8U *sizeof(xwbmp_t)))]
Definition Bmp.hxx:112
signed long xwer_t
Definition type.h:554
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_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
函数调用图:

◆ bind() [1/2]

template<xwsz_t TNum>
template<xwsz_t TSelNum>
xwer_t xwos::sync::Sel< TNum >::bind ( Sel< TSelNum > *  src,
long  pos 
)
inline

绑定源信号选择器到本信号选择器

参数
[in]src源信号选择器对象的指针
[in]pos源信号选择器对象映射到位图中的位置
返回
错误码
返回值
XWOK没有错误
-EFAULT无效的指针或空指针
-ECHRNG位置超出范围
-EALREADY同步对象已经绑定到事件对象
-EBUSY通道已经被其他同步对象独占
注解
  • 上下文:任意
  • 绑定方式:非独占绑定
  • 多个信号选择器可以依次绑定,形成信号传递链。 但不可循环绑定,否则会造成无限循环传递。

在文件 Sel.hxx156 行定义.

157 {
158 return xwos_sel_bind(src->getXwosObj(), mSelPtr, (xwsq_t)pos);
159 }
unsigned long xwsq_t
Definition type.h:445
static xwer_t xwos_sel_bind(struct xwos_sel *src, struct xwos_sel *dst, xwsq_t pos)
XWOS API:绑定源信号选择器到目的信号选择器
Definition sel.h:286
函数调用图:

◆ bind() [2/2]

template<xwsz_t TNum>
template<xwsz_t TSelNum>
xwer_t xwos::sync::Sel< TNum >::bind ( Sel< TSelNum > &  sel,
long  pos 
)
inline

这是为便于使用而提供的一个重载成员函数.与上面的函数相比,它接受不同类型的参数.

在文件 Sel.hxx164 行定义.

165 {
166 return xwos_sel_bind(src.getXwosObj(), mSelPtr, (xwsq_t)pos);
167 }
函数调用图:

◆ unbind() [1/2]

template<xwsz_t TNum>
template<xwsz_t TSelNum>
xwer_t xwos::sync::Sel< TNum >::unbind ( Sel< TSelNum > *  src)
inline

从目的信号选择器上解绑源信号选择器

参数
[in]src源信号选择器对象的指针
返回
错误码
返回值
XWOK没有错误
-EFAULT空指针
-ENOTCONN同步对象没有绑定到事件对象上
注解
  • 上下文:任意

在文件 Sel.hxx180 行定义.

181 {
182 return xwos_sel_unbind(src->getXwosObj(), mSelPtr);
183 }
static xwer_t xwos_sel_unbind(struct xwos_sel *src, struct xwos_sel *dst)
XWOS API:从目的信号选择器上解绑源信号选择器
Definition sel.h:303
函数调用图:

◆ unbind() [2/2]

template<xwsz_t TNum>
template<xwsz_t TSelNum>
xwer_t xwos::sync::Sel< TNum >::unbind ( Sel< TSelNum > &  sel)
inline

这是为便于使用而提供的一个重载成员函数.与上面的函数相比,它接受不同类型的参数.

在文件 Sel.hxx188 行定义.

189 {
190 return xwos_sel_unbind(src.getXwosObj(), mSelPtr);
191 }
函数调用图:

◆ getXwosObj()

template<xwsz_t TNum>
struct xwos_sel * xwos::sync::Sel< TNum >::getXwosObj ( )
inline

获取XWOS对象指针

在文件 Sel.hxx196 行定义.

196{ return mSelPtr; }
这是这个函数的调用关系图:

结构体成员变量说明

◆ mSelPtr

template<xwsz_t TNum>
struct xwos_sel* xwos::sync::Sel< TNum >::mSelPtr
protected

在文件 Sel.hxx68 行定义.


该类的文档由以下文件生成: