zoukankan      html  css  js  c++  java
  • 邮箱

    邮箱

    ​ RT-Thread 操作系统的邮箱用于线程间通信,特点是开销比较低,效率较高。邮箱中的每一封邮件只能容纳固定的 4 字节内容(针对 32 位处理系统,指针的大小即为 4 个字节,所以一封邮件恰好能够容纳一个指针)。

    ​ 线程或中断服务例程把一封 4 字节长度的邮件发送到邮箱中,而其他需要的线程可以从邮箱中接收这些邮件并进行处理。

    struct rt_mailbox
    {
        struct rt_ipc_object parent;      /**< inherit from ipc_object */
        rt_uint32_t         *msg_pool;     /**< start address of message buffer */
        rt_uint16_t          size;        /**< size of message pool */
        rt_uint16_t          entry;        /**< index of messages in msg_pool */
        rt_uint16_t          in_offset;    /**< input offset of the message buffer */
        rt_uint16_t          out_offset;  /**< output offset of the message buffer */
        rt_list_t   suspend_sender_thread;  /**< sender thread suspended on this   mailbox */
    };
    typedef struct rt_mailbox *rt_mailbox_t;
    struct rt_mailbox   static_mb;
    rt_mailbox_t  dynamic_mb;
    

    初始化与脱离

    rt_err_t rt_mb_init(rt_mailbox_t mb, const char  *name, void  *msgpool,
                        								rt_size_t  size,rt_uint8_t   flag)
        																	RT_IPC_FLAG_FIFO
        																	RT_IPC_FLAG_PRIO
    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(rt_mailbox_t mb, rt_uint32_t value)
    rt_err_t rt_mb_send_wait(rt_mailbox_t mb, rt_uint32_t  value,  rt_int32_t   timeout)
    

    接收邮件

    rt_err_t rt_mb_recv(rt_mailbox_t mb, rt_uint32_t *value, rt_int32_t timeout)
    
  • 相关阅读:
    求素数(定义法,埃式法,欧拉法)
    打表法
    python学习日记(匿名函数)
    python学习日记(编码再回顾)
    python学习日记(文件操作练习题)
    python学习日记(迭代器、生成器)-乱七八糟
    python学习日记(生成器函数进阶)
    python学习日记(装饰器的补充)
    python学习日记(函数--装饰器)
    python学习日记(函数进阶)
  • 原文地址:https://www.cnblogs.com/zhang-han/p/14123123.html
Copyright © 2011-2022 走看看