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

📄 task.h

📁 050117 CD 修正分 iTRON hosroot
💻 H
字号:
/* ------------------------------------------------------------------------- */
/*  HOS 僞僗僋娗棟 僿僢僟僼傽僀儖                                            */
/*                                                                           */
/*                                   Copyright (C) 1998-2002 by Project HOS  */
/* ------------------------------------------------------------------------- */

#ifndef __HOS__TAKS_H_
#define __HOS__TAKS_H_


/* ------------------------------------ */
/*             掕悢掕媊                 */
/* ------------------------------------ */

/* 僞僗僋懏惈 */
#define TA_ASM   0x0000		/* 傾僙儞僽儔偵傛傞僾儘僌儔儉 */
#define TA_HLNG  0x0001		/* 崅媺尵岅偵傛傞僾儘僌儔儉 */
#define TA_COP0  0x8000
#define TA_COP1  0x4000
#define TA_COP2  0x2000
#define TA_COP3  0x1000
#define TA_COP4  0x0800
#define TA_COP5  0x0400
#define TA_COP6  0x0200
#define TA_COP7  0x0100

/* 堷悢偲側傞僷儔儊乕僞乕 */
#define TSK_SELF      0		/* 帺暘帺恎偺僞僗僋 */
#define TPRI_INI      0		/* 弶婜桪愭搙傪巜掕 */
#define TPRI_RUN      0		/* 帺暘帺恎偺桪愭搙 */

/* 僞僗僋忬懺掕媊 */
#define TTS_RUN  0x01		/* 幚峴忬懺 */
#define TTS_RDY  0x02		/* 幚峴壜擻忬懺 */
#define TTS_WAI  0x04		/* 懸偪忬懺 */
#define TTS_SUS  0x08		/* 嫮惂懸偪忬懺 */
#define TTS_WAS  0x0c		/* 擇廳懸偪忬懺 */
#define TTS_DMT  0x10		/* 媥巭忬懺 */

/* 懸偪忬懺 */
#define TTW_SLP  0x0001		/* slp_tsk, tslp_tsk 偵傛傞懸偪 */
#define TTW_DLY  0x0002		/* dly_tsk 偵傛傞懸偪 */
#define TTW_NOD  0x0008		/* 愙懕婡擻墳摎懸偪 */
#define TTW_FLG  0x0010		/* wai_flg, twai_flg 偵傛傞懸偪 */
#define TTW_SEM  0x0020		/* wai_sem, twai_sem 偵傛傞懸偪 */
#define TTW_MBX  0x0040		/* rcv_msg, trcv_msg 偵傛傞懸偪 */
#define TTW_SMBF 0x0080		/* snd_mbf, tsnd_mbf 偵傛傞懸偪 */
#define TTW_MBF  0x0100		/* rcv_mbf, trcv_mbf 偵傛傞懸偪 */
#define TTW_CAL  0x0200		/* 儔儞僨僽屇弌偟懸偪 */
#define TTW_ACP  0x0400		/* 儔儞僨僽庴晅偗懸偪 */
#define TTW_RDV  0x0800		/* 儔儞僨僽廔椆懸偪 */
#define TTW_MPL  0x1000		/* get_blk, tget_blk 偵傛傞懸偪 */
#define TTW_MPF  0x2000		/* get_blf, tget_blf 偵傛傞懸偪 */
#define TTW_SPL  0x8000		/* 僗僞僢僋僾乕儖懸偪忬懺乮HOS撈帺乯 */


/* TCB娭楢偺掕悢 */
#define MAX_SUSCNT  65535U		/* SUSPEND 嵟戝僱僗僩悢 */
#define MAX_WUPCNT  65535U		/* 婲彴梫媮 嵟戝僉儏乕僀儞僌悢 */



/* ------------------------------------ */
/*              宆掕媊                  */
/* ------------------------------------ */

/* 僞僗僋娗棟梡僉儏乕 */
typedef struct t_que {
	struct t_tcb *head;		/* 僉儏乕偺愭摢 */
	INT    tskcnt;			/* 僉儏乕偵暲傫偱偄傞僞僗僋偺悢 */
} T_QUE;

/* TCB(僞僗僋僐儞僩儘乕儖僽儘僢僋) 摦揑晹暘 RAM偵抲偔 */
/* 乮娙慺壔偺偨傔傾僙儞僽儕尵岅晹偱憖嶌偡傞傕偺偼愭摢偵抲偔乯 */
typedef struct t_tcb {
	VH   *sp;			/* 尰嵼偺僗僞僢僋億僀儞僞 */
	UINT tskstat;		/* 僞僗僋偺忬懺 */
	PRI  tskpri;		/* 尰嵼偺桪愭搙 */
	UINT tskwait;		/* 懸偪忬懺 */
	UH   wupcnt;		/* 婲彴梫媮僉儏乕僀儞僌悢 */
	UH   suscnt;		/* SUSPEND梫媮僱僗僩悢 */
	VP   data;			/* 忬懺枅偵曐懚偺昁梫側僨乕僞偑偁傟偽巊偆 */
	struct t_que *que;	/* 懏偟偰偄傞僉儏乕  */
	struct t_tcb *next;	/* 僉儏乕偱偺師偺TCB */
	struct t_tcb *prev;	/* 僉儏乕偱偺慜偺TCB */
} T_TCB;

/* TCB惷揑晹暘 ROM偵抲偔 */
typedef struct t_tcbs {
	VP   exinf;			/* 奼挘忣曬 */
	FP   task;			/* 僞僗僋婲摦傾僪儗僗 */
	PRI  itskpri;		/* 僞僗僋婲摦帪桪愭搙 */
	VH   *isp;			/* 僞僗僋婲摦帪偺僗僞僢僋億僀儞僞偺抣*/
} T_TCBS;

/* 僞僗僋忬懺嶲徠梡 */
typedef struct t_rtsk {
	VP   exinf;			/* 奼挘忣曬 */
	PRI  tskpri;		/* 尰嵼偺桪愭搙 */
	UB   tskstat;		/* 僞僗僋忬懺 */
} T_RTSK;


/* 僗僞僢僋僾乕儖僐儞僩儘乕儖僽儘僢僋 RAM晹暘 */
typedef struct t_spcb {
	T_QUE que;		/* 僗僞僢僋懸偪僉儏乕 */
	UH    freestk;	/* 嬻偄偰偄傞僗僞僢僋偺埵抲 */
} T_SPCB;

/* 僗僞僢僋僾乕儖僐儞僩儘乕儖僽儘僢僋 ROM晹暘 */
typedef struct t_spcbs {
	VH    *stkhead;	/* 儊儌儕僾乕儖愭摢傾僪儗僗 */
	UH    stkcnt;	/* 僽儘僢僋悢 */
	UH    stksz;	/* 僽儘僢僋僒僀僘 */
} T_SPCBS;



/* ------------------------------------ */
/*          僌儘乕僶儖曄悢              */
/* ------------------------------------ */

extern       T_TCB  tcbtbl[];	/* TCB僥乕僽儖 RAM晹 */
extern const T_TCBS tcbstbl[];	/* TCB僥乕僽儖 ROM晹乮惷揑偵惗惉) */
extern const H      tcbcnt;		/* TCB僥乕僽儖偺悢 */

extern       T_QUE  rdyque[];	/* 儗僨傿乕僉儏乕 */
extern const H      rdqcnt;		/* 儗僨傿乕僉儏乕偺悢 */

extern T_TCB  *curtcb;			/* 尰嵼偺僞僗僋偺TCB */
extern BOOL   dlydsp;			/* 抶墑偝傟偰偄傞僨傿僗僷僢僠偑偁傞偐 */

extern       T_SPCB  spcbtbl[];		/* SPCB僥乕僽儖 RAM晹 */
extern const T_SPCBS spcbstbl[];	/* SPCB僥乕僽儖 ROM晹乮惷揑偵惗惉) */
extern const H       spcbcnt;		/* SPCB僥乕僽儖偺悢 */


/* ------------------------------------ */
/*             娭悢愰尵                 */
/* ------------------------------------ */

/* 僉儏乕娗棟 */
void __adt_que(T_QUE *que, T_TCB *tcb);		/* 僞僗僋傪僉儏乕枛旜偵捛壛 */
void __adh_que(T_QUE *que, T_TCB *tcb);		/* 僞僗僋傪僉儏乕愭摢偵捛壛 */
void __ins_que(T_TCB *tcbs, T_TCB *tcbd);	/* 僉儏乕偵僞僗僋傪憓擖 */
void __del_que(T_TCB *tcb);					/* 僞僗僋傪僉儏乕偐傜奜偡 */
void __rot_que(T_QUE *que);					/* 僉儏乕偺夞揮 */

/* 僞僗僋娗棟 */
void __ini_tsk(void);						/* 僞僗僋晹偺弶婜壔 */
ER   sta_tsk(ID tskid, INT stacd);			/* 僞僗僋婲摦 */
void ext_tsk(void);							/* 帺僞僗僋廔椆 */
ER   ter_tsk(ID tskid);						/* 懠僞僗僋嫮惂廔椆 */
ER   dis_dsp(void);							/* 僨傿僗僷僢僠嬛巭 */
ER   ena_dsp(void);							/* 僨傿僗僷僢僠嫋壜 */
ER   chg_pri(ID tskid, PRI tskpri);			/* 僞僗僋桪愭搙曄峏 */
ER   rot_rdq(PRI tskpri);					/* 僞僗僋偺儗僨傿乕僉儏乕夞揮 */
ER   rel_wai(ID tskid);						/* 懠僞僗僋偺懸偪忬懺夝彍 */
ER   get_tid(ID *p_tskid);					/* 帺僞僗僋偺ID嶲徠 */
ER   ref_tsk(T_RTSK *pk_rtsk, ID tskid);	/* 僞僗僋忬懺嶲徠 */

/* 僞僗僋撈棫晹梡掕媊 */
#define ista_tsk  sta_tsk
#define iter_tsk  ter_tsk
#define ichg_pri  chg_pri
#define irot_rdq  rot_rdq
#define irel_wai  rel_wai
#define iget_tid  get_tid
#define iref_tsk  ref_tsk


/* 僞僗僋晅懏摨婜 */
ER   sus_tsk(ID tskid);
ER   rsm_tsk(ID tskid);
ER   frsm_tsk(ID tskid);
ER   slp_tsk(void);
ER   wup_tsk(ID tskid);
ER   can_wup(ID tskid);

/* 僞僗僋撈棫晹梡掕媊 */
#define isus_tsk  sus_tsk
#define irsm_tsk  rsm_tsk
#define ifrsm_tsk frsm_tsk
#define iwup_tsk  wup_tsk
#define ican_wup  can_wup


/* 僨傿僗僷僢僠張棟 */
ER   __tsk_dsp(void);					/* 僞僗僋僨傿僗僷僢僠 */
void __wup_dsp(T_TCB *tcb, ER ercd);	/* 懸偪忬懺夝彍 */
H    __swc_dsp(T_TCB *tcb);				/* 僞僗僋偺愗傝懼偊 */
void __sta_dsp(T_TCB *tcb);				/* 僞僗僋偺奐巒乮儕僞乕儞偟側偄) */
H    __end_dsp(void);					/* 僞僗僋偺廔椆 */
void __tskst_entry(void);				/* 僞僗僋幚峴奐巒応強 */
void __tsk_hlt(void);					/* 幚峴僞僗僋側偟 */


/* 妱傝崬傒惂屼 */
void __di(void);	/* 妱傝崬傒嬛巭 */
void __ei(void);	/* 妱傝崬傒嫋壜 */
void __set_imsk(void);  	/* 妱傝崬傒嬛巭 */
void __res_imsk(void);		/* loc_cpu偟偰偄側偗傟偽妱傝崬傒暅婣 */

#endif /* __HOS__TAKS_H_ */

⌨️ 快捷键说明

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