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

📄 sys_call_abstract.h

📁 三星ic 9980的源代码. 718版.
💻 H
字号:
/******************************************************************************
 *   Filename    : Sys_call_abstract.h                                        *
 *   Start date  : 2002. 10. 30.                                              *
 *   By          : Taejin Kwon                                                *             
 *   Contact     : tj1kwon@samsung.co.kr                                      *
 *   Description : System call abstractions to build OS independent           *
 *                application. Most of all system call of a OS are wrapped    *
 *                by this abstraction layer. But, in the some case, there are *
 *                some system call cannot replace.                            *
 ******************************************************************************
 */
#ifndef _SYS_CALL_ABSTRACT_H_
#define _SYS_CALL_ABSTRACT_H_

#ifdef __cplusplus
extern "C" {
#endif

#if	( _DEBUG && !_RELEASE_IN_DEBUG )
	void _ASSERT(char *file, unsigned int line);
	#define ASSERT(x)				\
	if( x )							\
		NULL;						\
	else							\
		_ASSERT(__FILE__, __LINE__)
	
	#define SysPrintf	_SysPrintf
#else
	#define ASSERT(x)	NULL	
	// #define	SysPrintf //changed to inline by hspark to suppress Warning Messages.
	// __pure __inline void SysPrintf(const char *fmt, ... )
	// {
	// }	
#endif

/**************************************************
 *  Common include and type redefine
 *************************************************/
/* System call return value wrapper */
typedef	enum {
	SYS_RETURN_SUCCESS	= 0,
	SYS_RETURN_FAIL		= -1
}SysReturn_t;

/**************************************************
 *  Selectable include and type redefine
 *  If you want to adopt this in a new OS, set 
 *  followings from "CHANGE START" to "CHANGE END".
 *************************************************/
		/*** CHANGE START ***/
#include "mk_iRTOS.h"

/* Redefine INSTANS */
typedef	MK_TASK				SysTask_t;
typedef MK_QUEUE			SysQueue_t;
typedef MK_SEMAPHORE			SysSema_t;
typedef MK_EVENT			SysEventGrp_t;
typedef MK_HEAP				SysMemPool_t;
typedef	MK_HISR				SysHisr_t;
typedef	MK_QUEUE			SysPipe_t;
typedef MK_POOL				SysPartPool_t;
typedef	MK_TIMER			SysTimer_t;
typedef MK_MBOX				SysMailBox_t;

/* Set service function argument wrapper */
typedef	CHAR				SysName_t;
typedef	UNSIGNED			SysArgc_t;
typedef	VOID				SysArgv_t;
typedef	VOID				SysAddr_t;
typedef	UNSIGNED			SysSize_t;
typedef UNSIGNED			SysNumber_t;
typedef	OPTION				SysPriority_t;
typedef OPTION				SysHisrPriority_t;
typedef	UNSIGNED			SysTimeTick_t;
typedef	UNSIGNED			SysTimeMSec_t;
typedef	OPTION				SysPreempt_t;
typedef OPTION				SysAutoStart_t;
typedef	OPTION				SysMsgType_t;
typedef	VOID				SysMsg_t;
typedef	UNSIGNED			SysWait_t;
typedef	OPTION				SysSusType_t;  /* Suspend type */
typedef	OPTION				SysEnable_t;
typedef	UNSIGNED			SysEvent_t;
typedef	OPTION				SysEventType_t;
typedef UNSIGNED			SysSignal_t;
typedef INT					SysInterruptNum_t;
typedef INT					SysInterruptLevel_t;

typedef VOID(*SysEntryPtr_t)(UNSIGNED, VOID *); /* Function entry pointer */
typedef VOID(*SysTimerExpire_t)(UNSIGNED); 	/* expiration routine of timer */
typedef VOID(*SysSignalHandler_t)(UNSIGNED); 	/* Signal handler routine */
typedef VOID(*SysHisrEntryPtr_t)(VOID);		/* Hisr entry pointer */
typedef VOID(*SysLisrEntryPtr_t)(INT);		/* Lisr entry pointer */

/*----------------------------------------------------------------------------------
 *     For Task control
 *----------------------------------------------------------------------------------*/
#define	MAX_PRIORITY_VALUE	255 		/* Maximum priority value */
#define	PRIORITY_MAX_HIGH	0			/* If maximum priority value is high priority,
										 * this value is '0', But vice versa '1'.		*/

#define	TASK_START			1			/* SysAutoStart_t */
#define	TASK_NO_START		0			/* SysAutoStart_t */
#define	TASK_PREEMPT		1			/* SysPreempt_t */
#define	TASK_NO_PREEMPT		0			/* SysPreempt_t */

#define	INTERRUPT_DISABLE	MK_INTERRUPT_DISABLE
#define	INTERRUPT_ENABLE	MK_INTERRUPT_ENABLE

/*----------------------------------------------------------------------------------
 *     For Message Queue control
 *----------------------------------------------------------------------------------*/
#define SYS_FIFO		MK_SERVICE_FIFO       	/* SysSusType_t */
#define SYS_PRIORITY		MK_SERVICE_PRIORITY   	/* SysSusType_t */

#define MSG_FIXED_SIZE		MK_FIXED_SIZE			/* SysMsgType_t */
#define MSG_VARIABLE_SIZE	MK_VARIABLE_SIZE		/* SysMsgType_t */

#define	SYS_WAIT		MK_WAIT_FOREVER			/* SysWait_t */
#define	SYS_NO_WAIT		MK_NO_WAIT				/* SysWait_t */

/*----------------------------------------------------------------------------------
 *     For Timer control
 *----------------------------------------------------------------------------------*/
#define TIMER_ENABLE		MK_TIMER_ENABLE			/* SysEnable_t */
#define TIMER_DISABLE		MK_TIMER_DISABLE		/* SysEnable_t */

/*----------------------------------------------------------------------------------
 *     For Event Group
 *----------------------------------------------------------------------------------*/
#define EVENT_AND			MK_EVENT_AND		/* SysEventType_t */
#define EVENT_OR			MK_EVENT_OR			/* SysEventType_t */
#define EVENT_AND_CONSUME	MK_AND_CONSUME		/* SysEventType_t */
#define EVENT_OR_CONSUME	MK_OR_CONSUME		/* SysEventType_t */

/*----------------------------------------------------------------------------------
 *     For Interrupt control
 *----------------------------------------------------------------------------------*/
//#define INTERRUPT_ENABLE		0x00				/* SysInterruptLevel_t */
//#define INTERRUPT_DISABLE		0xC0				/* SysInterruptLevel_t */

#ifndef	MK_Tick_Rate
#define	MK_Tick_Rate			500
#endif

#ifndef	MK_Ticks_Per_Second
#define MK_Ticks_Per_Second	(1000000 / MK_Tick_Rate)
#endif

#define SysTickToUSec(x) ((ULONG)(MK_Tick_Rate*(x)))
#define SysMSecToTick(x) ((SysTimeTick_t)(MK_Ticks_Per_Second * (x))/1000.0 )

/*
 *	   For memory management of Task and Queue,HISR
 */
/*** CHANGE END ***/

/**************************************************
 *  Functions redefined
 *************************************************/

/*** Memory ***/
void *SysMalloc( SysSize_t size );
SysReturn_t SysFree( void *pointer );
	/*** Initialize ***/
	/*** Task ***/
SysReturn_t SysCreateTask( SysTask_t *task, SysName_t *name, 
					SysEntryPtr_t entry, SysArgc_t argc,
					SysArgv_t *argv,
					SysSize_t stack_size, SysPriority_t priority, 
					SysTimeTick_t time_slice, SysPreempt_t preempt,
					SysAutoStart_t auto_start );
SysReturn_t SysDeleteTask( SysTask_t *task );
SysReturn_t SysResumeTask( SysTask_t *task );
SysReturn_t SysSleep( SysTimeTick_t	ticks );
SysReturn_t SysSuspendTask( SysTask_t	*task );

	/*** Message Queue */
SysReturn_t SysCreateMsgQ( SysQueue_t *queue, SysName_t *name, 
					SysSize_t queue_size,
					SysMsgType_t msg_type, SysSize_t msg_size,
					SysSusType_t suspend_type );
SysReturn_t SysDeleteMsgQ( SysQueue_t *queue );
SysReturn_t SysReceiveMsg( SysQueue_t *queue, SysMsg_t *msg,
					SysSize_t msg_size, SysSize_t *real_size,
					SysWait_t wait  );
SysReturn_t SysSendMsgToFront( SysQueue_t *queue, SysMsg_t *msg,
					SysSize_t msg_size, SysWait_t wait );
SysReturn_t SysSendMsg( SysQueue_t *queue,
					SysMsg_t *msg,
					SysSize_t msg_size,
					SysWait_t wait );
SysReturn_t SysResetMsg( SysQueue_t *queue );

	/*** Semaphore ***/
SysReturn_t SysCreateSema( SysSema_t *sema,
					SysName_t *name,
					SysSize_t init_count,
					SysSusType_t suspend );
SysReturn_t SysDeleteSema( SysSema_t *sema );
SysReturn_t SysGetSema( SysSema_t *sema,
					SysWait_t wait  );
SysReturn_t SysReleaseSema( SysSema_t *sema );
	/*** Timer ***/
SysReturn_t SysSetTimer( SysTimer_t *timer,
					SysName_t *name,
					SysTimerExpire_t func,
					SysNumber_t id,
					SysTimeTick_t init_time,
					SysTimeTick_t resched_time,
					SysEnable_t enable );
SysReturn_t SysControlTimer( SysTimer_t *timer,
					SysEnable_t enable );
SysReturn_t SysKillTimer( SysTimer_t *timer );
					
SysReturn_t SysResetTimer( SysTimer_t			*timer,
						 SysTimerExpire_t	func,
						 SysTimeTick_t		initial_time,
						 SysTimeTick_t		reschedule_time,
						 SysEnable_t		enable );
						 
SysTimeTick_t SysRetrieveClock(void  );
void _SysPrintf( const char *fmt, ... );
						  
	/*** Event Group ***/
	/**** Interrupt ****/
SysReturn_t SysActivateHisr( SysHisr_t *hisr );
SysReturn_t SysCreateHisr( SysHisr_t *hisr, SysName_t *name,
					SysHisrEntryPtr_t hisr_entry,
					SysHisrPriority_t priority,
					SysSize_t stack_size );
SysReturn_t SysDeleteHisr( SysHisr_t *hisr );
SysReturn_t SysRegisterLisr( SysInterruptNum_t vector, 
					SysLisrEntryPtr_t new_lisr );
#ifdef __cplusplus
}
#endif

#endif /* _SYS_CALL_ABSTRACT_H_ */

⌨️ 快捷键说明

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