📄 mk_irtos.h
字号:
#ifndef _MK_IRTOS_H_
#define _MK_IRTOS_H_
#include "mk_conf.h"
/*-----------------------------------------------------------------
* Data Type Definition
*-----------------------------------------------------------------*/
#ifndef __CHAR
#define __CHAR
typedef char CHAR;
#endif
#ifndef __UCHAR
#define __UCHAR
typedef unsigned char UCHAR;
#endif
#ifndef __UNSIGNED_CHAR
#define __UNSIGNED_CHAR
typedef unsigned char UNSIGNED_CHAR;
#endif
#ifndef __OPTION
#define __OPTION
typedef unsigned char OPTION;
#endif
#ifndef __SHORT
#define __SHORT
typedef short SHORT;
#endif
#ifndef __USHORT
#define __USHORT
typedef unsigned short USHORT;
#endif
#ifndef __STATUS
#define __STATUS
typedef int STATUS;
#endif
#ifndef __BOOLEAN
#define __BOOLEAN
typedef int BOOLEAN;
#endif
#ifndef __INT
#define __INT
typedef int INT;
#endif
#ifndef __UINT
#define __UINT
typedef unsigned int UINT;
#endif
#ifndef __UNSIGNED
#define __UNSIGNED
typedef unsigned long UNSIGNED;
#endif
#ifndef __LONG
#define __LONG
typedef long LONG;
#endif
#ifndef __ULONG
#define __ULONG
typedef unsigned long ULONG;
#endif
#ifndef __VOID
#define __VOID
typedef void VOID;
#endif
#if 0 /* #143@123# KBA : Commented */
#ifndef __LOGLEVEL
#define __LOGLEVEL
typedef long LOGLEVEL;
#endif
#endif
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
#ifndef __INT8
#define __INT8
typedef char INT8;
#endif
#ifndef __UINT8
#define __UINT8
typedef unsigned char UINT8;
#endif
#ifndef __INT16
#define __INT16
typedef signed short INT16;
#endif
#ifndef __UINT16
#define __UINT16
typedef unsigned short UINT16;
#endif
#ifndef __INT32
#define __INT32
typedef signed long INT32;
#endif
#ifndef __UINT32
#define __UINT32
typedef unsigned long UINT32;
#endif
#ifndef MK_NULL
#define MK_NULL (void *)0
#endif
/*-----------------------------------------------------------------
* Constant Definition
*-----------------------------------------------------------------*/
#define MK_NO_ERROR 0
#define MK_ERROR -1
#define MK_TIMEOUT -2
#define MK_RESOURCE_ERROR -3
#define MK_WORDALIGN_ERROR -4
#define MK_SMALLMEMORY_ERROR -5
#define MK_NAME_MAX 16
#define MK_TASK_MIN_PRIORITY 0
#define MK_TASK_MAX_PRIORITY 255
#define Idle_Task 255
#define MK_DEFAULT_TIMESLICE 1
#define MK_TASK_FIFO 0 /* FIFO Schedule in Same Priority Task */
#define MK_TASK_RR 1 /* Round-Robin Schedule in Same Priority Task */
#define MK_SERVICE_FIFO 0
#define MK_SERVICE_PRIORITY 1
#define MK_WAIT_FOREVER -1
#define MK_NO_WAIT 0
#define MK_TIMER_DISABLE 0
#define MK_TIMER_ENABLE 1
#define MK_INTERRUPT_DISABLE 0xc0
#define MK_INTERRUPT_ENABLE 0x00
#define MK_UPDATE_NORMAL 0
#define MK_UPDATE_IGNORE 1
#define MK_FIXED_SIZE 0
#define MK_VARIABLE_SIZE 1
#define MK_EVENT_OR 0x00000000
#define MK_OR_CONSUME 0x00000001
#define MK_EVENT_AND 0x00000002
#define MK_AND_CONSUME 0x00000003
/*-----------------------------------------------------------------
* Structure Definition
*-----------------------------------------------------------------*/
typedef struct mk_pending_list_struct {
struct mk_task_struct *p_Head;
struct mk_task_struct *p_Tail;
ULONG p_Sem;
BOOLEAN p_Options;
} MK_PENDING_LIST;
typedef struct mk_task_struct {
ULONG t_Magic; /* Magic Value of Task Control Block */
ULONG t_CurrentOfStack; /* Current Pointer of Stack */
ULONG t_TopOfStack; /* Top Pointer of Stack */
ULONG t_BottomOfStack; /* Bottom Pointer of Stack */
ULONG t_PreviousCurrentOfStack; /* Used in Signal */
ULONG t_LengthofStackArea; /* Length of Reserved Stack Area */
ULONG t_Status; /* Status of Task */
ULONG t_Priority; /* Priority of Task */
void (*t_Function)(ULONG, VOID*); /* Fucntion for Task */
LONG t_RemainedTimeSlice; /* Remained Time Slice */
LONG t_TimeSlice; /* Initialized TimeSlice */
LONG t_UsedTimeSlice; /* Accumulated Timeslice */
LONG t_DelayedDeltaTicks; /* Use temporary in DelayedList */
ULONG t_Arg1;
VOID *t_Arg2;
CHAR *t_pName; /* Task's Name */
//CHAR t_pName[MK_NAME_MAX]; /* Task's Name */
ULONG t_PendingList; /* Pending List to whitch task is pending */
ULONG t_pendingMemSize; /* Value during memory Pending */
#if _MK_TPORT
ULONG t_PortPending;
ULONG t_PortValueAvailable;
ULONG t_PortValue; /* Value during port Pending */
#endif
#if _MK_SIGNAL
ULONG t_Signal;
ULONG t_SigMask;
VOID (*t_pSigFunction)(ULONG);
#endif
#if _MK_EVENT
ULONG t_EventRequested; /* Event Flag */
ULONG t_EventOperation; /* Event Flag */
ULONG t_EventActualEvents; /* Event Flag */
#endif
struct mk_task_struct *t_pTaskNext;
struct mk_task_struct *t_pTaskPrev;
struct mk_task_struct *t_pTaskReadyNext;
struct mk_task_struct *t_pTaskReadyPrev;
struct mk_task_struct *t_pDelayedNext;
struct mk_task_struct *t_pDelayedPrev;
struct mk_task_struct *t_pPendingNext;
struct mk_task_struct *t_pPendingPrev;
} MK_TASK;
/* coded by ympark */
typedef struct mk_protect_struct {
struct mk_task_struct *P_Task;
struct mk_pending_list_struct p_PendingList;
} MK_PROTECT;
typedef void(*MK_TIMER_FUNC_T)(ULONG);
typedef struct mk_timer_struct {
ULONG tm_Magic;
LONG tm_Expirations; //number of expiration
ULONG tm_InitialTime; //initial time of timer
ULONG tm_ExpireTime; //time to expire
ULONG tm_RepeateTime; //repeate time of timer
LONG tm_Arg1;
char *tm_Arg2;
CHAR *tm_pName;
MK_TIMER_FUNC_T tm_Function;
BOOLEAN tm_Status;
struct mk_timer_struct *tm_pActivedNext;
struct mk_timer_struct *tm_pActivedPrev;
struct mk_timer_struct *tm_pNext;
struct mk_timer_struct *tm_pPrev;
} MK_TIMER;
typedef struct mk_semaphore_struct {
ULONG s_Magic;
LONG s_Count;
struct mk_pending_list_struct s_PendingList;
struct mk_semaphore_struct *s_Prev;
struct mk_semaphore_struct *s_Next;
CHAR *s_pName;
} MK_SEMAPHORE;
typedef struct mk_fixed_queue_msg_struct {
ULONG fm_StartOfMsg;
ULONG fm_Length;
struct mk_fixed_queue_msg_struct *fm_pNext;
} MK_FIXED_QUEUE_MSG;
typedef struct mk_memory_block_struct {
ULONG mb_Magic; /* Heap Pointer */
ULONG mb_Size;
struct mk_memory_block_struct *mb_pNext;
} MK_MBLOCK;
typedef struct mk_heap_struct {
ULONG h_Magic;
LONG h_Options; /* FIFO, or Priority */
ULONG h_StartofHeap;
ULONG h_HeapSize;
ULONG h_FreeSize;
ULONG h_MinSize;
CHAR *h_pName;
struct mk_pending_list_struct h_PendingList;
struct mk_memory_block_struct *h_pFreeMBlockList;
struct mk_heap_struct *h_pNext;
struct mk_heap_struct *h_pPrev;
} MK_HEAP;
extern struct mk_heap_struct *MK_pHeapListHead;
extern struct mk_heap_struct *MK_pHeapListTail;
typedef struct mk_heap_dummy_struct {
struct mk_heap_struct *md_pHeap; /* Heap Pointer */
ULONG md_Size; /* Allocated Memory Size */
ULONG reserved;
} MK_MBLOCK_DUMMY;
typedef struct mk_buffer_pool_struct {
ULONG bp_Magic;
ULONG bp_Size;
ULONG bp_StartofBufferPool;
ULONG bp_InitCount;
ULONG bp_NextBuffer; /* Next Buffer Pointer */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -