📄 sys_call_abstract.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 + -