/*
*********************************************************************************************************
* uC/OS-II
* The Real-Time Kernel
* CORE FUNCTIONS
*
* (c) Copyright 1992-2002, Jean J. Labrosse, Weston, FL
* All Rights Reserved
*
* File : OS_CORE.C
* By : Jean J. Labrosse
*********************************************************************************************************
*/
#ifndef OS_MASTER_FILE
#define OS_GLOBALS
#include "includes.h"
#endif
/*
*********************************************************************************************************
* MAPPING TABLE TO MAP BIT POSITION TO BIT MASK
*
* Note: Index into table is desired bit position, 0..7
* Indexed value corresponds to bit mask
*********************************************************************************************************
*/
INT8U const OSMapTbl[] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
/*
*********************************************************************************************************
* PRIORITY RESOLUTION TABLE
*
* Note: Index into table is bit pattern to resolve highest priority
* Indexed value corresponds to highest priority bit position (i.e. 0..7)
*********************************************************************************************************
*/
INT8U const OSUnMapTbl[] = {
0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x00 to 0x0F */
4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x10 to 0x1F */
5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x20 to 0x2F */
4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x30 to 0x3F */
6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x40 to 0x4F */
4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x50 to 0x5F */
5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x60 to 0x6F */
4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x70 to 0x7F */
7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x80 to 0x8F */
4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x90 to 0x9F */
5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0xA0 to 0xAF */
4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0xB0 to 0xBF */
6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0xC0 to 0xCF */
4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0xD0 to 0xDF */
5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0xE0 to 0xEF */
4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0 /* 0xF0 to 0xFF */
};
/*$PAGE*/
/*
*********************************************************************************************************
* DEBUG DATA
*********************************************************************************************************
*/
INT16U const OSDebugEn = OS_DEBUG_EN; /* Debug constants are defined below */
#if OS_DEBUG_EN > 0
INT16U const OSEventMax = OS_MAX_EVENTS; /* Number of event control blocks */
INT16U const OSEventNameSize = OS_EVENT_NAME_SIZE; /* Size (in bytes) of event names */
#if (OS_EVENT_EN > 0) && (OS_MAX_EVENTS > 0)
INT16U const OSEventSize = sizeof(OS_EVENT); /* Size in Bytes of OS_EVENT */
INT16U const OSEventTblSize = sizeof(OSEventTbl); /* Size of OSEventTbl[] in bytes */
#else
INT16U const OSEventSize = 0;
INT16U const OSEventTblSize = 0;
#endif
INT16U const OSFlagEn = OS_FLAG_EN;
#if (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0)
INT16U const OSFlagGrpSize = sizeof(OS_FLAG_GRP); /* Size in Bytes of OS_FLAG_GRP */
INT16U const OSFlagNodeSize = sizeof(OS_FLAG_NODE); /* Size in Bytes of OS_FLAG_NODE */
INT16U const OSFlagWidth = sizeof(OS_FLAGS); /* Width (in bytes) of OS_FLAGS */
#else
INT16U const OSFlagGrpSize = 0;
INT16U const OSFlagNodeSize = 0;
INT16U const OSFlagWidth = 0;
#endif
INT16U const OSFlagMax = OS_MAX_FLAGS;
INT16U const OSFlagNameSize = OS_FLAG_NAME_SIZE; /* Size (in bytes) of flag names */
INT16U const OSLowestPrio = OS_LOWEST_PRIO;
INT16U const OSMboxEn = OS_MBOX_EN;
INT16U const OSMemEn = OS_MEM_EN;
INT16U const OSMemMax = OS_MAX_MEM_PART; /* Number of memory partitions */
INT16U const OSMemNameSize = OS_MEM_NAME_SIZE; /* Size (in bytes) of partition names */
#if (OS_MEM_EN > 0) && (OS_MAX_MEM_PART > 0)
INT16U const OSMemSize = sizeof(OS_MEM); /* Mem. Partition header sine (bytes) */
INT16U const OSMemTblSize = sizeof(OSMemTbl);
#else
INT16U const OSMemSize = 0;
INT16U const OSMemTblSize = 0;
#endif
INT16U const OSMutexEn = OS_MUTEX_EN;
INT16U const OSPtrSize = sizeof(void *); /* Size in Bytes of a pointer */
INT16U const OSQEn = OS_Q_EN;
INT16U const OSQMax = OS_MAX_QS; /* Number of queues */
#if (OS_Q_EN > 0) && (OS_MAX_QS > 0)
INT16U const OSQSize = sizeof(OS_Q); /* Size in bytes of OS_Q structure */
#else
INT16U const OSQSize = 0;
#endif
INT16U const OSRdyTblSize = OS_RDY_TBL_SIZE; /* Number of bytes in the ready table */
INT16U const OSSemEn = OS_SEM_EN;
INT16U const OSStkWidth = sizeof(OS_STK); /* Size in Bytes of a stack entry */
INT16U const OSTaskCreateEn = OS_TASK_CREATE_EN;
INT16U const OSTaskCreateExtEn = OS_TASK_CREATE_EXT_EN;
INT16U const OSTaskDelEn = OS_TASK_DEL_EN;
INT16U const OSTaskIdleStkSize = OS_TASK_IDLE_STK_SIZE;
INT16U const OSTaskProfileEn = OS_TASK_PROFILE_EN;
INT16U const OSTaskMax = OS_MAX_TASKS + OS_N_SYS_TASKS; /* Total max. number of tasks */
INT16U const OSTaskNameSize = OS_TASK_NAME_SIZE; /* Size (in bytes) of task names */
INT16U const OSTaskStatEn = OS_TASK_STAT_EN;
INT16U const OSTaskStatStkSize = OS_TASK_STAT_STK_SIZE;
INT16U const OSTaskStatStkChkEn = OS_TASK_STAT_STK_CHK_EN;
INT16U const OSTaskSwHookEn = OS_TASK_SW_HOOK_EN;
INT16U const OSTCBPrioTblMax = OS_LOWEST_PRIO + 1; /* Number of entries in OSTCBPrioTbl[] */
INT16U const OSTCBSize = sizeof(OS_TCB); /* Size in Bytes of OS_TCB */
INT16U const OSTicksPerSec = OS_TICKS_PER_SEC;
INT16U const OSTimeTickHookEn = OS_TIME_TICK_HOOK_EN;
INT16U const OSVersionNbr = OS_VERSION;
#endif
/*$PAGE*/
/*
*********************************************************************************************************
* DEBUG DATA
* TOTAL DATA SPACE (i.e. RAM) USED BY uC/OS-II
********************************************************************************************************