《嵌入式实时操作系统:RT-Thread设计与实现》 —3.5.3 对象控制块

举报
华章计算机 发表于 2019/11/24 11:22:40 2019/11/24
【摘要】 本节书摘来自华章计算机《嵌入式实时操作系统:RT-Thread设计与实现》一书中第3章,第3.5.3节,作者是邱祎 熊谱翔 朱天龙 。

3.5.3 对象控制块

内核对象控制块的数据结构如下。

struct rt_object

{

    /* 内核对象名称     */

    char      name[RT_NAME_MAX];

    /* 内核对象类型     */

    rt_uint8_t  type;

    /* 内核对象的参数   */

    rt_uint8_t  flag;

    /* 内核对象管理链表 */

    rt_list_t   list;

};

目前内核对象支持的类型如下:

enum rt_object_class_type

{

    RT_Object_Class_Thread = 0,             /* 对象为线程类型      */

#ifdef RT_USING_SEMAPHORE

    RT_Object_Class_Semaphore,              /* 对象为信号量类型    */

#endif

#ifdef RT_USING_MUTEX

    RT_Object_Class_Mutex,                  /* 对象为互斥量类型    */

#endif

#ifdef RT_USING_EVENT

    RT_Object_Class_Event,                  /* 对象为事件类型      */

#endif

#ifdef RT_USING_MAILBOX

    RT_Object_Class_MailBox,                /* 对象为邮箱类型      */

#endif

#ifdef RT_USING_MESSAGEQUEUE

    RT_Object_Class_MessageQueue,           /* 对象为消息队列类型   */

#endif

#ifdef RT_USING_MEMPOOL

    RT_Object_Class_MemPool,                /* 对象为内存池类型     */

#endif

#ifdef RT_USING_DEVICE

    RT_Object_Class_Device,                 /* 对象为设备类型       */

#endif

    RT_Object_Class_Timer,                  /* 对象为定时器类型     */

#ifdef RT_USING_MODULE

    RT_Object_Class_Module,                 /* 对象为模块          */

#endif

    RT_Object_Class_Unknown,                /* 对象类型未知        */

    RT_Object_Class_Static = 0x80           /* 对象为静态对象      */

};

从上面的类型说明可以看出,如果是静态对象,那么对象类型的最高位将是1(是 RT_ Object_Class_Static 与其他对象类型的与操作),否则就是动态对象,系统最多能够容纳的对象类别数目是127个。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。