⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kds.h

📁 Rabbit 32Bit RTOS源代码
💻 H
字号:
/*********************************************************************
*                   Copyright (c) 2011-2012,李士伟
*                     All rights reserved.
*文 件 名:kds.h
*描    述:内核数据结构定义
*当前版本:V1.00
*作    者:李士伟
*创建日期:2011.10.15
**********************************************************************/
#ifndef __KDS_H__
#define __KDS_H__

#include <kernel\typedef.h>

/*********************************************************************
*结构体名:struct os_tcb  (OS_TCB)
*描    述:任务控制块结构体
**********************************************************************/
typedef struct os_tcb
{
    OS_STK         *StkPtr;        /* 指向栈顶                          */
    OS_STK         *StkBase;       /* 指向栈基址,释放任务栈时使用的指针 */
    
    struct os_tcb  *Next;          /* TCB双向登记链表指针               */
    struct os_tcb  *Prev;  
    
    /* 运行或等待队列 */       
    struct os_tcb **QHead;         /* TCB队列头指针的指针               */
    struct os_tcb  *QNext;         /* TCB队列双向链表指针               */
    struct os_tcb  *QPrev;

    INT32U          Delay;         /* 延时节拍                          */
    INT32U          Prio;          /* 任务优先级                        */
    INT32U          TaskID;        /* 任务ID                            */
    INT32U          State;         /* 任务状态                          */

    INT32U          Event;         /* 发生的事件类型                    */
    void           *MsgPtr;        /* 消息指针                          */

}OS_TCB;

/*********************************************************************
*结构体名:struct os_timer  (OS_TIMER)
*描    述:定时器结构体
**********************************************************************/
typedef struct os_timer
{
    INT32U           State;          /* 状态 1,暂停;0,运行 */
    INT32U           Counter;        /* 定时器计数器         */
    void           (*Action)(void);  /* 定时动作函数         */
    INT32U           Jiffies;        /* 定时间隙             */
    struct os_timer *Next;           /* 下一个定时器指针     */

}OS_TIMER;

/*********************************************************************
*结构体名:struct os_sem  (OS_SEM)
*描    述:信号量结构体
**********************************************************************/
typedef struct os_sem
{
    INT32U  SemCnt;    /* 信号量值         */
    OS_TCB *WaitQ;     /* 等待信号量队列   */

}OS_SEM;

/*********************************************************************
*结构体名:struct os_msg  (OS_MSG)
*描    述:消息邮箱结构体
**********************************************************************/
typedef struct os_msg
{
    void   *MsgPtr;    /* 消息指针     */
    OS_TCB *WaitQ;     /* 等待消息队列 */
    
}OS_MSGBOX;

/*********************************************************************
*结构体名:struct os_event  (OS_EVENT)
*描    述:事件结构体,主要用于设备控制中反馈发生事件类型
*          默认Event == 0 表示没有事件发生
*          用大于0的无符号数表示事件类型
*          系统需严格地将各种不同事件编号,编号与事件是一一对应关系
**********************************************************************/
typedef struct os_event
{
     INT32U  Event;      /* 发生的事件类型 */
     OS_TCB *WaitQ;      /* 等待事件队列   */

}OS_EVENT;

/*********************************************************************
*结构体名:struct os_mutex  (OS_MUTEX)
*描    述:互斥结构体
**********************************************************************/
typedef struct os_mutex
{
    INT32U  Signal;
    OS_TCB *WaitQ;
    
}OS_MUTEX;

/*********************************************************************
*结构体名:struct os_msgq  (OS_MSGQ)
*描    述:消息队列结构体
**********************************************************************/
typedef struct os_msgq
{
    INT32U   QCount;  /* 消息数 */
    void   **QOut;
    void   **QIn;
    void   **QEnd;
    void   **QStart;
    INT32U   QSize;
    OS_TCB  *WaitQ;

}OS_MSGQ;

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -