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