共用体 waiting_information

待ち情報ブロック(WINFO)の定義 [詳細]

#include <task.h>

waiting_informationのコラボレーション図

Collaboration graph
[凡例]

変数

ER wercd
TMEVTBtmevtb
TMEVTBtmevtb

説明

待ち情報ブロック(WINFO)の定義

タスクが待ち状態の間は,TCB およびそこから指される WINFO を次のよ うに設定しなければならない.

(a) TCB のタスク状態を待ち状態にする.その際に,待ち状態に伴う付属 状態(TS_WAIT_????)も設定する.

(b) タイムアウトを監視するために,タイムイベントブロックを登録する. 登録するタイムイベントブロックは,待ちに入るサービスコール処理関数 のローカル変数として確保し,それへのポインタを WINFO の tmevtb に 記憶する.タイムアウトの監視が必要ない場合(永久待ちの場合)には, tmevtb を NULL にする.

同期・通信オブジェクトに対する待ち状態の場合には,標準の WINFO に wobjcbフィールドを追加した構造体(WINFO_WOBJ,wait.h で定義)を使 い,タスク状態に TS_WAIT_WOBJ を設定する.また,以下の (c)〜(e) の 設定を行う必要がある.同期・通信オブジェクトに関係しない待ち(起床 待ち,時間経過待ち)の場合には,(c)〜(e) は必要ない.

(c) TCB を待ち対象の同期・通信オブジェクトの待ちキューにつなぐ.待 ちキューにつなぐために,task_queue を使う.TCB を同期・通信オブジェ クトの管理ブロックの共通部分(WOBJCB)の待ちキューにつないだ場合に は,タスク状態に TS_WAIT_WOBJCB を設定する.

(d) 待ち対象の同期・通信オブジェクトの管理ブロックへのポインタを, WINFO_WOBJ の wobjcb に記憶する. FDMPカーネルで wobjcb を使うのは,優先度順の待ちキューにつながれて いるタスクの優先度が変更された場合のみであるが,デバッグ情報を取り 出しやすいように,待ちキューが優先度順でない場合にも wobjcb を設定 する.

(e) 待ち対象の同期・通信オブジェクトに依存して記憶することが必要な 情報がある場合には,WINFO_WOBJ に必要な情報のためのフィールドを追加 した構造体を定義し,WINFO_WOBJ の代わりに用いる.

待ち状態を解除する際には,待ち解除したタスクからの返値を WINFO の wercd に設定する.wercd を使うのは待ち解除以降であるのに対して, tmevtb は待ち解除後は使わないため,メモリ節約のために共用体(union) を使っている.

task.h136 行で定義されています。


構造体

TMEVTB* waiting_information::tmevtb
 

tcb.h142 行で定義されています。

TMEVTB* waiting_information::tmevtb
 

task.h138 行で定義されています。

参照元 make_wait().

ER waiting_information::wercd
 

task.h137 行で定義されています。


この共用体の説明は次のファイルから生成されました:
Copyright © 2006 by TAKAGI Nobuhisa.
このページは Mon Apr 3 23:49:20 2006 に Doxygen によって生成されました。