source: anotherchoice/tags/jsp-1.4.4-full-UTF8/kernel/wait.h@ 26

Last change on this file since 26 was 26, checked in by ykominami, 10 years ago

initial

File size: 7.7 KB
Line 
1/*
2 * TOPPERS/JSP Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Just Standard Profile Kernel
5 *
6 * Copyright (C) 2000 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 *
9 * 上記著作権者
10は,以下の (1)〜(4) の条件か,Free Software Foundation
11 * によってå…
12¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
13 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
14 * を改変したものを含む.以下同じ)を使用・複製・改変・再é…
15å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
16 * 利用と呼ぶ)することを無償で許諾する.
17 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
18 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
19 * スコード中に含まれていること.
20 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
21 * 用できる形で再é…
22å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
23å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
24 * 者
25マニュアルなど)に,上記の著作権表示,この利用条件および下記
26 * の無保証規定を掲載すること.
27 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
28 * 用できない形で再é…
29å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
30 * と.
31 * (a) 再é…
32å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
33マニュアルなど)に,上記の著
34 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
35 * (b) 再é…
36å¸ƒã®å½¢æ…
37‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
38 * 報告すること.
39 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
40 * 害からも,上記著作権者
41およびTOPPERSプロジェクトをå…
42è²¬ã™ã‚‹ã“と.
43 *
44 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
45お
46 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
47 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
48 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
49 *
50 * @(#) $Id: wait.h,v 1.6 2003/06/04 01:46:16 hiro Exp $
51 */
52
53/*
54 * 待
55ち状æ…
56‹ç®¡ç†ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«
57 */
58
59#ifndef _WAIT_H_
60#define _WAIT_H_
61
62#include "task.h"
63#include "time_event.h"
64
65/*
66 * 待
67ち状æ…
68‹ã¸ã®ç§»è¡Œ
69 *
70 * 実行中のタスクを待
71ち状æ…
72‹ã«ç§»è¡Œã•ã›ã‚‹ï¼Žå…
73·ä½“的には,実行中のタスクを
74 * レディキューから削除し,TCB の winfoフィールド,WINFO の tmevtbフ
75 * ィールドを設定する.
76 */
77Inline void
78make_wait(WINFO *winfo)
79{
80 make_non_runnable(runtsk);
81 runtsk->winfo = winfo;
82 winfo->tmevtb = NULL;
83}
84
85/*
86 * 待
87ち状æ…
88‹ã¸ã®ç§»è¡Œï¼ˆã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆæŒ‡å®šï¼‰
89 *
90 * 実行中のタスクを,タイムアウト指定付きで待
91ち状æ…
92‹ã«ç§»è¡Œã•ã›ã‚‹ï¼Žå…
93·ä½“
94 * 的には,実行中のタスクをレディキューから削除し,TCB の winfoフィー
95 * ルド,WINFO の tmevtbフィールドを設定する.また,タイムイベントブ
96 * ロックを登録する.
97 */
98extern void make_wait_tmout(WINFO *winfo, TMEVTB *tmevtb, TMO tmout);
99
100/*
101 * 待
102ち解除
103 *
104 * tcb で指定されるタスクの待
105ち状æ…
106‹ã‚’解除する.å…
107·ä½“的には,タイムイベ
108 * ントブロックが登録されていれば,それを登録解除する.また,タスク状
109 * æ…
110‹ã‚’更新し,待
111ち解除したタスクからの返値を E_OK とする.待
112ちキュー
113 * からの削除は行わない.待
114ち解除したタスクへのディスパッチが必
115要な場
116 * 合には TRUE を返す.
117 */
118extern BOOL wait_complete(TCB *tcb);
119
120/*
121 * タイムアウトに伴う待
122ち解除
123 *
124 * tcb で指定されるタスクが,待
125ちキューにつながれていれば待
126ちキューか
127 * ら削除し,タスク状æ…
128‹ã‚’更新する.また,待
129ち解除したタスクからの返値
130 * を,wait_tmoutでは E_TMOUT,wait_tmout_ok では E_OK とする.待
131ち解
132 * 除したタスクへのディスパッチが必
133要な時は,reqflg を TRUE にする.
134 * wait_tmout_ok は,dly_tsk で使うためのもので,待
135ちキューから削除す
136 * る処理を行わない.
137 * いずれの関数も,タイムイベントのコールバック関数として用いるための
138 * もので,割込みハンドラから呼び出されることを想定している.
139 */
140extern void wait_tmout(TCB *tcb);
141extern void wait_tmout_ok(TCB *tcb);
142
143/*
144 * 待
145ち状æ…
146‹ã®å¼·åˆ¶è§£é™¤
147 *
148 * tcb で指定されるタスクの待
149ち状æ…
150‹ã‚’強制的に解除する.å…
151·ä½“的には,タ
152 * スクが待
153ちキューにつながれていれば待
154ちキューから削除し,タイムイベ
155 * ントブロックが登録されていればそれを登録解除する.
156 * wait_cancel は,タスクの状æ…
157‹ã¯æ›´æ–°ã—ない.
158 * wait_release は,タスクの状æ…
159‹ã‚’更新し,待
160ち解除したタスクからの返
161 * 値を E_RLWAI とする.また,待
162ち解除したタスクへのディスパッチが必
163
164 * 要な場合には TRUE を返す.
165 */
166extern void wait_cancel(TCB *tcb);
167extern BOOL wait_release(TCB *tcb);
168
169/*
170 * 同期・通信オブジェクトの管理ブロックのå…
171±é€šéƒ¨åˆ†æ“ä½œãƒ«ãƒ¼ãƒãƒ³
172 *
173 * 同期・通信オブジェクトの初期化ブロックと管理ブロックのå…
174ˆé ­éƒ¨åˆ†ã¯å…
175±
176 * 通になっている.以下は,そのå…
177±é€šéƒ¨åˆ†ã‚’扱うための型およびルーチン群
178 * である.
179 * 複数の待
180ちキューを持つ同期・通信オブジェクトの場合,å…
181ˆé ­ä»¥å¤–の待
182ち
183 * キューを操作する場合には,これらのルーチンは使えない.また,オブジェ
184 * クト属性の TA_TPRI ビットを参ç…
185§ã™ã‚‹ã®ã§ï¼Œã“のビットを他の目的に使っ
186 * ている場合も,これらのルーチンは使えない.
187 */
188
189/*
190 * 同期・通信オブジェクトの初期化ブロックのå…
191±é€šéƒ¨åˆ†
192 */
193typedef struct wait_object_initialization_block {
194 ATR wobjatr; /* オブジェクト属性 */
195} WOBJINIB;
196
197/*
198 * 同期・通信オブジェクトの管理ブロックのå…
199±é€šéƒ¨åˆ†
200 */
201typedef struct wait_object_control_block {
202 QUEUE wait_queue; /* 待
203ちキュー */
204 const WOBJINIB *wobjinib; /* 初期化ブロックへのポインタ */
205} WOBJCB;
206
207/*
208 * 同期・通信オブジェクト待
209ち情
210報ブロックの定義
211 */
212typedef struct wait_object_waiting_information {
213 WINFO winfo; /* 標準の待
214ち情
215報ブロック */
216 WOBJCB *wobjcb; /* 待
217ちオブジェクトの管理ブロック */
218} WINFO_WOBJ;
219
220/*
221 * 同期・通信オブジェクトに対する待
222ち状æ…
223‹ã¸ã®ç§»è¡Œ
224 *
225 * 実行中のタスクを待
226ち状æ…
227‹ã«ç§»è¡Œã•ã›ï¼ŒåŒæœŸãƒ»é€šä¿¡ã‚ªãƒ–ジェクトの待
228ちキュー
229 * につなぐ.また,待
230ち情
231報ブロック(WINFO)の wobjcb を設定する.
232 * wobj_make_wait_tmout は,タイムイベントブロックの登録も行う.
233 */
234extern void wobj_make_wait(WOBJCB *wobjcb, WINFO_WOBJ *winfo);
235extern void wobj_make_wait_tmout(WOBJCB *wobjcb, WINFO_WOBJ *winfo,
236 TMEVTB *tmevtb, TMO tmout);
237
238/*
239 * タスク優å…
240ˆåº¦å¤‰æ›´æ™‚の処理
241 *
242 * 同期・通信オブジェクトに対する待
243ち状æ…
244‹ã«ã‚るタスクの優å…
245ˆåº¦ãŒå¤‰æ›´ã•
246 * れた場合に,待
247ちキューの中でのタスクの位置を修正する.
248 */
249extern void wobj_change_priority(WOBJCB *wobjcb, TCB *tcb);
250
251#endif /* _WAIT_H_ */
Note: See TracBrowser for help on using the repository browser.