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

📄 mk_irtos.h

📁 三星ic 9980的源代码. 718版.
💻 H
📖 第 1 页 / 共 2 页
字号:

#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 + -