$darkmode
提供固定长度消息传递服务 更多...
结构体 | |
struct | rt_mailbox |
邮箱结构体 更多... | |
类型定义 | |
typedef struct rt_mailbox * | rt_mailbox_t |
邮箱类型指针定义 | |
函数 | |
rt_err_t | rt_mb_init (rt_mailbox_t mb, const char *name, void *msgpool, rt_size_t size, rt_uint8_t flag) |
初始化静态邮箱对象 更多... | |
rt_err_t | rt_mb_detach (rt_mailbox_t mb) |
脱离静态邮箱对象 更多... | |
rt_mailbox_t | rt_mb_create (const char *name, rt_size_t size, rt_uint8_t flag) |
创建动态邮箱对象 更多... | |
rt_err_t | rt_mb_delete (rt_mailbox_t mb) |
删除动态邮箱对象 更多... | |
rt_err_t | rt_mb_send_wait (rt_mailbox_t mb, rt_ubase_t value, rt_int32_t timeout) |
带超时等待向邮箱中发送消息 更多... | |
rt_err_t | rt_mb_urgent (rt_mailbox_t mb, rt_ubase_t value) |
向邮箱中发送紧急消息 更多... | |
rt_err_t | rt_mb_recv (rt_mailbox_t mb, rt_ubase_t *value, rt_int32_t timeout) |
从邮箱接收消息 更多... | |
rt_err_t | rt_mb_control (rt_mailbox_t mb, int cmd, void *arg) |
控制邮箱的特性或行为 更多... | |
提供固定长度消息传递服务
RT-Thread 邮箱特性:
典型应用场景:
rt_err_t rt_mb_init | ( | rt_mailbox_t | mb, |
const char * | name, | ||
void * | msgpool, | ||
rt_size_t | size, | ||
rt_uint8_t | flag | ||
) |
初始化静态邮箱对象
用于初始化由用户分配内存的邮箱,适用于静态分配场景
[in] | mb | 邮箱对象指针 | ||||||
[in] | name | 邮箱名称 | ||||||
[in] | msgpool | 消息池缓冲区地址 | ||||||
[in] | size | 消息池中可存放的消息数 | ||||||
[in] | flag | 等待标志位
|
RT_EOK | 成功 |
!RT_EOK | 失败 |
rt_err_t rt_mb_detach | ( | rt_mailbox_t | mb | ) |
脱离静态邮箱对象
释放由 rt_mb_init() 初始化的静态邮箱对象
[in] | mb | 邮箱对象指针 |
RT_EOK | 成功 |
!RT_EOK | 失败 |
rt_mailbox_t rt_mb_create | ( | const char * | name, |
rt_size_t | size, | ||
rt_uint8_t | flag | ||
) |
创建动态邮箱对象
创建时自动申请邮箱控制块及消息池的内存,适用于动态分配场景
[in] | name | 邮箱名称 | ||||||
[in] | size | 邮箱最多可容纳的消息数量 | ||||||
[in] | flag | 等待标志位
|
!RT_NULL | 成功 |
RT_NULL | 失败 |
rt_err_t rt_mb_delete | ( | rt_mailbox_t | mb | ) |
删除动态邮箱对象
销毁由 rt_mb_create() 创建的邮箱对象,并释放相关内存
[in] | mb | 邮箱对象指针 |
RT_EOK | 成功 |
!RT_EOK | 失败 |
rt_err_t rt_mb_send_wait | ( | rt_mailbox_t | mb, |
rt_ubase_t | value, | ||
rt_int32_t | timeout | ||
) |
带超时等待向邮箱中发送消息
若邮箱已满,当前线程将挂起等待指定时间,直到邮箱有空间或超时
[in] | mb | 邮箱对象指针 | ||||||||
[in] | value | 要发送的消息值 | ||||||||
[in] | timeout | 超时时间
|
RT_EOK | 成功 |
-RT_ETIMEOUT | 超时 |
!RT_EOK | 失败 |
rt_err_t rt_mb_urgent | ( | rt_mailbox_t | mb, |
rt_ubase_t | value | ||
) |
向邮箱中发送紧急消息
紧急消息将插入邮箱队列头部,优先被接收
[in] | mb | 邮箱对象指针 |
[in] | value | 要发送的消息值 |
RT_EOK | 成功 |
-RT_EFULL | 邮箱已满 |
!RT_EOK | 其它错误 |
rt_err_t rt_mb_recv | ( | rt_mailbox_t | mb, |
rt_ubase_t * | value, | ||
rt_int32_t | timeout | ||
) |
从邮箱接收消息
若邮箱为空,当前线程将阻塞等待指定时间直至接收到消息或超时
[in] | mb | 邮箱对象指针 | ||||||||
[out] | value | 指向接收值的指针 | ||||||||
[in] | timeout | 超时时间
|
RT_EOK | 成功 |
-RT_ETIMEOUT | 超时 |
!RT_EOK | 失败 |
rt_err_t rt_mb_control | ( | rt_mailbox_t | mb, |
int | cmd, | ||
void * | arg | ||
) |
控制邮箱的特性或行为
用于执行特定控制命令
[in] | mb | 邮箱对象指针 |
[in] | cmd | 控制命令 |
[in] | arg | 控制命令的参数 |
RT_EOK | 成功 |
!RT_EOK | 失败 |