📄 wait.h
字号:
/* * TOPPERS/JSP Kernel * Toyohashi Open Platform for Embedded Real-Time Systems/ * Just Standard Profile Kernel * * Copyright (C) 2000 by Embedded and Real-Time Systems Laboratory * Toyohashi Univ. of Technology, JAPAN * * 惧淡螟侯涪荚は·Free Software Foundation によって给山されている * GNU General Public License の Version 2 に淡揭されている掘凤か·笆 * 布の(1)×(4)の掘凤を塔たす眷圭に嘎り·塑ソフトウェア∈塑ソフトウェ * アを猖恃したものを崔むˉ笆布票じ∷を蝗脱ˇ剩澜ˇ猖恃ˇ浩芹邵∈笆布· * 网脱と钙ぶ∷することを痰浸で钓满するˉ * (1) 塑ソフトウェアをソ〖スコ〖ドの妨で网脱する眷圭には·惧淡の螟侯 * 涪山绩·この网脱掘凤および布淡の痰瘦沮惮年が·そのままの妨でソ〖 * スコ〖ド面に崔まれていることˉ * (2) 塑ソフトウェアを浩网脱材墙なバイナリコ〖ド∈リロケ〖タブルオブ * ジェクトファイルやライブラリなど∷の妨で网脱する眷圭には·网脱 * に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟侯涪山绩· * この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ * (3) 塑ソフトウェアを浩网脱稍材墙なバイナリコ〖ドの妨または怠达に寥 * み哈んだ妨で网脱する眷圭には·肌のいずれかの掘凤を塔たすことˉ * (a) 网脱に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟侯 * 涪山绩·この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ * (b) 网脱の妨轮を·侍に年める数恕によって·惧淡螟侯涪荚に鼠桂する * ことˉ * (4) 塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じるいかなる禄 * 巢からも·惧淡螟侯涪荚を倘勒することˉ * * 塑ソフトウェアは·痰瘦沮で捏丁されているものであるˉ惧淡螟侯涪荚は· * 塑ソフトウェアに簇して·その努脱材墙拉も崔めて·いかなる瘦沮も乖わ * ないˉまた·塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じたい * かなる禄巢に簇しても·その勒扦を砷わないˉ * * @(#) $Id: wait.h,v 1.3 2002/03/26 08:19:38 hiro Exp $ *//* * 略ち觉轮瓷妄モジュ〖ル */#ifndef _WAIT_H_#define _WAIT_H_#include "task.h"#include "time_event.h"/* * 略ち觉轮への败乖 * * 悸乖面のタスクを略ち觉轮に败乖させるˉ恶挛弄には·悸乖面のタスクを * レディキュ〖から猴近し·TCB の winfoフィ〖ルド·WINFO の tmevtbフ * ィ〖ルドを肋年するˉ */Inline voidmake_wait(WINFO *winfo){ make_non_runnable(runtsk); runtsk->winfo = winfo; winfo->tmevtb = NULL;}/* * 略ち觉轮への败乖∈タイムアウト回年∷ * * 悸乖面のタスクを·タイムアウト回年烧きで略ち觉轮に败乖させるˉ恶挛 * 弄には·悸乖面のタスクをレディキュ〖から猴近し·TCB の winfoフィ〖 * ルド·WINFO の tmevtbフィ〖ルドを肋年するˉまた·タイムイベントブ * ロックを判峡するˉ */extern void make_wait_tmout(WINFO *winfo, TMEVTB *tmevtb, TMO tmout);/* * 略ち豺近 * * tcb で回年されるタスクの略ち觉轮を豺近するˉ恶挛弄には·タイムイベ * ントブロックが判峡されていれば·それを判峡豺近するˉまた·タスク觉 * 轮を构糠し·略ち豺近したタスクからの手猛を E_OK とするˉ略ちキュ〖 * からの猴近は乖わないˉ略ち豺近したタスクへのディスパッチが涩妥な眷 * 圭には TRUE を手すˉ */extern BOOL wait_complete(TCB *tcb);/* * タイムアウトに燃う略ち豺近 * * tcb で回年されるタスクが·略ちキュ〖につながれていれば略ちキュ〖か * ら猴近し·タスク觉轮を构糠するˉまた·略ち豺近したタスクからの手猛 * を·wait_tmoutでは E_TMOUT·wait_tmout_ok では E_OK とするˉ略ち豺 * 近したタスクへのディスパッチが涩妥な箕は·reqflg を TRUE にするˉ * wait_tmout_ok は·dly_tsk で蝗うためのもので·略ちキュ〖から猴近す * る借妄を乖わないˉ * いずれの簇眶も·タイムイベントのコ〖ルバック簇眶として脱いるための * もので·充哈みハンドラから钙び叫されることを鳞年しているˉ */extern void wait_tmout(TCB *tcb);extern void wait_tmout_ok(TCB *tcb);/* * 略ち觉轮の动扩豺近 * * tcb で回年されるタスクの略ち觉轮を动扩弄に豺近するˉ恶挛弄には·タ * スクが略ちキュ〖につながれていれば略ちキュ〖から猴近し·タイムイベ * ントブロックが判峡されていればそれを判峡豺近するˉ * wait_cancel は·タスクの觉轮は构糠しないˉ * wait_release は·タスクの觉轮を构糠し·略ち豺近したタスクからの手 * 猛を E_RLWAI とするˉまた·略ち豺近したタスクへのディスパッチが涩 * 妥な眷圭には TRUE を手すˉ */extern void wait_cancel(TCB *tcb);extern BOOL wait_release(TCB *tcb);/* * 票袋ˇ奶慨オブジェクトのコントロ〖ルブロックの鼎奶婶尸拎侯ル〖チン * * 票袋ˇ奶慨オブジェクトの介袋步ブロックとコントロ〖ルブロックの黎片 * 婶尸は鼎奶になっているˉ笆布は·その鼎奶婶尸を胺うための房およびル〖 * チン凡であるˉ * 剩眶の略ちキュ〖を积つ票袋ˇ奶慨オブジェクトの眷圭·黎片笆嘲の略ち * キュ〖を拎侯する眷圭には·これらのル〖チンは蝗えないˉまた·オブジェ * クト掳拉の TA_TPRI ビットを徊救するので·このビットを戮の誊弄に蝗っ * ている眷圭も·これらのル〖チンは蝗えないˉ *//* * 票袋ˇ奶慨オブジェクトの介袋步ブロックの鼎奶婶尸 */typedef struct wait_object_initialization_block { ATR wobjatr; /* オブジェクト掳拉 */} WOBJINIB;/* * 票袋ˇ奶慨オブジェクトのコントロ〖ルブロックの鼎奶婶尸 */typedef struct wait_object_control_block { QUEUE wait_queue; /* 略ちキュ〖 */ const WOBJINIB *wobjinib; /* 介袋步ブロックへのポインタ */} WOBJCB;/* * 票袋ˇ奶慨オブジェクト略ち攫鼠ブロックの年盗 */typedef struct wait_object_waiting_information { WINFO winfo; /* 筛洁の略ち攫鼠ブロック */ WOBJCB *wobjcb; /* 略ちオブジェクトのコントロ〖ルブロック */} WINFO_WOBJ;/* * 票袋ˇ奶慨オブジェクトに滦する略ち觉轮への败乖 * * 悸乖面のタスクを略ち觉轮に败乖させ·票袋ˇ奶慨オブジェクトの略ちキュ〖 * につなぐˉまた·略ち攫鼠ブロック∈WINFO∷の wobjcb を肋年するˉ * wobj_make_wait_tmout は·タイムイベントブロックの判峡も乖うˉ */extern void wobj_make_wait(WOBJCB *wobjcb, WINFO_WOBJ *winfo);extern void wobj_make_wait_tmout(WOBJCB *wobjcb, WINFO_WOBJ *winfo, TMEVTB *tmevtb, TMO tmout);/* * タスク庭黎刨恃构箕の借妄 * * 票袋ˇ奶慨オブジェクトに滦する略ち觉轮にあるタスクの庭黎刨が恃构さ * れた眷圭に·略ちキュ〖の面でのタスクの疤弥を饯赖するˉ */extern void wobj_change_priority(WOBJCB *wobjcb, TCB *tcb);#endif /* _WAIT_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -