📄 global.h.svn-base
字号:
#ifndef __OS_GLOBAL_H__
#define __OS_GLOBAL_H__
#include "API_interrupt.h"
#include "OS_CPU.h"
#include "OS_TCB.h"
#include "resource.h"
/*用户可能配置的宏*/
#define SCHEDULE 2
#define CC 4
#define MAXTIMES 10
#define OS_LOWEST_PRIO 63 /* Defines the lowest priority that can be assigned ... */
#define OS_MAX_TASKS 63
#define RCBNum 4
/*系统内部定义的宏*/
#define OS_N_SYS_TASKS 1
#define OS_IDLE_PRIO 63
#define OS_STK_GROWTH 1
#define OS_HIGHEST_PRIO 0
#define OS_TASK_IDLE_PRIO (OS_LOWEST_PRIO) /* IDLE task priority */
#define OS_RDY_TBL_SIZE ((OS_LOWEST_PRIO) / 8 + 1) /* Size of ready table */
#define OS_TASK_IDLE_STK_SIZE 512
/*系统内部定义的若干变量*/
INT8U OSPrioCur; /* Priority of current task */
INT8U OSPrioHighRdy; /* Priority of highest priority task */
INT8U OSIntNesting;
INT8U OSRdyGrp; /* Ready list group */
INT8U OSRdyTbl[OS_RDY_TBL_SIZE]; /* Table of tasks which are ready to run */
BOOLEAN OSRunning; /* Flag indicating that kernel is running */
INT16U OSTaskCtr; /* Number of tasks created */
volatile INT32U OSIdleCtr; /* Idle counter */
OS_STK OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE]; /* Idle task stack */
INT16U OSCtxSwCtr;
INT16U AppTask0Stk[512];
INT16U AppTask1Stk[512];
INT16U AppTask2Stk[512];
INT16U AppTask3Stk[512];
INT16U AppTask4Stk[512];
INT16U AppTask5Stk[512];
INT16U AppTask6Stk[512];
INT16U AppTask7Stk[512];
INT16U AppTask8Stk[512];
INT16U AppTask9Stk[512];
INT16U AppTask10Stk[512];
INT16U AppTask11Stk[512];
INT16U AppTask12Stk[512];
INT16U AppTask13Stk[512];
INT16U AppTask14Stk[512];
INT16U AppTask15Stk[512];
INT16U AppTask16Stk[512];
INT16U AppTask17Stk[512];
INT16U AppTask18Stk[512];
INT16U AppTask19Stk[512];
INT16U AppTask20Stk[512];
INT16U AppTask21Stk[512];
INT16U AppTask22Stk[512];
INT16U AppTask23Stk[512];
INT16U AppTask24Stk[512];
INT16U AppTask25Stk[512];
INT16U AppTask26Stk[512];
INT16U AppTask27Stk[512];
INT16U AppTask28Stk[512];
INT16U AppTask29Stk[512];
INT16U AppTask30Stk[512];
INT16U AppTask31Stk[512];
INT16U AppTask32Stk[512];
INT16U AppTask33Stk[512];
INT16U AppTask34Stk[512];
INT16U AppTask35Stk[512];
INT16U AppTask36Stk[512];
INT16U AppTask37Stk[512];
INT16U AppTask38Stk[512];
INT16U AppTask39Stk[512];
INT16U AppTask40Stk[512];
INT16U AppTask41Stk[512];
INT16U AppTask42Stk[512];
INT16U AppTask43Stk[512];
INT16U AppTask44Stk[512];
INT16U AppTask45Stk[512];
INT16U AppTask46Stk[512];
INT16U AppTask47Stk[512];
INT16U AppTask48Stk[512];
INT16U AppTask49Stk[512];
INT16U AppTask50Stk[512];
INT16U AppTask51Stk[512];
INT16U AppTask52Stk[512];
INT16U AppTask53Stk[512];
INT16U AppTask54Stk[512];
INT16U AppTask55Stk[512];
INT16U AppTask56Stk[512];
INT16U AppTask57Stk[512];
INT16U AppTask58Stk[512];
INT16U AppTask59Stk[512];
INT16U AppTask60Stk[512];
INT16U AppTask61Stk[512];
INT16U AppTask62Stk[512];
INT16U AppTask63Stk[512];
OS_TCB *OSTCBCur; /* Pointer to currently running TCB */
OS_TCB *OSTCBFreeList; /* Pointer to list of free TCBs */
OS_TCB *OSTCBHighRdy; /* Pointer to highest priority TCB R-to-R */
OS_TCB *OSTCBList; /* Pointer to doubly linked list of TCBs */
//OS_TCB *OSTCBPrioTbl[OS_LOWEST_PRIO + 1];/* Table of pointers to created TCBs */
OS_TCB OSTCBTbl[OS_MAX_TASKS + OS_N_SYS_TASKS]; /* Table of TCBs */
OS_TCB *OSTCBidTbl[OS_MAX_TASKS + OS_N_SYS_TASKS ];
RCB *RCBArray;
/*与OSEK有关,或者系统出错时定义的宏*/
#define TRUE 1
#define FALSE 0
#define BT 0
#define ET 1
#define NONPREEMPT 0
#define PREEMPT 1
#define MIXPREEMPT 2
#define E_OK 10
#define E_OS_ID 20
#define E_OS_LIMIT 20
#define E_OS_CALLEVEL 20
#define E_OS_RESOURCE 20
#define E_OS_STATE 20
#define E_OS_ACCESS 20
#define OS_PRIO_INVALID 20
#define OS_NO_ERR 20
#define OS_ERR_NONE 20
#define OS_ERR_PRIO_EXIST 20
#define OS_ERR_PRIO_ID_EXIST 20
#define OS_ERR_TASK_NO_MORE_TCB 20
#define OS_ERR_ID_EXIST 20
#define INVALID_TASK 20
#define TASKIDLE 20
#define NO_TASK (void *)0
#define OS_TASK_IDLE_ID 20
#define OS_ERR_PRIO_INVALID 20
#define OS_ERR_PRIO 20
#define E_OS_NOFUNC 20
#define ready 1
#define running 2
#define waitting 3
#define suspended 4
#define BCC1 1
#define BCC2 2
#define ECC1 3
#define ECC2 4
#if (CC==BCC2)||(CC==ECC2)
INT8U atvtimes[OS_MAX_TASKS + OS_N_SYS_TASKS];
#endif
typedef struct rdyqueue
{
OS_TCB *front,*rear;
} RdyQueue;
#if (CC==BCC1)||(CC==ECC1)
OS_TCB *OSTCBPrioTbl[OS_LOWEST_PRIO + 1];
#else
RdyQueue OSTCBPrioTbl[OS_LOWEST_PRIO + 1];
#endif
void OSInit(void);
void OS_InitRdyList (void);
void OS_MemClr (INT8U *pdest, INT16U size);
void OS_InitTCBList (void);
INT8U OS_TCBInit (OS_STK *ptos,INT8U prio, INT8U id, INT32U stk_size, INT8U taskclass,INT8U autoact,INT8U schedpcy);
void OS_InitTaskIdle (void);
void EnQueue(RdyQueue *Q,OS_TCB *x);
OS_TCB *DeQueue(RdyQueue *Q);
INT8U OSTaskCreate (void (*task)(void *p_arg), void *p_arg, OS_STK *ptos, INT32U stk_size, INT8U prio, INT8U id, INT8U taskclass,INT8U autoact, INT8U schedpcy);
OS_STK *OSTaskStkInit(void (*task)(void *pd), void *p_arg, OS_STK *ptos);
void OSStart (void);
INT8U OSTaskChangePrio (INT8U id,INT8U oldprio, INT8U newprio);
void OS_SchedNew (void);
void OS_Sched (void);
void TaskIdle (void);
void Wait (void);
void release(INT8U id);
INT8U activatetask(INT8U id);
INT8U terminatetask(void);
INT8U chaintask(INT8U id);
void schedule (void);
INT8U GetTaskId (void);
INT8U GetTaskState(INT8U id);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -