📄 task.h
字号:
UINT tstat : TBIT_TCB_TSTAT; /* タスク觉轮∈柒婶山附∷*/ UINT priority : TBIT_TCB_PRIORITY; /* 附哼の庭黎刨∈柒婶山附∷*/ BOOL actcnt : 1; /* 弹瓢妥滇キュ〖イング */ BOOL wupcnt : 1; /* 弹静妥滇キュ〖イング */ BOOL enatex : 1; /* タスク毋嘲借妄钓材觉轮 */ TEXPTN texptn; /* 瘦伪毋嘲妥傍 */ WINFO *winfo; /* 略ち攫鼠ブロックへのポインタ */ CTXB tskctxb; /* タスクコンテキストブロック */} TCB;/* * 悸乖觉轮のタスク * * 悸乖觉轮のタスク∈♂プロセッサがコンテキストを积っているタスク∷の * TCB を回すポインタˉ悸乖觉轮のタスクがない眷圭は NULL にするˉ * サ〖ビスコ〖ルの借妄面で·极タスク∈サ〖ビスコ〖ルを钙び叫したタス * ク∷に簇する攫鼠を徊救する眷圭は runtsk を蝗うˉruntsk を今き垂え * るのは·ディスパッチャ∈と介袋步借妄∷のみであるˉ */extern TCB *runtsk;/* * 呵光庭黎界疤のタスク * * 悸乖できるタスクの面で呵光庭黎界疤のタスクの TCB を回すポインタˉ悸 * 乖できるタスクがない眷圭は NULL にするˉ * ディスパッチ敦贿觉轮など·ディスパッチが瘦伪されている粗は·runtsk * と办米しているとは嘎らないˉ */extern TCB *schedtsk;/* * ディスパッチ】タスク毋嘲借妄ル〖チン弹瓢妥滇フラグ * * 充哈みハンドラ】CPU毋嘲ハンドラの叫庚借妄に·ディスパッチまたは * タスク毋嘲借妄ル〖チンの弹瓢を妥滇することを绩すフラグˉ */extern BOOL reqflg;/* * ディスパッチ钓材觉轮 * * ディスパッチ钓材觉轮である∈すなわち·ディスパッチ敦贿觉轮でない∷ * ことを绩すフラグˉ */extern BOOL enadsp;/* * タスクIDの呵络猛∈kernel_cfg.c∷ */extern const ID tmax_tskid;/* * タスク介袋步ブロックのエリア∈kernel_cfg.c∷ */extern const TINIB tinib_table[];/* * TCBのエリア∈kernel_cfg.c∷ */extern TCB tcb_table[];/* * タスクIDからTCBを艰り叫すためのマクロ */#define INDEX_TSK(tskid) ((tskid) - TMIN_TSKID)#define get_tcb(tskid) (&(tcb_table[INDEX_TSK(tskid)]))#define get_tcb_self(tskid) ((tskid) == TSK_SELF ? runtsk : get_tcb(tskid))/* * TCBからタスクIDを艰り叫すためのマクロ */#define TSKID(tcb) (((tcb) - tcb_table) + TMIN_TSKID)/* * タスク瓷妄モジュ〖ルの介袋步 */extern void task_initialize(void);/* * 悸乖できる觉轮への败乖 * * tcb で回年されるタスクの觉轮を悸乖できる觉轮とし·レディキュ〖に赁 * 掐するˉ悸乖できる觉轮になったタスクの庭黎刨が·呵光庭黎界疤のタス * クの庭黎刨よりも光い眷圭は·呵光庭黎界疤のタスクを构糠し·ディスパッ * チ钓材觉轮であれば TRUE を手すˉそうでない眷圭は FALSE を手すˉ */extern BOOL make_runnable(TCB *tcb);/* * 悸乖できる觉轮から戮の觉轮への败乖 * * tcb で回年されるタスクをレディキュ〖から猴近するˉtcb で回年したタ * スクが呵光庭黎界疤のタスクであった眷圭には·呵光庭黎界疤のタスクを * 肋年しなおし·ディスパッチ钓材觉轮であれば TRUE を手すˉそうでない * 眷圭は FALSE を手すˉタスクの觉轮は构糠しないˉ */extern BOOL make_non_runnable(TCB *tcb);/* * 蒂贿觉轮への败乖 * * tcb で回年されるタスクの觉轮を蒂贿觉轮とするˉまた·タスクの弹瓢箕 * に介袋步すべき恃眶の介袋步と·タスク弹瓢のためのコンテキストを肋年 * するˉ */extern void make_dormant(TCB *tcb);/* * 蒂贿觉轮から悸乖できる觉轮への败乖 * * tcb で回年されるタスクの觉轮を蒂贿觉轮から悸乖できる觉轮とするˉ悸 * 乖できる觉轮に败乖したタスクへのディスパッチが涩妥な眷圭は TRUE· * そうでない眷圭は FALSE を手すˉ */extern BOOL make_active(TCB *tcb);/* * 悸乖觉轮のタスクの姜位 * * exit_task を ext_tsk に虽め哈まずに侍の簇眶にしているのは· * create_context と activate_context が极タスクの姜位借妄で蝗脱する * スタックを撬蝉しないようにするための滦忽の办茨であるˉext_tsk とは * 侍簇眶にしておくことで·ロ〖カル恃眶も崔めて·蝗脱するスタック挝拌 * が脚ならないようにできるˉまた·コンパイラが极瓢弄にインライン鸥倡 * するのを闰けるために·ext_tsk とは侍のファイルに掐れているˉ */extern void exit_task(void);/* * レディキュ〖面のタスクの庭黎刨の恃构 * * tcb で回年されるレディキュ〖面のタスクの庭黎刨を newpri∈柒婶山附∷ * に恃构するˉまた·涩妥な眷圭には呵光庭黎界疤のタスクを构糠し·ディ * スパッチ钓材觉轮であれば TRUE を手すˉそうでない眷圭は FALSE を手 * すˉ */extern BOOL change_priority(TCB *tcb, UINT newpri);/* * レディキュ〖の搀啪 * * レディキュ〖面の·pri で回年される庭黎刨のタスクキュ〖を搀啪させるˉ * また·涩妥な眷圭には呵光庭黎界疤のタスクを恃构し·ディスパッチが瘦 * 伪されていなければ TRUE を手すˉそうでない眷圭は FALSE を手すˉ */extern BOOL rotate_ready_queue(UINT pri);/* * タスク毋嘲借妄ル〖チンの钙叫し * * タスク毋嘲借妄ル〖チンを钙び叫すˉ钙び叫す涟に·悸乖觉轮のタスクの * 瘦伪毋嘲妥傍をクリアし·タスク毋嘲借妄敦贿觉轮にし·CPUロックを豺 * 近するˉ * タスク毋嘲借妄ル〖チンから提ると·まずCPUロック觉轮に提し·その粗 * に瘦伪毋嘲妥傍が 0 でなくなっていれば·浩びタスク毋嘲借妄ル〖チン * を钙び叫すˉ瘦伪毋嘲妥傍が 0 の眷圭には·毋嘲借妄钓材觉轮にして簇 * 眶からリタ〖ンするˉ * この簇眶は·悸乖觉轮のタスクが·タスク毋嘲借妄钓材觉轮∈enatex が * TRUE∷で·瘦伪毋嘲妥傍が 0 でない∈texptn が 0 でない∷眷圭に钙び * 叫すことを鳞年しているˉこの簇眶は·CPUロック觉轮で钙び叫さなけれ * ばならないˉ */extern void call_texrtn(void);/* * タスク毋嘲借妄ル〖チンの弹瓢 * * 悸乖觉轮のタスクがタスク毋嘲借妄ル〖チンの弹瓢掘凤を塔たしていれば· * タスク毋嘲借妄ル〖チンを钙び叫すˉCPU毋嘲借妄ル〖チンを钙び叫す箕 * は·办箕弄にCPUロックを豺近するˉ * この簇眶は·ディスパッチャや充哈みハンドラ】CPU毋嘲ハンドラの叫庚 * 借妄から钙び叫されることを鳞年しているが·票霹の借妄をタ〖ゲット巴 * 赂婶で淡揭してもよいˉその眷圭には·OMIT_CALLTEX をマクロ年盗すれ * ばよいˉ */extern void calltex(void);#endif /* _TASK_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -