[RT-Thread 源码分析] 3. 内核对象管理

RTT在设计时虽然采用了c语言,但使用了面向对象的思想。所有的线程、事件设备等都是继承自object,且采用链表的方式统一管理。如图所示。

对象控制块
    /** 
     * Base structure of Kernel object 
     */  
    struct rt_object  
    {  
        char       name[RT_NAME_MAX];   // 名称  
        rt_uint8_t type;                // 内核对象类型   
        rt_uint8_t flag;                // 内核对象标志          
      
    #ifdef RT_USING_MODULE  
        void      *module_id;           // 模块ID  
    #endif  
        rt_list_t  list;                // 内核对象链表节点  
    };  
    typedef struct rt_object *rt_object_t;  
在内核里,所有对象都由链表组织起来。链表定义如下:
    struct rt_list_node  
    {  
        struct rt_list_node *next; // 指向下一节点  
        struct rt_list_node *prev; // 指向前一节点  
    };  
    typedef struct rt_list_node rt_list_t;     
所有可能派生出来的对象为:
    /** 
     *  The object type can be one of the follows with specific 
     *  macros enabled: 
     *  - Thread 
     *  - Semaphore 
     *  - Mutex 
     *  - Event 
     *  - MailBox 
     *  - MessageQueue 
     *  - MemHeap 
     *  - MemPool 
     *  - Device 
     *  - Timer 
     *  - Module 
     *  - Unknown 
     *  - Static 
     */  
    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_MEMHEAP  
        RT_Object_Class_MemHeap,        // 内存堆  
    #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,        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值