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

📄 mk_irtos.h

📁 SAMSUNG 5009的源代码
💻 H
📖 第 1 页 / 共 3 页
字号:
	MK_S32_t		t_TimeSlice;				/* Initialized TimeSlice */
	MK_S32_t		t_UsedTimeSlice;			/* Accumulated Timeslice */
	MK_S32_t		t_DelayedDeltaTicks;			/* Use temporary in DelayedList */
	MK_U32_t		t_Arg1;
	MK_Void_t		*t_Arg2;
	MK_S8_t		*t_pName;				/* Task's Name */
	/* MK_S8_t	t_pName[MK_NAME_MAX]; */			/* Task's Name */

/*	MK_U32_t		t_PendingList;		*/		/* Pending List to whitch task is pending */
	struct mk_pending_list_struct		*t_pPendingList;			/* Pending List to whitch task is pending */
	MK_U32_t		t_pendingMemSize;			/* Value during memory Pending */

#ifdef	_MK_TPORT
	MK_U32_t		t_PortPending;
	MK_U32_t		t_PortValueAvailable;
	MK_U32_t		t_PortValue;				/* Value during port Pending */
#endif
#ifdef	_MK_SIGNAL
	MK_U32_t		t_Signal;
	MK_U32_t		t_SigMask;
	MK_Void_t		(*t_pSigFunction)(MK_U32_t);
#endif
#ifdef	_MK_EVENT
	MK_U32_t		t_EventRequested;			/* Event Flag */
	MK_U32_t		t_EventOperation;			/* Event Flag */
	MK_U32_t		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;

#if 0
	typedef struct {
		MK_U32_t Field[35+MK_STRUCT_FIELD_MARGIN];
	} MK_TASK;
#endif /* 0 */

#if 0
/* coded by ympark */
typedef struct mk_protect_struct {
	struct mk_task_struct *P_Task;

	struct mk_pending_list_struct p_PendingList;
} MK_PROTECT;
#endif /* 0 */

typedef MK_Void_t (*MK_TIMER_FUNC_T)(MK_U32_t);

typedef struct mk_timer_struct {
	MK_U32_t	tm_Magic;
	MK_S32_t		tm_Expirations;		//number of expiration
	MK_U32_t	tm_InitialTime;		//initial time of timer
	MK_U32_t	tm_ExpireTime;		//time to expire
	MK_U32_t	tm_RepeateTime;		//repeate time of timer
	MK_S32_t	tm_Arg1;
	MK_S8_t	*tm_Arg2;
	MK_S8_t	*tm_pName;
	MK_TIMER_FUNC_T	tm_Function;
	MK_Bool_t		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;

#if 0
	typedef struct {
		MK_U32_t Field[14+MK_STRUCT_FIELD_MARGIN];
	} MK_TIMER;
#endif /* 0 */

typedef struct mk_semaphore_struct {
	MK_U32_t	s_Magic;
	MK_S32_t	s_Count;
	struct mk_pending_list_struct s_PendingList;
	struct mk_semaphore_struct	*s_Prev;
	struct mk_semaphore_struct	*s_Next;
	MK_S8_t	*s_pName;
} MK_SEMAPHORE;

#if 0
	typedef struct {
		MK_U32_t Field[9+MK_STRUCT_FIELD_MARGIN];
	} MK_SEMAPHORE;
#endif /* 0 */


typedef struct mk_fixed_queue_msg_struct {
	MK_U32_t	fm_StartOfMsg;
	MK_U32_t	fm_Length;
	struct mk_fixed_queue_msg_struct *fm_pNext;
} MK_FIXED_QUEUE_MSG;

typedef struct mk_memory_block_struct {
	MK_U32_t	mb_Magic;				/* Heap Pointer */
	MK_U32_t	mb_Size;
	struct mk_memory_block_struct *mb_pNext;
} MK_MBLOCK;

typedef struct mk_heap_struct {
	MK_U32_t	h_Magic;
	MK_S32_t	h_Options;			/* FIFO, or Priority */
	MK_U32_t	h_StartofHeap;
	MK_U32_t	h_HeapSize;
	MK_U32_t	h_FreeSize;
	MK_U32_t	h_MinSize;
	MK_S8_t 	*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;

#if 0
	typedef struct {
		MK_U32_t Field[14+MK_STRUCT_FIELD_MARGIN];
	} MK_HEAP;
#endif /* 0 */


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 */
	MK_U32_t	md_Size;				/* Allocated Memory Size */
	MK_U32_t	reserved;
} MK_MBLOCK_DUMMY;

typedef struct mk_buffer_pool_struct {
	MK_U32_t	bp_Magic;
	MK_U32_t	bp_Size;
	MK_U32_t	bp_StartofBufferPool;
	MK_S32_t	bp_InitCount;
	MK_U32_t	bp_NextBuffer;				/* Next Buffer Pointer */
	MK_S8_t	*bp_pName;
	struct mk_semaphore_struct bp_Semaphore;
	struct mk_buffer_pool_struct *bp_pNext;
	struct mk_buffer_pool_struct *bp_pPrev;
} MK_POOL;

#if 0
	typedef struct {
		MK_U32_t Field[14+MK_STRUCT_FIELD_MARGIN];
	} MK_POOL;
#endif /* 0 */


typedef struct mk_fixed_msg_queue_struct {
	MK_U32_t	fq_Magic;
	MK_U32_t	fq_AvailableSize;
	struct mk_fixed_queue_msg_struct *fq_pMsgListHead;
	struct mk_fixed_queue_msg_struct *fq_pMsgListTail;
	struct mk_buffer_pool_struct	fq_Pool;	/* Include SendSemaphore */
	struct mk_semaphore_struct		fq_ReceiveSemaphore;
} MK_FIXED_QUEUE;

typedef struct mk_variable_queue_msg_struct {
	MK_U32_t	vm_StartOfMsg;
	MK_U32_t	vm_Length;
	struct mk_variable_queue_msg_struct *vm_pNext;
} MK_VARIABLE_QUEUE_MSG;

typedef struct mk_variable_msg_queue_struct {
	MK_U32_t	vq_Magic;
	MK_U32_t	vq_MaxSize;
	struct mk_variable_queue_msg_struct *vq_pMsgListHead;
	struct mk_variable_queue_msg_struct *vq_pMsgListTail;
	struct mk_heap_struct vq_Heap;				/* Include SendSemaphore */
	struct mk_semaphore_struct vq_ReceiveSemaphore;
} MK_VARIABLE_QUEUE;

typedef struct mk_msg_queue_struct {
	MK_U32_t	m_Type;
	struct mk_msg_queue_struct *m_pNext;
	struct mk_msg_queue_struct *m_pPrev;
	MK_S8_t	*m_pName;
	union {
		struct mk_fixed_msg_queue_struct mu_FixedQueue;
		struct mk_variable_msg_queue_struct mu_VariableQueue;
	} m_Queue;
} MK_QUEUE;

#if 0
	typedef struct {
		MK_U32_t Field[31+MK_STRUCT_FIELD_MARGIN];
	} MK_QUEUE;
#endif /* 0 */


typedef struct mk_port_msg_struct {
	MK_U32_t	pm_Msg;							/* Msg Pointer */
	MK_S32_t		pm_MsgLength;
	MK_S32_t		pm_BufLength;
	struct mk_port_msg_struct	*pm_pNext;
} MK_PORT_MSG;

typedef struct mk_message_port_struct {
	MK_U32_t	p_Magic;
	MK_S32_t	p_MsgCount;
	MK_S32_t	p_MaxMsg;
	MK_S8_t	*p_Name;
	struct mk_message_port_struct	*p_pNext;
	struct mk_message_port_struct	*p_pPrev;
	struct mk_port_msg_struct *p_pMsgFreeList;
	struct mk_port_msg_struct *p_pMsgListHead;
	struct mk_port_msg_struct *p_pMsgListTail;
	struct mk_semaphore_struct p_SendSemaphore;
	struct mk_semaphore_struct p_ReceiveSemaphore;
} MK_PORT;

#if 0
	typedef struct {
		MK_U32_t Field[27+MK_STRUCT_FIELD_MARGIN];
	} MK_PORT;
#endif /* 0 */


typedef struct mk_msg_mailbox_struct {
	MK_U32_t	mb_Magic;
	MK_U32_t	mb_Msg;								/* Msg Pointer */
	MK_U32_t	mb_StartOfMsg;
	MK_U32_t	mb_MsgLength;
	MK_U32_t	mb_BufferSize;
	MK_S8_t   	*mb_pName;
	struct mk_msg_mailbox_struct *mb_pNext;
	struct mk_msg_mailbox_struct *mb_pPrev;
	struct mk_semaphore_struct mb_SendSemaphore;
	struct mk_semaphore_struct mb_ReceiveSemaphore;
} MK_MBOX;

#if 0
	typedef struct {
		MK_U32_t Field[26+MK_STRUCT_FIELD_MARGIN];
	} MK_MBOX;
#endif /* 0 */

typedef struct mk_hisr_struct {
	MK_U32_t	t_Magic;						/* Magic Value of Task Control Block */
	MK_U32_t	t_CurrentOfStack;				/* Current Pointer of Stack */
	MK_U32_t	t_TopOfStack;					/* Top Pointer of Stack */
	MK_U32_t	t_BottomOfStack;				/* Bottom Pointer of Stack */
	MK_U32_t	t_PreviousCurrentOfStack;		/* Used in Signal */
	MK_U32_t	t_LengthofStackArea;			/* Length of Reserved Stack Area */
	MK_U32_t	reserved1;						/* not used */
	MK_U32_t	t_Priority;						/* Priority of Task */
	MK_Void_t (*t_Function)(MK_Void_t);				/* Fucntion for Task */
	MK_U32_t	reserved2[4];					/* not used */
	MK_U32_t	t_ActivateCount;				/* active count */
	MK_Void_t	*reserved3;						/* not used */
	MK_S8_t	*t_pName;			/* Task's Name */
	//MK_S8_t	t_pName[MK_NAME_MAX];			/* Task's Name */

	MK_U32_t	reserved4;
	MK_U32_t	reserved5;
#ifdef	_MK_TPORT
	MK_U32_t	reserved6[3];
#endif
#ifdef	_MK_SIGNAL
	MK_U32_t	reserved7[2];
	MK_U32_t	reserved8;
#endif
#ifdef	_MK_EVENT
	MK_U32_t	reserved9[2];
	MK_U32_t	reserved10;
#endif

	struct mk_hisr_struct *t_pHISRNext;
	struct mk_hisr_struct *t_pHISRPrev;
	struct mk_hisr_struct *t_pHISRActiveNext;
	struct mk_hisr_struct *t_pHISRActivePrev;
	
	MK_U32_t	*reserved11[4];					/* not used */
} MK_HISR;

#if 0
	typedef struct {
		MK_U32_t Field[35+MK_STRUCT_FIELD_MARGIN];
	} MK_HISR;
#endif /* 0 */


typedef struct mk_event_struct {
	MK_U32_t	e_Magic;					/* Event Magic number */
	MK_U32_t	e_EventValues;					/* Current event flag */
	MK_S8_t	*e_pName;
	struct mk_event_struct *e_pNext;
	struct mk_event_struct *e_pPrev;
	struct mk_pending_list_struct s_PendingList;
} MK_EVENT;

#if 0
	typedef struct {
		MK_U32_t Field[11+MK_STRUCT_FIELD_MARGIN];
	} MK_EVENT;
#endif /* 0 */

#if 0
struct mk_dev_struct;
typedef struct mk_dev_field_struct {
	MK_S32_t	(*df_Init)(struct mk_dev_struct *pDev, MK_U32_t Options);
	MK_S32_t	(*df_Open)(struct mk_dev_struct *pDev, MK_S8_t *pName, MK_S8_t *pMode);
	MK_S32_t	(*df_Close)(struct mk_dev_struct *pDev);
	MK_S32_t	(*df_Read)(struct mk_dev_struct *pDev, MK_S8_t *pBuffer, MK_S32_t Count);
	MK_S32_t	(*df_Write)(struct mk_dev_struct *pDev, MK_S8_t *pBuffer, MK_S32_t Count);
	MK_S32_t	(*df_Seek)(struct mk_dev_struct *pDev, MK_S32_t Position);
	MK_S8_t	(*df_Getc)(struct mk_dev_struct *pDev);
	MK_S32_t	(*df_Putc)(struct mk_dev_struct *pDev, MK_S8_t Ch);
	MK_S32_t	(*df_Ctrl)(struct mk_dev_struct *pDev, MK_S32_t Function, MK_S8_t *pAddr1, MK_S8_t *pAddr2);
	MK_Void_t	(*df_InInterrupt)(MK_Void_t);
	MK_Void_t	(*df_OutInterrupt)(MK_Void_t);

	MK_S32_t	df_InVector;
	MK_S32_t	df_OutVector;
	MK_S32_t	df_Minor;

	MK_S8_t	*df_pName;
	MK_S8_t	*df_pIOBlock;

	MK_U16_t	df_Port;
	
} MK_DEV_FIELD;
#endif /* 0 */


#if 0
typedef struct mk_dev_struct {
	MK_U32_t	d_Magic;
	MK_S32_t	d_ReferenceCount;
	MK_S32_t	(*d_Init)(struct mk_dev_struct *pDev, MK_U32_t Options);
	MK_S32_t	(*d_Open)(struct mk_dev_struct *pDev, MK_S8_t *pName, MK_S8_t *pMode);
	MK_S32_t	(*d_Close)(struct mk_dev_struct *pDev);

⌨️ 快捷键说明

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