blob: c6e652eb0025df02be2d3d6c220fcbb9abc011fe [file] [log] [blame]
/************************************************************************
* °æÈ¨ËùÓÐ (C)2001,ÖÐÐËͨѶ¹É·ÝÓÐÏÞ¹«Ë¾¡£
*
* ÎļþÃû³Æ£º base_api.h
* Îļþ±êʶ£º
* ÄÚÈÝÕªÒª£º
*
* ÐÞ¸ÄÈÕÆÚ °æ±¾ºÅ Ð޸ıê¼Ç ÐÞ¸ÄÈË ÐÞ¸ÄÄÚÈÝ
* ---------------------------------------------------------------------
* 2007/11/24 V0.5 ¹¨Òí create
************************************************************************/
#ifndef BASE_API_H_
#define BASE_API_H_
/**************************************************************************
* Í·Îļþ°üº¬ *
**************************************************************************/
#include "oss_api.h"
#include "base_pub.h"
/**************************************************************************
* ³£Á¿ *
**************************************************************************/
/**************************************************************************
* ºê¶¨Òå *
**************************************************************************/
/*KangShuJie 2008.04.03*/
#ifndef CLOCK_TICK
#define CLOCK_TICK 4615385
#endif
#define P_many_receiver 126
#define P_no_receiver 125
#define HISR_ENTRY_CONG(HISR_NAME,ENTRY,PRIO,STACK_SIZE) \
{#HISR_NAME"HISR",ENTRY, &HISR_NAME##_HISR_control,STACK_SIZE,PRIO}
#define PROCESS_ENTRY(PROC_NAME,INSTANCE,ENTRY,PRIO,TIME_SLICE,STACK_SIZE) \
#PROC_NAME":"#INSTANCE, ENTRY, &PROC_NAME##INSTANCE##_task, STACK_SIZE, \
PRIO, TIME_SLICE, { ( P_##PROC_NAME + INSTANCE - 1 ), (queue_table+P_##PROC_NAME+INSTANCE-1) }
#define SIGNAL_NAME(SIG_NAME, SIG_IDNODE) \
(XSIGTYPE)(SIG_NAME & (SIGREFTYPE)0xFFFFFFFF)
#define NU_SUSPEND 0xFFFFFFFFUL
#define NU_MAX_NAME 8
#define SDL_pid SDL_PId
#define SDL_Pid SDL_PId
#define SIGREFTYPE UINT32
#define XINPUTREFTYPE SIGREFTYPE
#define XSIGTYPE SIGREFTYPE
#define XSIGNALHEADERTYPE xSignalHeaderRec
/*SDLÈÎÎñ״̬*/
#define xInput (xInputAction)0
#define xSave (xInputAction)1
#define xDiscard (xInputAction)2
#define xEnablCond (xInputAction)3
#define xPrioInput (xInputAction)4
#define xNotInSignalSet (xInputAction)5
#define SDL_NULL (SDL_PId)0
#define STARTUP_SIGNAL_NAME SIGNAL_NAME(~0, 0)
#define OSS_TASKSELFID_BEGIN 0x00007f00
#define MS_OS_CRITICAL_SECTION_SUPPORT 1
/**************************************************************************
* Êý¾ÝÀàÐÍ *
**************************************************************************/
/*Ïß³ÌÈë¿Úº¯ÊýÀàÐÍ*/
typedef void (*ENTRY)(unsigned long, void *);
typedef void (*HISRENTRY)(void);
typedef struct s_queue *QID;
typedef QID SDL_PId;
typedef struct xSignalHeaderStruct *xSignalHeader;
typedef struct xTimerHeaderStruct *xTimerHeader;
/**************************************************************************
* Êý¾Ý½á¹¹ *
**************************************************************************/
/*HISRÈÎÎñ¿ØÖÆ¿é*/
typedef struct NU_HISR_STRUCT{
UNSIGNED words[22];
VOID(*hisrEntry)(VOID);
ZOSS_THREAD_ID hisrTaskId;
} NU_HISR;
/*Ïß³ÌÈë²Î£¬±£´æÕæÕýµÄÈë¿Úº¯ÊýºÍ²ÎÊý*/
typedef struct entryCb{
ENTRY entry;
unsigned long argc;
VOID *argv;
}EntryCB;
/*HISRÏß³ÌÈë²Î£¬±£´æÈë¿Úº¯Êý*/
typedef struct hisrEntryCb{
HISRENTRY entry;
}HisrEntryCB;
/*´æ·ÅSDLÈÎÎñµÄIDºÍͨѶID*/
struct args{
UINT32 self_id;
SDL_PId self;
};
/*SDLÈÎÎñºÍÏ̵߳ǼDZí*/
struct process_desc{
CHAR *name;
VOID (*entry)(UNSIGNED, VOID *);
ZOSS_THREAD_ID task;
UNSIGNED stack_size;
UINT32 prio;
UNSIGNED time_slice;
struct args args;
};
/*HISRÈÎÎñµÇ¼Ç±í*/
struct hisr_desc{
CHAR *name;
VOID (*entry)( VOID );
NU_HISR *hcb;
UNSIGNED stack_size;
UINT32 prio;
};
typedef struct NU_PROTECT_STRUCT
{
UNSIGNED words[2];
}NU_PROTECT;
/*ÐźÅÁ¿±êʶ*/
typedef struct NU_SEMAPHORE_STRUCT{
ZOSS_SEMAPHORE_ID sem_id;
UNSIGNED initial_count;
DATA_ELEMENT sm_fifo_suspend;
}NU_SEMAPHORE;
/*SDLÈÎÎñÏûϢͷ*/
typedef struct xSignalHeaderStruct{
xSignalHeader pred;
xSignalHeader succ;
SIGREFTYPE SignalCode;
UINT32 sender_id;
SDL_PId Sender;
}xSignalHeaderRec;
/*SDLÈÎÎñͨѶID*/
typedef struct s_queue{
#if 0
ZOSS_THREAD_ID thread_id;
#endif
xSignalHeaderRec list;
ZOSS_SEMAPHORE_ID events;
ZOSS_MUTEX_ID mutex;
VOID *ECB;
}t_queue;
/*SDLÈÎÎñÏêϸÐÅÏ¢£¬Ã¿¸öSDLÈÎÎñ×Ô¼ºÎ¬»¤*/
typedef struct process_vars{
SDL_PId Offspring;
SDL_PId Parent;
SDL_PId Self;
SDL_PId Sender;
xSignalHeaderRec *yInSignalPtr;
xSignalHeaderRec SaveQ;
xSignalHeader CurrentInSaveQ;
UINT8 xState;
XINPUTREFTYPE RestartAddress;
UINT32 SelfId;
}t_process_vars;
/*SDLÈÎÎñ×´Ì¬×ªÒÆ±í*/
typedef struct s_trans_desc{
const xInputAction *ystah;
const XINPUTREFTYPE *ystai;
}t_trans_desc;
/*¶¨Ê±Æ÷¿ØÖƿ飬¿ÉÒÔµ±×÷ÏûϢͷʹÓÃ*/
typedef struct xTimerHeaderStruct{
xTimerHeader ee_succ;
xTimerHeader le_succ;
SIGREFTYPE SignalCode;
SDL_PId Sender;
SdlTimeSpec ee_time;
SdlTimeSpec le_time;
t_timer_param param;
}xTimerHeaderRec;
#if 0
#define MAXIMUMTIMER 1024
typedef struct _TimerContext
{
char timerName[MAX_THREADNAME_LEN];/* ¶¨Ê±Æ÷Ãû³Æ ,×î´óֵͬÏß³ÌÃû*/
ZOSS_TIMER_FUN timerFun; /* ¶¨Ê±Æ÷Ö´Ðлص÷º¯Êý */
UINT32 input; /* »Øµ÷º¯ÊýÈë¿Ú²ÎÊý */
UINT32 timer_expire; /* ¶¨Ê±Æ÷¶¨Ê±³¬Ê±Ê±¼ä */
UINT32 auto_activate; /* ¶¨Ê±Æ÷ÊÇ·ñ¸Õ´´½¨ºÃ¾Í¼¤»î */
BOOL active; /* µ±Ç°¶¨Ê±Æ÷ÊÇ·ñ´¦ÓÚ¼¤»î״̬ */
UINT32 index; /* µ±Ç°ÏîÉÏÏÂÎĵÄË÷Òý */
ZOSS_TIMER_ID timerid; /* ¶¨Ê±Æ÷µÄID */
HANDLE threadHandle; /* ¶¨Ê±Æ÷ËùÔÚÏ̵߳ľä±ú */
BOOL isInUse; /* µ±Ç°ÏîÉÏÏÂÎÄÊÇ·ñÒѾ­±»Ê¹Óà */
BOOL cycle; /* µ±Ç°¶¨Ê±Æ÷ÊÇÖÜÆÚÐԵϹÊÇÖ»Ö´ÐÐÒ»´Î */
}TimerContext;
#endif
/**************************************************************************
* È«¾Öº¯ÊýÔ­ÐÍ *
**************************************************************************/
/*===========================================*/
/*ϵͳ¹ÜÀíÄ£¿é*/
/*===========================================*/
/**************************************************************************
* º¯ÊýÃû³Æ£º nu_is_booting
* ¹¦ÄÜÃèÊö£º ¼ì²âÊÇ·ñ³õʼ»¯Íê³É
* ²ÎÊý˵Ã÷£º (IN)
(OUT)
* ·µ »Ø Öµ£º TURE: the system is booted
FALSE: not completed
* ÆäËü˵Ã÷£º
**************************************************************************/
extern SINT32 nu_is_booting(VOID);
/**************************************************************************
* º¯ÊýÃû³Æ£º SDL_Task_Start
* ¹¦ÄÜÃèÊö£º Æô¶¯SDL ÈÎÎñ
* ²ÎÊý˵Ã÷£º (IN)
process:
staticEntry:
(OUT)
* ·µ »Ø Öµ£º ³É¹¦·´»ØZOSS_SUCCESS£¬Ê§°Ü·´»ØZOSS_ERROR
* ÆäËü˵Ã÷£º
**************************************************************************/
extern UINT32 SDL_Task_Start(struct process_desc *process);
/**************************************************************************
* º¯ÊýÃû³Æ£º Non_SDL_Task_Start
* ¹¦ÄÜÃèÊö£º Æô¶¯SDL ÈÎÎñ
* ²ÎÊý˵Ã÷£º (IN)
process:
additionalEntry:
(OUT)
* ·µ »Ø Öµ£º ³É¹¦·´»ØZOSS_SUCCESS£¬Ê§°Ü·´»ØZOSS_ERROR
* ÆäËü˵Ã÷£º
**************************************************************************/
extern UINT32 Non_SDL_Task_Start(struct process_desc *process);
/**************************************************************************
* º¯ÊýÃû³Æ£º HIRS_Task_Start
* ¹¦ÄÜÃèÊö£º Æô¶¯HISR ÈÎÎñ
* ²ÎÊý˵Ã÷£º (IN)
hisr:
(OUT)
* ·µ »Ø Öµ£º ³É¹¦·´»ØZOSS_SUCCESS£¬Ê§°Ü·´»ØZOSS_ERROR
* ÆäËü˵Ã÷£º
**************************************************************************/
extern UINT32 HIRS_Task_Start(struct hisr_desc *hisr);
/*===========================================*/
/*HISRÈÎÎñ¹ÜÀíÄ£¿é*/
/*===========================================*/
/**************************************************************************
* º¯ÊýÃû³Æ: NU_Create_HISR
* ¹¦ÄÜÃèÊö: ´´½¨HISRÏß³Ì
* ²ÎÊý˵Ã÷: hisr:HISRÖ¸Õë
name:Ïß³ÌÃû³Æ
hisr_entry:Ïß³ÌÈë¿Úº¯Êý
priority:ÓÅÏȼ¶
stack_address:Õ»µØÖ·
stack_size:Õ»´óС
* ·µ »Ø Öµ: ÕýÈ··µ»ØZOSS_SUCCESS£¬´íÎó·µ»ØZOSS_ERROR
* ÆäËü˵Ã÷:
**************************************************************************/
extern UINT32 NU_Create_HISR(NU_HISR *hisr, CHAR *name, VOID (*hisr_entry)(VOID),
OPTION priority, VOID *stack_address, UNSIGNED stack_size);
/**************************************************************************
* º¯ÊýÃû³Æ: NU_Activate_HISR
* ¹¦ÄÜÃèÊö: ¼¤»îHISRÏß³Ì
* ²ÎÊý˵Ã÷: HISRÖ¸Õë
* ·µ »Ø Öµ: ÕýÈ··µ»ØZOSS_SUCCESS£¬´íÎó·µ»ØZOSS_ERROR
* ÆäËü˵Ã÷:
**************************************************************************/
extern UINT32 NU_Activate_HISR(NU_HISR *hisr);
/**************************************************************************
* º¯ÊýÃû³Æ: NU_Init_HISR_Sem
* ¹¦ÄÜÃèÊö: ³õʼ»¯HISRÏ̵߳ĿìËÙÐźÅÁ¿
* ²ÎÊý˵Ã÷:
* ·µ »Ø Öµ:
* ÆäËü˵Ã÷:
**************************************************************************/
extern VOID NU_Init_HISR_Sem(VOID);
/**************************************************************************
* º¯ÊýÃû³Æ: NU_Wait_HISR_Sem
* ¹¦ÄÜÃèÊö: µÈ´ý¿ìËÙÐźÅÁ¿±»ÊÍ·Å
* ²ÎÊý˵Ã÷:
* ·µ »Ø Öµ:
* ÆäËü˵Ã÷:
**************************************************************************/
extern VOID NU_Wait_HISR_Sem(VOID);
/**************************************************************************
* º¯ÊýÃû³Æ: NU_Delete_HISR
* ¹¦ÄÜÃèÊö: ɾ³ýHISR
* ²ÎÊý˵Ã÷: ÎÞ
* ·µ »Ø Öµ: ÕýÈ··µ»ØZOSS_SUCCESS£¬´íÎó·µ»ØZOSS_ERROR
* ÆäËü˵Ã÷:
**************************************************************************/
// P98C-YXS extern UINT32 NU_Delete_HISR(NU_HISR *hisr);
/**************************************************************************
* º¯ÊýÃû³Æ: NU_Current_HISR_Pointer
* ¹¦ÄÜÃèÊö: »ñµÃµ±Ç°HISRÖ¸Õë
* ²ÎÊý˵Ã÷: ÎÞ
* ·µ »Ø Öµ: »ñµÃµ±Ç°HISRÖ¸Õë
* ÆäËü˵Ã÷:
**************************************************************************/
// P98C-YXS extern NU_HISR *NU_Current_HISR_Pointer(VOID);
/**************************************************************************
* º¯ÊýÃû³Æ: NU_Current_Task_Pointer
* ¹¦ÄÜÃèÊö: »ñµÃµ±Ç°ÈÎÎñÖ¸Õë
* ²ÎÊý˵Ã÷: ÎÞ
* ·µ »Ø Öµ: µ±Ç°ÈÎÎñÖ¸Õë
* ÆäËü˵Ã÷: ÖжÏÏ̷߳µ»Ø¿Õ
**************************************************************************/
extern VOID *NU_Current_Task_Pointer(VOID);
/**************************************************************************
* º¯ÊýÃû³Æ: NU_Create_Semaphore
* ¹¦ÄÜÃèÊö: ´´½¨ÐźÅÁ¿
* ²ÎÊý˵Ã÷: semaphore£ºÐźÅÁ¿Ö¸Õë
name:ÐźÅÁ¿Ãû³Æ
initial_count:³õʼֵ
suspend_type:ÀàÐÍ
* ·µ »Ø Öµ: ÕýÈ··µ»ØZOSS_SUCCESS£¬´íÎó·µ»ØZOSS_ERROR
* ÆäËü˵Ã÷:
**************************************************************************/
extern UINT32 NU_Create_Semaphore(NU_SEMAPHORE *semaphore, CHAR *name,
UNSIGNED initial_count, OPTION suspend_type);
/**************************************************************************
* º¯ÊýÃû³Æ: NU_Delete_Semaphore
* ¹¦ÄÜÃèÊö: ɾ³ýÐźÅÁ¿
* ²ÎÊý˵Ã÷: semaphore:ÐźÅÁ¿Ö¸Õë
* ·µ »Ø Öµ: ÕýÈ··µ»ØZOSS_SUCCESS£¬´íÎó·µ»ØZOSS_ERROR
* ÆäËü˵Ã÷:
**************************************************************************/
extern UINT32 NU_Delete_Semaphore(NU_SEMAPHORE *semaphore);
/**************************************************************************
* º¯ÊýÃû³Æ: NU_Obtain_Semaphore
* ¹¦ÄÜÃèÊö: »ñµÃÐźÅÁ¿
* ²ÎÊý˵Ã÷: semaphore:ÐźÅÁ¿Ö¸Õë
suspend:ÀàÐÍ
* ·µ »Ø Öµ: ÕýÈ··µ»ØZOSS_SUCCESS£¬´íÎó·µ»ØZOSS_ERROR
* ÆäËü˵Ã÷:
**************************************************************************/
extern UINT32 NU_Obtain_Semaphore(NU_SEMAPHORE *semaphore, UNSIGNED suspend);
/**************************************************************************
* º¯ÊýÃû³Æ: NU_Release_Semaphore
* ¹¦ÄÜÃèÊö: ÊÍ·ÅÐźÅÁ¿
* ²ÎÊý˵Ã÷: semaphore:ÐźÅÁ¿Ö¸Õë
* ·µ »Ø Öµ: ÕýÈ··µ»ØZOSS_SUCCESS£¬´íÎó·µ»ØZOSS_ERROR
* ÆäËü˵Ã÷:
**************************************************************************/
extern UINT32 NU_Release_Semaphore(NU_SEMAPHORE *semaphore);
/**************************************************************************
* º¯ÊýÃû³Æ: NU_Reset_Semaphore
* ¹¦ÄÜÃèÊö: ÖØÉèÐźÅÁ¿
* ²ÎÊý˵Ã÷: semaphore:ÐźÅÁ¿Ö¸Õë
initial_count:³õʼֵ
* ·µ »Ø Öµ: ÕýÈ··µ»ØZOSS_SUCCESS£¬´íÎó·µ»ØZOSS_ERROR
* ÆäËü˵Ã÷:
**************************************************************************/
extern UINT32 NU_Reset_Semaphore(NU_SEMAPHORE *semaphore, UNSIGNED initial_count);
/*===========================================*/
/*Òì³£´¦ÀíÄ£¿é*/
/*===========================================*/
/**************************************************************************
* º¯ÊýÃû³Æ£ºnu_exception
* ¹¦ÄÜÃèÊö£º Òì³£´¦Àí
* ²ÎÊý˵Ã÷£º (IN)
line_number:ÐÐÊý
filename:ÎļþÃû
un_status:״ֵ̬
(OUT)
* ·µ »Ø Öµ£º ÎÞ
* ÆäËü˵Ã÷£º
**************************************************************************/
// P98C-YXS extern VOID nu_exception (SINT32 line_number, CHAR *filename, STATUS nu_status);
/*===========================================*/
/*ÄÚ´æ¹ÜÀíÄ£¿é*/
/*===========================================*/
/**************************************************************************
* º¯ÊýÃû³Æ: ps_calloc
* ¹¦ÄÜÃèÊö: ·ÖÅäÒ»×é¿Õ¼ä
* ²ÎÊý˵Ã÷: (IN)
nel:¿éÊý
size:ÿ¿éµÄ´óС
(OUT)
* ·µ »Ø Öµ: ÎÞ
* ÆäËü˵Ã÷:
**************************************************************************/
extern VOID *ps_calloc(size_t nel, size_t size);
/**************************************************************************
* º¯ÊýÃû³Æ: ps_malloc
* ¹¦ÄÜÃèÊö: ´Ó¶ÑÖзÖÅä¿Õ¼ä
* ²ÎÊý˵Ã÷: (IN)
size:´óС
(OUT)
* ·µ »Ø Öµ: ÎÞ
* ÆäËü˵Ã÷:
**************************************************************************/
extern VOID *ps_malloc(size_t size);
/**************************************************************************
* º¯ÊýÃû³Æ: zrealloc
* ¹¦ÄÜÃèÊö: ´ÓзÖÅä¿Õ¼ä
* ²ÎÊý˵Ã÷: (IN)
block:Ô­ÓÐÄÚ´æÖ¸Õë
newsize:еĴóС
(OUT)
* ·µ »Ø Öµ: ÎÞ
* ÆäËü˵Ã÷:
**************************************************************************/
extern VOID *zrealloc(void *block, size_t newsize);
/**************************************************************************
* º¯ÊýÃû³Æ: ps_free
* ¹¦ÄÜÃèÊö: Êͷſռä
* ²ÎÊý˵Ã÷: (IN)
memp:ÄÚ´æÖ¸Õë
(OUT)
* ·µ »Ø Öµ: ÎÞ
* ÆäËü˵Ã÷:
**************************************************************************/
extern VOID ps_free(void *memp);
#if 0
extern VOID *malloc_dma_buffer(size_t size);
extern VOID free_dma_buffer(void *ptr);
#endif
/*===========================================*/
/*ÏûÏ¢¹ÜÀíÄ£¿é*/
/*===========================================*/
/**************************************************************************
* º¯ÊýÃû³Æ: alloc_sig_loc
* ¹¦ÄÜÃèÊö: ·ÖÅäÏûÏ¢¿Õ¼ä
* ²ÎÊý˵Ã÷: (IN)
size:´óС
file:ÎļþÃû
line:³õʼֵ
(OUT)
* ·µ »Ø Öµ: ÕýÈ··µ»ØÄÚ´æÖ¸Õ룬´íÎó·µ»ØNULL
* ÆäËü˵Ã÷:
**************************************************************************/
extern xSignalHeaderRec *alloc_sig_loc(UINT32 size, CHAR *file, SINT32 line);
#define alloc_sig(_size) alloc_sig_loc ((_size), __FILE__, __LINE__)
/**************************************************************************
* º¯ÊýÃû³Æ: free_sig_loc
* ¹¦ÄÜÃèÊö: ÊÍ·ÅÏûÏ¢¿Õ¼ä
* ²ÎÊý˵Ã÷: (IN)
signal_ptr:ÒªÊͷŵÄÄÚ´æÖ¸Õë
file:ÎļþÃû
line:³õʼֵ
(OUT)
* ·µ »Ø Öµ: ÎÞ
* ÆäËü˵Ã÷:
**************************************************************************/
extern VOID free_sig_loc(xSignalHeaderRec *signal_ptr, CHAR *file, SINT32 line);
#define free_sig(_sig_ptr) free_sig_loc((_sig_ptr), __FILE__, __LINE__)
/**************************************************************************
* º¯ÊýÃû³Æ: send_sig_loc
* ¹¦ÄÜÃèÊö: ÏòÒ»¸öSDLÏ̷߳¢ËÍÏûÏ¢
* ²ÎÊý˵Ã÷: (IN)
signal_ptr:ÏûÏ¢¿é
rec_queue:½ÓÊÕ¶ÓÁÐÍ·Ö¸Õë
sig_name:ÐźÅÃû
file:ÎļþÃû
line:ÐÐÊý
(OUT)
* ·µ »Ø Öµ: ÎÞ
* ÆäËü˵Ã÷:
**************************************************************************/
extern void send_sig_loc(
xSignalHeaderRec *signal_ptr, t_queue *rec_queue, char *sig_name, char *file, int line );
#define send_sig(_signal_ptr,_rec_queue ,_sig_name) \
send_sig_loc ((_signal_ptr), (_rec_queue),(_sig_name), __FILE__, __LINE__)
/**************************************************************************
* º¯ÊýÃû³Æ: send_sig_no_to_loc
* ¹¦ÄÜÃèÊö: ¸ù¾ÝÏûÏ¢ÂëÏòÒ»¸öSDLÏ̷߳¢ËÍÏûÏ¢
* ²ÎÊý˵Ã÷: (IN)
signal_ptr:ÏûÏ¢¿é
signal_cod:ÏûÏ¢Âë
file:ÎļþÃû
line:ÐÐÊý
(OUT)
* ·µ »Ø Öµ: ÎÞ
* ÆäËü˵Ã÷: hehaijian for win debug
**************************************************************************/
extern void send_sig_no_to_loc (
xSignalHeaderRec *signal_ptr, unsigned signal_code, CHAR *file, SINT32 line );
#define send_sig_no_to(_signal_ptr, _signal_code, _sig_name ) \
send_sig_no_to_loc ((_signal_ptr), ( _signal_code), __FILE__, __LINE__)
/**************************************************************************
* º¯ÊýÃû³Æ: send_startup_sig_loc
* ¹¦ÄÜÃèÊö: ÏòÒ»¸öSDLÏ̷߳¢ËÍÆô¶¯ÏûÏ¢
* ²ÎÊý˵Ã÷: (IN)
rec_queue:ÏòÒ»¸öÏ̷߳¢ËÍÆô¶¯ÏûÏ¢
file:ÎļþÃû
line:ÐÐÊý
(OUT)
* ·µ »Ø Öµ: ÎÞ
* ÆäËü˵Ã÷:
**************************************************************************/
extern VOID send_startup_sig_loc (
t_queue *rec_queue, CHAR *file, SINT32 line );
#define send_startup_sig(_rec_queue) \
send_startup_sig_loc ((_rec_queue), __FILE__, __LINE__)
/**************************************************************************
* º¯ÊýÃû³Æ: receive_sig_loc
* ¹¦ÄÜÃèÊö: ½ÓÊÕÏûÏ¢
* ²ÎÊý˵Ã÷: (IN)
queue:ÏûÏ¢¶ÓÁÐÍ·
file:ÎļþÃû
line:ÐÐÊý
(OUT)
* ·µ »Ø Öµ: ÏûÏ¢Ö¸Õë
* ÆäËü˵Ã÷: ÓÉSDLÈÎÎñµ÷ÓÃ
**************************************************************************/
extern xSignalHeaderRec *receive_sig_loc(t_queue *queue, CHAR *file, SINT32 line);
#define receive_sig(_queue) receive_sig_loc ((_queue), __FILE__, __LINE__)
/*===========================================*/
/*SDL¶¨Ê±Æ÷¹ÜÀíÄ£¿é*/
/*===========================================*/
/**************************************************************************
* º¯ÊýÃû³Æ: SDL_Set_Dur
* ¹¦ÄÜÃèÊö: ´´½¨Ò»¸öSDL¶¨Ê±Æ÷
* ²ÎÊý˵Ã÷: (IN)
Tick_Expr:¶¨Ê±Æ÷ÖÜÆÚ
timer_name:¶¨Ê±Æ÷Ãû
timer_param:¶¨Ê±Æ÷²ÎÊý
yVarP:Ïß³ÌÐÅÏ¢Ö¸Õë
(OUT)
* ·µ »Ø Öµ: ÎÞ
* ÆäËü˵Ã÷: ÏÈÕÒ¶¨Ê±Æ÷£¬Èç¹ûÕÒµ½Ôò»Ö¸´£¬·ñÔò´´½¨Ò»¸öеÄ
**************************************************************************/
extern VOID SDL_Set_Dur(SDL_Duration Tick_Expr, UINT32 timer_name,
t_timer_param timer_param, t_process_vars *yVarP,BYTE sample_id);
/**************************************************************************
* º¯ÊýÃû³Æ: SDL_Set_Dur_Ex
* ¹¦ÄÜÃèÊö: ´´½¨Ò»¸öSDL¶¨Ê±Æ÷
* ²ÎÊý˵Ã÷: (IN)
Earliest_Tick_Expr:¶¨Ê±Æ÷×îÔçÖÜÆÚ
Latest_Tick_Expr:¶¨Ê±Æ÷×îÍíÖÜÆÚ
timer_name:¶¨Ê±Æ÷Ãû
timer_param:¶¨Ê±Æ÷²ÎÊý
yVarP:Ïß³ÌÐÅÏ¢Ö¸Õë
(OUT)
* ·µ »Ø Öµ: ÎÞ
* ÆäËü˵Ã÷: ÏÈÕÒ¶¨Ê±Æ÷£¬Èç¹ûÕÒµ½ÔòÓÃÐÂÖÜÆÚ»Ö¸´£¬·ñÔò´´½¨Ò»¸öеÄ
**************************************************************************/
extern VOID SDL_Set_Dur_Ex(SDL_Duration Earliest_Tick_Expr, SDL_Duration Latest_Tick_Expr,
UINT32 timer_name, t_timer_param timer_param, t_process_vars *yVarP,BYTE sample_id);
/**************************************************************************
* º¯ÊýÃû³Æ: SDL_Set
* ¹¦ÄÜÃèÊö: ´´½¨Ò»¸öSDL¶¨Ê±Æ÷
* ²ÎÊý˵Ã÷: (IN)
Tick_Expr:¶¨Ê±Æ÷ÖÜÆÚ
timer_name:¶¨Ê±Æ÷Ãû
timer_param:¶¨Ê±Æ÷²ÎÊý
yVarP:Ïß³ÌÐÅÏ¢Ö¸Õë
(OUT)
* ·µ »Ø Öµ: ÎÞ
* ÆäËü˵Ã÷: ÏÈÕÒ¶¨Ê±Æ÷£¬Èç¹ûÕÒµ½Ôò»Ö¸´£¬·ñÔò´´½¨Ò»¸öеÄ
**************************************************************************/
// P98C-YXS extern VOID SDL_Set(SDL_Time Time, UINT32 timer_name,
// P98C-YXS t_timer_param timer_param, t_process_vars *yVarP);
/**************************************************************************
* º¯ÊýÃû³Æ: SDL_Set_Ex
* ¹¦ÄÜÃèÊö: ´´½¨Ò»¸öSDL¶¨Ê±Æ÷
* ²ÎÊý˵Ã÷: (IN)
Earliest_Tick_Expr:¶¨Ê±Æ÷×îÔçÖÜÆÚ
Latest_Tick_Expr:¶¨Ê±Æ÷×îÍíÖÜÆÚ
timer_name:¶¨Ê±Æ÷Ãû
timer_param:¶¨Ê±Æ÷²ÎÊý
yVarP:Ïß³ÌÐÅÏ¢Ö¸Õë
(OUT)
* ·µ »Ø Öµ: ÎÞ
* ÆäËü˵Ã÷: ÏÈÕÒ¶¨Ê±Æ÷£¬Èç¹ûÕÒµ½Ôò»Ö¸´£¬·ñÔò´´½¨Ò»¸öеÄ
**************************************************************************/
// P98C-YXS extern VOID SDL_Set_Ex(SDL_Time Earliest_Time, SDL_Time Latest_Time, UINT32 timer_name,
// P98C-YXS t_timer_param timer_param, t_process_vars *yVarP);
/**************************************************************************
* º¯ÊýÃû³Æ: SDL_Reset
* ¹¦ÄÜÃèÊö: ɾ³ýÒ»¸öSDL¶¨Ê±Æ÷
* ²ÎÊý˵Ã÷: (IN)
timer_name:¶¨Ê±Æ÷Ãû
timer_param:¶¨Ê±Æ÷²ÎÊý
yVarP:Ïß³ÌÐÅÏ¢Ö¸Õë
(OUT)
* ·µ »Ø Öµ: ÎÞ
* ÆäËü˵Ã÷:
**************************************************************************/
extern VOID SDL_Reset (UINT32 TimerName, t_timer_param timer_param,
t_process_vars *yVarP,BYTE sample_id);
/**************************************************************************
* º¯ÊýÃû³Æ: SDL_Active
* ¹¦ÄÜÃèÊö: ¼ì²é¶¨Ê±Æ÷ÊÇ·ñ´æÔÚ
* ²ÎÊý˵Ã÷: (IN)
timer_name:¶¨Ê±Æ÷Ãû
timer_param:¶¨Ê±Æ÷²ÎÊý
yVarP:Ïß³ÌÐÅÏ¢Ö¸Õë
(OUT)
* ·µ »Ø Öµ: ´æÔÚ·µ»ØTRUE£¬·ñÔò·µ»ØFALSE
* ÆäËü˵Ã÷:
**************************************************************************/
// P98C-YXS extern SDL_Boolean SDL_Active(UINT32 TimerName, t_timer_param timer_param,
// P98C-YXS t_process_vars *yVarP);
extern SDL_Time RetrieveClock(BYTE sample_id);
extern SDL_Duration SDL_Duration_Lit (SINT32 secs, SINT32 nsecs);
/*===========================================*/
/*SDLÈÎÎñ¹ÜÀíÄ£¿é*/
/*===========================================*/
/**************************************************************************
* º¯ÊýÃû³Æ: SDL_Create
* ¹¦ÄÜÃèÊö: ´´½¨Ò»¸öSDLÈÎÎñ
* ²ÎÊý˵Ã÷: (IN)
task_entry:ÈÎÎñÈë¿Úº¯Êý
stack_size:¶ÑÕ»´óС
self_id:ÈÎÎñID
prio:ÓÅÏȼ¶
task_name:ÈÎÎñÃû
startup_signal:³õʼ»¯ÏûÏ¢
(OUT)
* ·µ »Ø Öµ: ÎÞ
* ÆäËü˵Ã÷:
**************************************************************************/
extern SDL_PId SDL_Create (
VOID ( *task_entry )( UNSIGNED argc, VOID *argv ),
SINT32 stack_size,
SINT32 self_id,
SINT32 prio,
CHAR *task_name,
xSignalHeader startup_signal
);
/**************************************************************************
* º¯ÊýÃû³Æ: SDL_Stop
* ¹¦ÄÜÃèÊö: ɾ³ýÒ»¸öSDLÈÎÎñ
* ²ÎÊý˵Ã÷: (IN)
varp:Ïß³ÌÐÅÏ¢
yInSignalPtr:ÏûÏ¢Ö¸Õë
self_if:ÈÎÎñID
(OUT)
* ·µ »Ø Öµ: ÎÞ
* ÆäËü˵Ã÷: ÔÚÈÎÎñÈë¿ÚÖе÷Óã¬Ò»°ãÓÃÀ´É¾³ý×Ô¼º
**************************************************************************/
extern VOID SDL_Stop(t_process_vars *varp, xSignalHeaderRec *yInSignalPtr);
/**************************************************************************
* º¯ÊýÃû³Æ: SDL_Loop
* ¹¦ÄÜÃèÊö: Ñ­»·½ÓÊÕÏûÏ¢
* ²ÎÊý˵Ã÷: (IN)
proc_insig_tab:ÏûϢ״̬Êý×é
trans_tab:×´Ì¬×ªÒÆ¾ØÕó
yVarP:Ïß³ÌÐÅÏ¢½á¹¹ÌåÖ¸Õë
self_id:Ïß³ÌID
(OUT)
* ·µ »Ø Öµ: ÏûÏ¢Ö¸Õë
* ÆäËü˵Ã÷: ÓÐÎÊÌâ
**************************************************************************/
extern xSignalHeaderRec *SDL_Loop(const XSIGTYPE *proc_insig_tab,
const t_trans_desc *trans_tab,
struct process_vars *yVarP,
char *file, int line);
#endif