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

📄 itron.h

📁 最近在國外網站抓到的作業系統 以Arm為基礎去開發的
💻 H
字号:
/*************************************************************************
 *
 *  Copyright (C) SEIKO EPSON CORP. 1997
 *  All Rights Reserved
 *
 *  Filename : itron.h
 *  Function : 
 *  Revision :
 *          1997/08/01  H.Matsuoka  start
 *          1999/08/26  H.Matsuoka  Add message buffer function
 *          2000/11/21  Y.Taka      Add memory pool management function
 *          2001/01/16  Y.Taka      Add tslp_tsk,twai_sem,twai_flg,trcv_msg
 *
 ************************************************************************/
#ifndef _ITRON_
#define _ITRON_

/***  General-Purpose Data Types *******************************************/
typedef char            B;      /* signed 8-bit integer */
typedef short           H;      /* signed 16-bit integer */
typedef long            W;      /* signed 32-bit integer */
typedef unsigned char   UB;     /* unsigned 8-bit integer */
typedef unsigned short  UH;     /* unsigned 16-bit integer */
typedef unsigned long   UW;     /* unsigned 32-bit integer */

typedef long            VW;     /* unpredictable data type (32-bit size) */
typedef short           VH;     /* unpredictable data type (16-bit size) */
typedef char            VB;     /* unpredictable data type (8-bit size) */

typedef void            *VP;    /* pointer to an unpredictable data type */
typedef void            (*FP)();/* program start address */

/***  Data Types Dependent on ITRON Specification **************************/
#ifndef _WINDOWS_

#ifndef _INT_TYPE_
#define _INT_TYPE_
typedef int             INT; 	/* Signed integer (bit width of processor) */
#endif

#ifndef _UINT_TYPE_
#define _UINT_TYPE_
typedef unsigned int    UINT;	/* Unsigned integer (bit width of processor) */
#endif

#ifndef _BOOL_TYPE_
#define _BOOL_TYPE_
typedef int             BOOL;	/* Boolean value.  TRUE (1) or FALSE (0). */
#endif  

#endif

typedef short           FN;     /* Function code.  Signed integer.  
                                   Maximum 2 bytes. */

#ifndef _ID_TYPE_
#define _ID_TYPE_
typedef INT             ID;     /* Object ID number (???id)
                                   Value range depends on the system.  
                                   Usually a signed integer. */
#endif
                                  
typedef INT             BOOL_ID;/* Boolean value or ID number */
typedef INT             HNO;    /* Handler number */
typedef INT             RNO;    /* Rendezvous number */
typedef H               NODE;   /* Node Number.  Usually a signed integer. */
typedef UINT            ATR;    /* Object or handler attribute.  
                                   An unsigned integer. */
typedef INT             ER;     /* Error code.  A signed integer. */
typedef INT             PRI;    /* Task priority.  A signed integer. */
typedef INT             TMO;    /* Timeout value.  A signed integer. */

typedef TMO             DLYTIME;

/***************************************************************************
***    6.6 Common Constants and Data Structure Packet Formats            ***
***************************************************************************/

/* --- overall ----------------------- */

#define NADR        (-1)    /* invalid address or pointer value */
#define TRUE        1       /* true */
#define FALSE       0       /* false */

#define TA_ASM      0x0     /* program written in assembly language */
#define TA_HLNG     0x1     /* program written in high-level language */

#define TMO_POL     0       /* polling */
#define TMO_FEVR    (-1)    /* wait forever */

/* --- for task management functions ----------------------- */

#define TSK_SELF    0       /* task specifies itself */
#define TPRI_INI    0       /* specifies the initial priority on task startup
                               (chg_pri) */
#define TPRI_RUN    0       /* specifies the highest priority during execution
                               (rot_rdq) */

#define TTS_RUN     0x00000001  /* RUN */
#define TTS_RDY     0x00000002  /* READY */
#define TTS_WAI     0x00000004  /* WAIT */
#define TTS_SUS     0x00000008  /* SUSPEND */
#define TTS_WAS     0x0000000c  /* WAIT-SUSPEND */
#define TTS_DMT     0x00000010  /* DORMANT */

#define TTW_SLP     0x00000001  /* wait due to slp_tsk or tslp_tsk */
#define TTW_DLY     0x00000002  /* wait due to dly_tsk */
#define TTW_NOD     0x00000008  /* connection function response wait */
#define TTW_FLG     0x00000010  /* wait due to wai_flg or twai_flg */
#define TTW_SEM     0x00000020  /* wait due to wai_sem or twai_sem */
#define TTW_MBX     0x00000040  /* wait due to rcv_msg or trcv_msg */
#define TTW_SMBF    0x00000080  /* wait due to snd_mbf, tsnd_mbf */
#define TTW_MBF     0x00000100  /* wait due to rcv_mbf, trcv_mbf */
#define TTW_MPL     0x00000200  /* wait due to get_blk, tget_blk */
#define TTW_MPF     0x00000400  /* wait due to get_blf, tget_blf */

/* --- for eventflag functions ----------------------- */

#define TA_WSGL     0x00000000  /* multiple tasks are not allowed to wait (Wait
                                   Single Task) */
#define TA_WMUL     0x00000008  /* multiple tasks are allowed to wait (Wait
                                   Multiple Task) */

#define TWF_ANDW    0x00000000  /* AND wait */
#define TWF_ORW     0x00000002  /* OR wait */
#define TWF_CLR     0x00000001  /* clear specification */

/* --- for mailbox functions ----------------------- */

#define TA_MFIFO    0x00000000  /* waiting tasks are handled by FIFO */
#define TA_MPRI     0x00000002  /* waiting tasks are handled by priority */

/*********************************************************************************/
/* Define Message Block (copy from Asixwin) */
/* We should change this definition while any modification occurred in sysmsg.h. */
typedef struct _tmpMSG
{
	UH     	messageType;    /*  message type  */
	UH     	message;        /*  message  */
	UW     	lparam;         /*  long data (32bit)  */
	VP		data;           /*  associated data, if any */
	UH     	wparam;         /*  16bit data  */
	UH     	reserved;       /*  for future  (broadcast, etc) */
} tmpMSG;
/********************************************************************************/

#define MSGCONT_SIZE sizeof(tmpMSG)

typedef struct t_msg {
    struct t_msg*   pNxt;
    VB              msgcont[MSGCONT_SIZE];
} T_MSG;

/* --- for time management functions ----------------------- */

/* example for 32-bit CPUs */
typedef struct t_systime {
    H    utime;     /* upper 16 bits */
    UW   ltime;     /* lower 32 bits */
} SYSTIME;

#define TCY_OFF     0x00000000  /* cyclic handler off */
#define TCY_ON      0x00000001  /* cyclic handler on */
#define TCY_INI     0x00000002  /* cycle timer init */

#define TTM_ABS     0x00000000  /* absolute alarm time */
#define TTM_REL     0x00000001  /* relative alarm time */

#define HNDR_CYC    0x00000001  /* wait due to cyclic handler */
#define HNDR_ALM    0x00000002  /* wait due to alarm handler */

/* --- for system management functions ----------------------- */

/* get_ver */
typedef struct t_ver {
    UH   maker;     /* vendor */
    UH   id;        /* format number */
    UH   spver;     /* specification version */
    UH   prver;     /* product version */
    UH   prno[4];   /* product control information */
    UH   cpu;       /* CPU information */
    UH   var;       /* variation descriptor */
} T_VER;

#define TSS_TSK    0    /* normal state in which dispatching is enabled during
                           task portion execution */
#define TSS_DDSP   1    /* state after dis_dsp has been executed during task
                           portion execution (dispatch disabled) */
#define TSS_LOC    3    /* state after loc_cpu has been executed during task
                           portion execution(interrupt and dispatch disabled)*/
#define TSS_INDP   4    /* state during execution of task-independent portions
                           (interrupt and timer handlers) */



/****************************************************************************/
/***    6.5 C Language Interfaces                                         ***/
/****************************************************************************/

/* Task Management Functions */

extern ER   sta_tsk( ID tskid, INT stacd );
extern void ext_tsk(void );
extern ER   ter_tsk( ID tskid );
extern ER   dis_dsp(void );
extern ER   ena_dsp(void );
extern ER   chg_pri( ID tskid, PRI tskpri );
extern ER   rot_rdq( PRI tskpri );
extern ER   rel_wai( ID tskid );
extern ER   get_tid( ID *p_tskid );

/* Task-Dependent Synchronization Functions */

extern ER   sus_tsk( ID tskid );
extern ER   rsm_tsk( ID tskid );
extern ER   slp_tsk(void );
extern ER   tslp_tsk( TMO tmout );
extern ER   wup_tsk( ID tskid );
extern ER   can_wup( INT *p_wupcnt, ID tskid );

/* Synchronization and Communication Functions */
extern ER   sig_sem( ID semid );
extern ER   wai_sem( ID semid );
extern ER   preq_sem( ID semid );
extern ER   twai_sem( ID semid, TMO tmout );
extern ER   set_flg( ID flgid, UINT setptn );
extern ER   clr_flg( ID flgid, UINT clrptn );
extern ER   wai_flg( UINT *p_flgptn, ID flgid, UINT waiptn, UINT wfmode );
extern ER   pol_flg( UINT *p_flgptn, ID flgid, UINT waiptn, UINT wfmode );
extern ER   twai_flg( UINT *p_flgptn, ID flgid, UINT waiptn, UINT wfmode,
                      TMO tmout );
extern ER   snd_msg( ID mbxid, T_MSG *pk_msg );
extern ER   rcv_msg( T_MSG **ppk_msg, ID mbxid );
extern ER   prcv_msg( T_MSG **ppk_msg, ID mbxid );
extern ER   trcv_msg( T_MSG **ppk_msg, ID mbxid, TMO tmout );

/* Interrupt Management Functions */
extern ER	ent_int( void );
extern void ret_int( void );
extern ER   loc_cpu( void );
extern ER   unl_cpu( void );

/* Time Management Functions */
extern ER   set_tim( SYSTIME *pk_tim );
extern ER   get_tim( SYSTIME *pk_tim );
extern ER   dly_tsk( DLYTIME dlytim );
extern ER   def_cyc( HNO cycno, FP cychdr, UINT cycact, SYSTIME *pk_cyctim );
extern ER   act_cyc( HNO cycno, UINT cycact );
extern ER   def_alm( HNO almno, FP almhdr, UINT tmmode, SYSTIME *pk_almtim );
extern void ret_tmr( void );

/* System Management Functions */
extern ER   get_ver( T_VER *pk_ver );

/* Extended Synchronization and Communication Functions */
extern ER   snd_mbf( ID mbfid, VP msg, INT msgsz );
extern ER   psnd_mbf( ID mbfid, VP msg, INT msgsz );
extern ER   tsnd_mbf( ID mbfid, VP msg, INT msgsz, TMO tmout );
extern ER   rcv_mbf( VP msg, INT *p_msgsz, ID mbfid );
extern ER   prcv_mbf( VP msg, INT *p_msgsz, ID mbfid );
extern ER   trcv_mbf( VP msg, INT *p_msgsz, ID mbfid, TMO tmout );

/* Memory Pool Management Functions */
extern ER   get_blk( VP *p_blk, ID mplid, INT blksz );
extern ER   pget_blk( VP *p_blk, ID mplid, INT blksz );
extern ER   tget_blk( VP *p_blk, ID mplid, INT blksz, TMO tmout );
extern ER   rel_blk( ID mplid, VP blk );
extern ER   get_blf( VP *p_blf, ID mpfid );
extern ER   pget_blf( VP *p_blf, ID mpfid );
extern ER   tget_blf( VP *p_blf, ID mpfid, TMO tmout );
extern ER   rel_blf( ID mpfid, VP blf );


/***************************************************************************
***    6.7 Error Codes                                                   ***
***************************************************************************/
#define E_OK       0        /* Normal completion */
#define E_SYS      (-5)     /* System error */
#define E_NOMEM    (-10)    /* Insufficient memory */
#define E_NOSPT    (-17)    /* Feature not supported */
#define E_INOSPT   (-18)    /* Feature not supported 
                               by ITRON/FILE specification */
#define E_RSFN     (-20)    /* Reserved function code number */
#define E_RSATR    (-24)    /* Reserved attribute */
#define E_PAR      (-33)    /* Parameter error */
#define E_ID       (-35)    /* Invalid ID number */
#define E_NOEXS    (-52)    /* Object does not exist */
#define E_OBJ      (-63)    /* Invalid object state */
#define E_MACV     (-65)    /* Memory access disabled or memory access 
                               violation */
#define E_OACV     (-66)    /* Object access violation */
#define E_CTX      (-69)    /* Context error */
#define E_QOVR     (-73)    /* Queuing or nesting overflow */
#define E_DLT      (-81)    /* Object being waited for was deleted */
#define E_TMOUT    (-85)    /* Polling failure or timeout exceeded */
#define E_RLWAI    (-86)    /* WAIT state was forcibly released */


#endif /* _ITRON_ */

⌨️ 快捷键说明

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