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

📄 norti3.h

📁 NORTi3 is a realtime multitasking operating system conforming to the micro-ITRON 3.0 specification.
💻 H
📖 第 1 页 / 共 3 页
字号:
#define v2_vcan_wup()    v3_vcan_wup()
#define v2_isus_tsk(i)   v2_sus_tsk(i)
#define v2_irsm_tsk(i)   v2_rsm_tsk(i)
#define v2_iwup_tsk(i)   wup_tsk(i)

/* synchronization and communication */

/* semaphore */

ER pascal v3_cre_sem(ID, const T_CSEM *);
ER pascal v3_vcre_sem(const T_CSEM *);
ER pascal v3_del_sem(ID);
ER pascal v3_sig_sem(ID);
ER pascal v3_twai_sem(ID, TMO);
ER pascal v3_ref_sem(T_RSEM *, ID);
ER pascal v2_sem_sts(ID *, INT *, ID);

#define v3_wai_sem(i)   v3_twai_sem(i,TMO_FEVR)
#define v3_preq_sem(i)  v3_twai_sem(i,TMO_POL)
#define v2_sig_sem(i)   v3_sig_sem(i)
#define v2_wai_sem(i)   v3_twai_sem(i,TMO_FEVR)
#define v2_preq_sem(i)  v3_preq_sem(i)
#define v2_isig_sem(i)  v2_sig_sem(i)

/* word type event flag */

/* Event Flag ( WORD Version )  */

ER pascal v3_cre_flg(ID, const T_CFLG *);
ER pascal v3_vcre_flg(const T_CFLG *);
ER pascal v3_del_flg(ID);
ER pascal v3_set_flg(ID, UINT);
ER pascal v3_clr_flg(ID, UINT);
ER pascal v3_twai_flg(UINT *, ID, UINT, UINT, TMO);
ER pascal v3_ref_flg(T_RFLG *, ID);
ER pascal v2_flg_sts(ID *, UINT *, ID);

#define v3_wai_flg(p,i,w,m)     v3_twai_flg(p,i,w,m,TMO_FEVR)
#define v3_pol_flg(p,i,w,m)     v3_twai_flg(p,i,w,m,TMO_POL)
#define v2_set_wflg(i,u)        v3_set_flg(i,u)
#define v2_clr_wflg(i,u)        v3_clr_flg(i,u)
#define v2_wai_wflg(p,i,w,m)    v3_twai_flg(p,i,w,m,TMO_FEVR)
#define v2_pol_wflg(p,i,w,m)    v3_twai_flg(p,i,w,m,TMO_POL)
#define v2_iset_wflg(i,u)       v2_set_wflg(i,u)

#ifdef  WFLG
#define v2_set_flg(i,u)         v2_set_wflg(i,u)
#define v2_clr_flg(i,u)         v2_clr_wflg(i,u)
#define v2_wai_flg(p,i,w,m)     v2_wai_wflg(p,i,w,m)
#define v2_pol_flg(p,i,w,m)     v2_pol_wflg(p,i,w,m)
#define v2_iset_flg(i,u)        v2_set_wflg(i,u)
#endif

/* bit type event flag */

ER pascal v3_twai_1flg(ID,TMO);
ER pascal v3_cwai_1flg(ID,TMO);
ER pascal v3_pol_1flg(ID);
ER pascal v3_cpol_1flg(ID);

#define v3_set_1flg(f)  v3_set_flg(f,0x01)
#define v3_clr_1flg(f)  v3_clr_flg(f,0x01)

#ifndef WFLG
#define v2_set_flg(f)   v3_set_flg(f,0x01)
#define v2_clr_flg(f)   v3_clr_flg(f,0x00)
#define v2_wai_flg(f)   v3_twai_1flg(f,TMO_FEVR)
#define v2_cwai_flg(f)  v3_cwai_1flg(f,TMO_FEVR)
#define v2_pol_flg(f)   v3_pol_1flg(f)
#define v2_cpol_flg(f)  v3_cpol_1flg(f,TMO_FEVR)
#define v2_iset_flg(f)  v2_set_flg(f)
#endif

/* mail box */

ER pascal v3_cre_mbx(ID, const T_CMBX *);
ER pascal v3_vcre_mbx(const T_CMBX *);
ER pascal v3_del_mbx(ID);
#ifndef NOKNL3_C
ER pascal v3_snd_msg(ID, VP);
ER pascal v3_trcv_msg(VP, ID, TMO);
#endif
ER pascal v3_ref_mbx(T_RMBX *, ID);
ER pascal v2_mbx_sts(ID *, void *, ID);
#define v3_rcv_msg(m,i)  v3_trcv_msg(m,i,TMO_FEVR)
#define v3_prcv_msg(m,i) v3_trcv_msg(m,i,TMO_POL)
#define v2_snd_msg(i,m)  v3_snd_msg(i,m)
#define v2_rcv_msg(m,i)  v3_trcv_msg(m,i,TMO_FEVR)
#define v2_prcv_msg(m,i) v3_trcv_msg(m,i,TMO_POL)
#define v2_isnd_msg(i,m) v2_snd_msg(i,m)

/* extended synchronization and communication */

/* Message Buffer   */

ER pascal v3_cre_mbf(ID , const T_CMBF *);
ER pascal v3_vcre_mbf(const T_CMBF *);
ER pascal v3_del_mbf(ID);
ER pascal v3_tsnd_mbf(ID, VP, int, TMO);
ER pascal v3_trcv_mbf(VP, int *, ID, TMO);
ER pascal v3_ref_mbf(T_RMBF *, ID);
#define v3_snd_mbf(i,m,s)  v3_tsnd_mbf(i,m,s,TMO_FEVR)
#define v3_psnd_mbf(i,m,s) v3_tsnd_mbf(i,m,s,TMO_POL)
#define v3_rcv_mbf(m,s,i)  v3_trcv_mbf(m,s,i,TMO_FEVR)
#define v3_prcv_mbf(m,s,i) v3_trcv_mbf(m,s,i,TMO_POL)

/* Port for Rendezvous */

ER pascal v3_cre_por(ID, const T_CPOR *);
ER pascal v3_vcre_por(const T_CPOR *);
ER pascal v3_del_por(ID);
ER pascal v3_tcal_por(VP, int *, ID, UINT, int, TMO);
ER pascal v3_tacp_por(RNO *, VP, int *, ID, UINT, TMO);
ER pascal v3_fwd_por(ID, UINT, RNO, VP, int);
ER pascal v3_rpl_rdv(RNO, VP, int);
ER pascal v3_ref_por(T_RPOR *, ID);
#define v3_cal_por(m,r,p,c,s)   v3_tcal_por(m,r,p,c,s,TMO_FEVR)
#define v3_pcal_por(m,r,p,c,s)  v3_tcal_por(m,r,p,c,s,TMO_POL)
#define v3_acp_por(n,m,c,p,a)   v3_tacp_por(n,m,c,p,a,TMO_FEVR)
#define v3_pacp_por(n,m,c,p,a)  v3_tacp_por(n,m,c,p,a,TMO_POL)

/* interrupt management */

ER pascal v3_def_int(UINT, const T_DINT *);
ER pascal v3_loc_cpu(void);
ER pascal v3_unl_cpu(void);
ER pascal v3_dis_int(UINT);
ER pascal v3_ena_int(UINT);
ER pascal v3_chg_ims(UINT);
ER pascal v3_ref_ims(UINT *);

ER pascal v2_def_int(UINT, FP);
#define   v2_chg_ims(i) v3_chg_ims(i)
#define   v2_ims_sts(b) v3_ref_ims(b)
#define   v2_dis_int(i) v3_dis_int(i)
#define   v2_ena_int(i) v3_ena_int(i)

/* memorypool management */

/* Fixed Length */

ER pascal v3_cre_mpf(ID, const T_CMPF *);
ER pascal v3_vcre_mpf(const T_CMPF *);
ER pascal v3_del_mpf(ID);
#ifndef NOKNL3_C
ER pascal v3_tget_blf(VP, ID, TMO);
#endif
ER pascal v3_rel_blf(ID, VP);
ER pascal v3_ref_mpf(T_RMPF *, ID);
ER pascal v2_mpl_sts(ID *, int *, ID);
#define v3_get_blf(b,i)     v3_tget_blf(b,i,TMO_FEVR)
#define v3_pget_blf(b,i)    v3_tget_blf(b,i,TMO_POL)
#define v2_get_blk(b,i)     v3_tget_blf(b,i,TMO_FEVR)
#define v2_pget_blk(b,i)    v3_tget_blf(b,i,TMO_POL)
#define v2_rel_blk(i,b)     v3_rel_blf(i,(VP)b)

/* Variable-size MemoryPool */

ER pascal v3_cre_mpl(ID, const T_CMPL *);
ER pascal v3_vcre_mpl(const T_CMPL *);
ER pascal v3_del_mpl(ID);
#ifndef NOKNL3_C
ER pascal v3_tget_blk(VP, ID, INT, TMO);
#endif
ER pascal v3_rel_blk(ID, VP);
ER pascal v3_ref_mpl(T_RMPL *, ID);
#define v3_get_blk(b,i,s)   v3_tget_blk(b,i,s,TMO_FEVR)
#define v3_pget_blk(b,i,s)  v3_tget_blk(b,i,s,TMO_POL)

/* time management */

ER pascal v3_set_tim(const SYSTIME *);
ER pascal v3_get_tim(SYSTIME *);
ER pascal v3_dly_tsk(DLYTIME);
ER pascal v3_def_cyc(HNO, const T_DCYC *);
ER pascal v3_vdef_cyc(const T_DCYC *);
ER pascal v3_act_cyc(HNO, UINT);
ER pascal v3_ref_cyc(T_RCYC *, HNO);
ER pascal v3_def_alm(HNO, const T_DALM *);
ER pascal v3_vdef_alm(const T_DALM *);
ER pascal v3_ref_alm(T_RALM *, HNO);
#define v3_ret_tmr() return

ER pascal v2_set_tim(T_TIME);
ER pascal v2_get_tim(T_TIME *);
#define v2_act_cyc(h,a) v3_act_cyc(h,a)
ER pascal v2_cyh_sts(UINT *, T_TIME *, HNO);
ER pascal v2_alh_sts(T_TIME *, HNO);
#define v2_ret_tmr() return

/* system management */

ER pascal v3_get_ver(T_VER *);
ER pascal v3_ref_sys(T_RSYS *);
ER pascal v3_ref_cfg(T_RCFG *);

/******************/
/* V3 API Default */
/******************/

/* task management */

#define cre_tsk(i,b)  v3_cre_tsk(i,b)
#define vcre_tsk(b)   v3_vcre_tsk(b)
#define del_tsk(i)    v3_del_tsk(i)
#define sta_tsk(i,j)  v3_sta_tsk(i,j)
#define ext_tsk()     v3_ext_tsk()
#define exd_tsk()     v3_exd_tsk()
#define ter_tsk(i)    v3_ter_tsk(i)
#define dis_dsp()     v3_dis_dsp()
#define ena_dsp()     v3_ena_dsp()
#define chg_pri(i,p)  v3_chg_pri(i,p)
#define rot_rdq(p)    v3_rot_rdq(p)
#define rel_wai(i)    v3_rel_wai(i)
#define get_tid(b)    v3_get_tid(b)
#define vget_tid()    v3_vget_tid()
#define ref_tsk(b,i)  v3_ref_tsk(b,i)

/* task-dependent synchronization */

#define sus_tsk(i)    v3_sus_tsk(i)
#define rsm_tsk(i)    v3_rsm_tsk(i)
#define frsm_tsk(i)   v3_frsm_tsk(i)
#define tslp_tsk(t)   v3_tslp_tsk(t)
#define slp_tsk()     v3_slp_tsk()
#define can_wup(b,i)  v3_can_wup(b,i)
#define vcan_wup()    v3_vcan_wup()

/* synchronization and communication */

#define cre_sem(i,b)  v3_cre_sem(i,b)
#define vcre_sem(b)   v3_vcre_sem(b)
#define del_sem(i)    v3_del_sem(i)
#define sig_sem(i)    v3_sig_sem(i)
#define twai_sem(i,t) v3_twai_sem(i,t)
#define ref_sem(b,i)  v3_ref_sem(b,i)
#define wai_sem(i)    v3_wai_sem(i)
#define preq_sem(i)   v3_preq_sem(i)

/* Event Flag ( WORD Version )  */

#define cre_flg(i,b)         v3_cre_flg(i,b)
#define vcre_flg(b)          v3_vcre_flg(b)
#define del_flg(i)           v3_del_flg(i)
#define set_flg(i,u)         v3_set_flg(i,u)
#define clr_flg(i,u)         v3_clr_flg(i,u)
#define twai_flg(p,i,w,m,t)  v3_twai_flg(p,i,w,m,t)
#define ref_flg(b,i)         v3_ref_flg(b,i)
#define wai_flg(p,i,w,m)     v3_wai_flg(p,i,w,m)
#define pol_flg(p,i,w,m)     v3_pol_flg(p,i,w,m)

/* Event Flag ( Bit Version )  */

#define wai_1flg(i)     v3_twai_1flg(i,TMO_FEVR)
#define cwai_1flg(i)    v3_cwai_1flg(i,TMO_FEVR)
#define pol_1flg(i)     v3_pol_1flg(i)
#define cpol_1flg(i)    v3_cpol_1flg(i)
#define set_1flg(i)     v3_set_1flg(f)
#define clr_1flg(i)     v3_clr_1flg(f)

/* Mail box */

#define cre_mbx(i,b)    v3_cre_mbx(i,b)
#define vcre_mbx(b)     v3_vcre_mbx(b)
#define del_mbx(i)      v3_del_mbx(i)
#define snd_msg(i,m)    v3_snd_msg(i,m)
#define trcv_msg(m,i,t) v3_trcv_msg(m,i,t)
#define ref_mbx(p,i)    v3_ref_mbx(p,i)
#define rcv_msg(m,i)    v3_rcv_msg(m,i)
#define prcv_msg(m,i)   v3_prcv_msg(m,i)

/* extended synchronization and communication */

/* Message Buffer   */

#define cre_mbf(i,p)      v3_cre_mbf(i,p)
#define vcre_mbf(p)       v3_vcre_mbf(p)
#define del_mbf(i)        v3_del_mbf(i)
#define tsnd_mbf(i,m,s,t) v3_tsnd_mbf(i,m,s,t)
#define trcv_mbf(m,s,i,t) v3_trcv_mbf(m,s,i,t)
#define ref_mbf(p,i)      v3_ref_mbf(p,i)
#define snd_mbf(i,m,s)    v3_snd_mbf(i,m,s)
#define psnd_mbf(i,m,s)   v3_psnd_mbf(i,m,s)
#define rcv_mbf(m,s,i)    v3_rcv_mbf(m,s,i)
#define prcv_mbf(m,s,i)   v3_prcv_mbf(m,s,i)

/* interrupt management */

#define def_int(i,p)      v3_def_int(i,p)
#define loc_cpu()         v3_loc_cpu()
#define unl_cpu()         v3_unl_cpu()
#define dis_int(u)        v3_dis_int(u)
#define ena_int(u)        v3_ena_int(u)
#define chg_ims(u)        v3_chg_ims(u)
#define ref_ims(u)        v3_ref_ims(u)

/* memorypool management */
/* Fixed Length */

#define cre_mpf(i,p)      v3_cre_mpf(i,p)
#define vcre_mpf(p)       v3_vcre_mpf(p)
#define del_mpf(i)        v3_del_mpf(i)
#define tget_blf(b,i,t)   v3_tget_blf(b,i,t)
#define get_blf(b,i)      v3_get_blf(b,i)
#define pget_blf(b,i)     v3_pget_blf(b,i)
#define rel_blf(i,b)      v3_rel_blf(i,b)
#define ref_mpf(p,i)      v3_ref_mpf(p,i)

/* Variable-size MemoryPool */

#define cre_mpl(i,p)      v3_cre_mpl(i,p)
#define vcre_mpl(p)       v3_vcre_mpl(p)
#define del_mpl(i)        v3_del_mpl(i)
#define tget_blk(b,i,s,t) v3_tget_blk(b,i,s,t)
#define get_blk(b,i,s)    v3_get_blk(b,i,s)
#define pget_blk(b,i,s)   v3_pget_blk(b,i,s)
#define rel_blk(i,b)      v3_rel_blk(i,b)
#define ref_mpl(p,i)      v3_ref_mpl(p,i)

/* time management */

#define set_tim(t)        v3_set_tim(t)
#define get_tim(b)        v3_get_tim(b)
#define dly_tsk(t)        v3_dly_tsk(t)
#define def_cyc(i,p)      v3_def_cyc(i,p)
#define act_cyc(h,a)      v3_act_cyc(h,a)
#define ref_cyc(p,i)      v3_ref_cyc(p,i)
#define def_alm(i,p)      v3_def_alm(i,p)
#define ref_alm(p,i)      v3_ref_alm(p,i)
#define ret_tmr()         v3_ret_tmr()

/* system management */

#define get_ver(p)        v3_get_ver(p)
#define ref_sys(p)        v3_ref_sys(p)
#define ref_cfg(p)        v3_ref_cfg(p)

/* interrupt management */

void pascal ent_int(void);
void pascal ret_int(void);
void pascal ret_wup(ID);
UINT pascal vdis_psw(void);
void pascal vset_psw(UINT);
void pascal sig_tim(void);
ER cdecl intini(void);
ER cdecl intsta(void);
void cdecl intext(void);

/* CPU-dependent */

#if defined(CPU_86)
void pascal sysini_rom(void);
int pascal ent_int2(void);
void pascal vdis_pic(void);
void pascal vena_pic(void);
void cdecl intsta2(void);
BOOL cdecl judgepc(void);
BOOL cdecl ispc9801(void);
BOOL cdecl isibmpc(void);
extern UB NEAR cdecl CodeView;
#elif defined(__GNUC__)
void ENT_INT(void);
#define ent_int() asm("\tmov.l\tr3,@-r15\n\tmov.l\tr2,@-r15\n\tmov.l\tr1,@-r15\n\tmov.l\tr0,@-r15\n"); ENT_INT()
#endif

#ifdef __cplusplus
}
#endif
#endif /* NORTI3_H */

⌨️ 快捷键说明

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