μITRON4.0検定仕様書 (案 )最終更新 : 2001年 3 月 27 日

(社 ) トロン協会 ITRON部会

Copyright (C) 2001 by ITRON Committee, TRON ASSOCIATION, JAPANμITRON4.0検定仕様書 ( 案 )本仕様書は，µITRON4.0 検定仕様書の案であり，検定制度の実施方法を検討する過程で改訂される可能性があります．
本仕様書の著作権は，( 社 )トロン協会 ITRON 部会に属しています．
( 社 ) トロン協会 ITRON 部会は，本仕様書の全文または一部分を改変することなく複写し，無料または実費程度の費用で再配布することを許諾します．ただし，本仕様書の一部分を再配布する場合には，µITRON4.0 検定仕様書 ( 案 )からの抜粋である旨，抜粋した箇所，および本仕様書の全文を入手する方法を明示することを条件とします．
本仕様ならびに本仕様書に関する問い合わせ先は，下記の通りです．
( 社 )トロン協会 ITRON 部会〒 108-0073 東京都港区三田 1 丁目 3 番 39号 勝田ビル 5 階
TEL: 03-3454-3191 FAX: 03-3454-3224§ TRON は “The Real-time Operating system Nucleus”の略称です。
§ ITRONは “Industrial TRON”の略称です。
§ µITRON は “Micro Industrial TRON”の略称です。
§ BTRONは “Business TRON” の略称です。
§ CTRONは “Central and Communication TRON” の略称です。
§ TRON，ITRON，µITRON，BTRON，および CTRON は，特定の商品ないしは商品群を指す
名称ではありません。

第1章
第１節

μITRON4.0 検定仕様書の策定
検定仕様書の目的と位置付け

現在実装されている ITRON 仕様カーネルは実装毎の仕様の違いが大きいために、ソフトウェア部品の流通性が十分に確保できないという問題がある。ソフトウェア部品の流通性を十分に確保するためには、ITRON 仕様に合致していることを検証するための検定が非常に重要であり、ここに検定仕様書を示す。
検定仕様書は、実装されている ITRON 仕様カーネルがあくまでも仕様に合致していくかの確認であり、決して実装されているカーネルの品質をテスト・保証するものではない。検定を受けたいカーネ
ルメーカは、検定仕様書の規定に合致したテストを実施したという申告書（別途示すフォーマット）
により申請する。なお、申告方法や提出書類は別途定めるものとする。
さらに検定仕様書は、スタンダードプロファイルと自動車制御用プロファイルに大別し、各々のテストすべき項目とその具体的手順を記載した。その他、製品マニュアルで確認すべき項目や、ITRON
仕様で定義するヘッダファイルで確認する項目も検定内容に含めた。

第２節

検定仕様書作成にあたっての考え方

検定仕様書は｢テスト項目｣と｢テスト手順｣から構成されている。
テスト手順は、プログラムによる確認、製品マニュアルによる確認、ヘッダファイルによる確認の３種類で構成されている。
｢テスト項目｣は、μITRON4.0 仕様書に記載されている内容と対応しており、確認すべき項目を洗い出したものである。
｢テスト手順｣は、テスト項目確認のための具体的手段を記載している。
・プログラムによる確認：
テストするためのプログラムがより自然に書けるよう、C 言語を意識した記載とし、検定を受ける側の負荷を少なくした。
・マニュアルによる確認：
実装で定義すべき事項が明確に規定されているかを確認するものである。したがって、プログラムによる動作確認は行わずドキュ
メントによる確認とした。
・ヘッダファイルによる確認：μITRON4.0 仕様書で規定するデータ型や定数に割付けられる値
を、ファイル名と共に確認するものである。
2.1 最低限のテスト項目
・μITRON4.0 仕様書へ明示的に記載されている項目についてテストする。
・多く(または、ほとんどすべて)のサービスコールで発生する可能性のあるメインエラーコードは、
μITRON4.0 仕様書ではサービスコール毎に記述しないことを原則としている。したがって、
検定仕様書においても、サービスコール毎にテストしないこととする。
2.2 実装に依存する仕様の扱い
・｢実装定義｣：製品マニュアルなどで、実装における規定を示していること。かつ、実装における規定通りにプログラムが動作すること。
・｢実装依存｣：ソフトウェア部品の流通性が確保できないため、検定仕様書から除く。
・｢未定義｣ ：ソフトウェア部品の流通性が確保できないため、検定仕様書から除く。
・｢実装独自｣：ソフトウェア部品の流通性が確保できないため、検定仕様書から除く。
2.3 エラーコードのテスト方法
・実装定義で省略することができるエラーコードは、テスト項目、およびテスト手順おいて、当該エラーコードを網掛けすることで、省略できないエラーコードと明確に分けた。
・サービスコールが複数のエラーを検出すべき状況で、どのエラーを示すエラーコードを返すかは、実装依存となっている。例えば、サービスコールを発行する際にパラメータが複数あり、

1-1

どのパラメータで E_PAR エラーを検出したのかわからない場合がある。このようなことを防ぐために、検定仕様書では E_PAR エラーを確認する場合は、要因を１つに絞りサービスコールを発行することで E_PAR エラーの確認を行っている。
・各サービスコールの機能説明に記載されているエラーコードは、すべて確認することとした。
2.4

タスク状態の確認
タスクの状態を参照する場合、ref_tsk(タスクの状態参照)サービスコールを用いると効率的なテストを行うことができる。しかし、スタンダードプロファイルや自動車制御用プロファイルでは
ref_tsk サービスコールをサポートする必要はない。したがって、タスクの状態を参照する場合は、以下に示す方法で確認する場合も有ることとする。ただし、テストの内容によっては、別の方法
でタスクの状態を確認することもある。
・実行状態
テスト手順で示すタスクの実行順序で行う。
・休止状態
get_pri サービスコールを発行し、E_OBJ エラーが返ることで確認する。
・待ち状態
rel_wai サービスコールを発行し、E_OK が返ることで確認する。
・強制待ち状態
rsm_tsk サービスコールを発行し、E_OK が返ることで確認する。

2.5 その他・タスクの生成時に行うべき処理やタスクの起動時に行うべき処理の確認は、タスクが生成、または起動される度に実施するのではなく、１回の確認に止めた。
・システムの絶対時刻に関係するテストは、システム条件を満たさない場合があるので、テストは実施しない。
・ATT_ISR のみをサポートしているシステムでは、テスト手順の DEF_INH を ATT_ISR に置換
してテストを行うこと。

1-2

第2 章
第１節

スタンダードプロファイルのテスト項目
テスト項目の見方

テスト項目は、μITRON4.0 仕様書に記載されている内容と対応しており、確認すべき項目を洗い出したものである。また、｢4.1 タスク管理機能｣などタイトルの前の番号は、μITRON4.0 仕様書に記載されてあるものと一致させた。
以下に、act_tsk サービスコールを例にテスト項目の見方を説明する。
No.
1
2

区

分

エラーコード

3
4
5
6
7

テ ス ト 項 目
不正 ID 番号(tskid が不正あるいは使用できない)
キューイングオーバーフロー(起動要求キューイング数のオー
E_QOVR
バーフロー)
対象タスクが休止状態である場合には、tskid で指定されるタスクを、休止状態から実行可能状態に移行させること。

E_ID

タスクの起動時に行うべき処理を行うこと。
サービスコール
処理

タスクを起動する際のパラメータは、生成時に指定したタスクの拡張情報(exinf)と一致すること。また、起動されたタスクでは、拡張情報が正しく受け取れること。
対象タスクが休止状態でない場合には、tskid で指定されるタスクに対する起動要求を
キューイング(タスクの起動要求キューイング数に１を加える)すること。
tskid に TSK_SELF が指定されると、自タスクを対象とすること。

テスト手順参照
TSK2-2
TSK2-20
TSK2-12(Ref)タスク管理
機能-3,4,5,6,7

TSK2-12
TSK2-24
TSK2-4,6●No.
当該サービスコールのテスト番号を示す。
●区分
テスト項目をテスト内容毎に分類したものである。
●テスト項目
μITRON4.0 仕様書に記載されている内容であり、機能を確認する項目である。エラーコードに網掛けされてあるものは、実装定義でエラーの検出を省略できることを示す。ただし、これらのエラーコードの検出を省略する場合は、省略する旨が製品マニュアルに記載されていること。
●テスト手順参照
テスト項目を確認する具体的手段が、テスト手順のどの部分に記載されているかを示す。
(Ref)と記述されているものは、別のテスト項目で確認済であるので、ここでの確認項目ではないことを示す。
また、複数の番号が記述されている場合は、当該テスト項目の確認に複数のテスト手順が必要であることを示している。

2-1

第 2 節 テスト項目
2. ITRON 仕様共通定義
2.1 ITRON 仕様共通概念
2.1.1

用語の意味
確認項目なし2.1.2 API の構成要素
項番
確
認
事
項
テスト手順参照
スタンダードプロファイルに含まれるサービスコールの名称、パラメータとリター
ンパラメータの種類・順序・名称・データ型が、μITRON4.0 仕様書と一致してい ＵＭＡ-1
1
ること。
スタンダードプロファイルに含まれる静的 API の名称、パラメータの種類・順序・
ＵＭＡ-2
2
名称・データ型がμITRON4.0 仕様書と一致していること。
“kernel.h”から“itron.h”をインクルードしていること。
3
HED-1
オブジェクトの ID 番号などの自動割付けを行うコンフィギュレータは、自動割付けを行4COM4-7
った結果を、自動割付け結果ヘッダファイル kernel_id.h に生成すること。
ITRON 仕様で標準化された同じヘッダファイルを複数回インクルードしてもエラ
5
COM1-1
ーとならないこと。
2.1.3 オブジェクトの ID 番号とオブジェクト番号
項番
確
認
事
項
ID 番号は 1〜255 の範囲の正の値をサポートしていること。
1

テスト手順参照
SPC16-S256

2.1.4 優先度
項番
確
認
事
項
1〜16 の 16 段階のタスク優先度をサポートすること。
1
タスク優先度以上の段階数のメッセージ優先度をサポートすること。
2

テスト手順参照
COM2-26
COM2-34

2.1.5

機能コード
確認項目なし2.1.6 サービスコールの返値とエラーコード
テスト手順参照
項番
確認事
項
エラーコードは、下位 8 ビットのメインエラーコードと、それを除いた上位ビット
1
COM8-2,3のサブエラーコードで構成される。
サブエラーコードをサポートする場合は、実装毎に定義しサブエラーコードに関す
2
UMA-3
る記述が製品マニュアルに記載されていること。
3

メインエラーコード E_MACV

2.1.7

オブジェクト属性と拡張情報
確認項目なしメモリアクセス違反

2.1.8
2.1.8 タイムアウトとノンブロッキング
項番
確
認
事
項
タイムアウト時間を０に設定する(ポーリング)と、サービスコールの中で待ち状態
1に入るべき状況になっても、待ち状態に入らないこと。
タイムアウト指定(TMO 型)は、正の値でタイムアウト時間を指定できること。
2
TMO_FEVR で永久待ちを指定できること。
32-2

COM3-2

テスト手順参照
SEM4-8
SEM4-25
SEM4-29

2.1.9 相対時間とシステム時刻
項番
確
認
事
項
テスト手順参照
システム時刻を変更した場合にも、相対時刻を用いて指定したイベントの発生する COM31
16
実世界の時間は変化しないこと。
2.1.10
項番
1

2
3
4
5
2.1.11
項番
1
−
2
3
4
5
6
7
8
9

システムコンフィギュレーションファイル
確認事
項
テスト手順参照
システムコンフィギュレーションファイルには、カーネルやソフトウェア部品の静COM4的 API と ITRON 仕様共通静的 API に加えて、C 言語処理系のプリプロセッサディ
3,5
レクティブを記述できること。
システムコンフィギュレーションファイルは、まず、Ｃ言語のプリプロセッサに通COM4される。次にソフトウェア部品のコンフィギュレータによって順に処理され、最後3,4,5にカーネルのコンフィギュレータによって処理されること。
カーネルコンフィギュレータでは、カーネル構成・初期化ファイルと ID 自動割付 COM46,7
け結果ヘッダファイル(kernel_id.h)を生成すること。
自分自身に対する静的 API または共通静的 API として解釈できない記述が含まれ COM51,2,3,4ている場合には、エラーを報告すること。
カーネルのコンフィギュレータは、 ＃ で始まる行を無視すること。
COM4-5
静的 API の文法とパラメータ
確認事
項
サービスコールに対応する静的 API のパラメータは、対応するサービスコールのＣ言語 APIに準ずること。ただし、パラメータにパケットへのポインタがある場合には、パケット中の各要素を ， で区切り、 ｛ と ｝ で囲んだ形で記述すること。
静的 API のパラメータは、記述に使える式によって分類される。
自動割付け対応整数値パラメータ
自動割付け非対応整数値パラメータ
プリプロセッサ定数式パラメータ一般定数式パラメータ
自動割付け対応整数値パラメータに単一の識別子が記述された場合、その静的 APIを処理するコンフィギュレータが、識別子に整数値を割付けること。
整数値を割り付けられた識別子は、コンフィギュレータおよびそれ以降のコンフィ
ギュレータが処理する静的 API のパラメータ中で、割り付けられた整数値に展開されるプリプロセッサマクロと同等なものとして用いることができること。
静的 API に文法エラーやパラメータ数の過不足があった場合には、それを検出した
コンフィギュレータがエラーを報告すること。
静的 API の処理中にエラーを検出した場合の扱いについては、実装毎に定義すること。エラー発生時の扱いは製品マニュアルに記載されていること。

テスト手順参照
COM4-2−
COM4-2
INH1-S7
COM4-2
COM4-2
COM4-7
TEX1-S4
COM51,2,3,4
UMA-4

2.2. API の名称に関する原則
2.2.1

ソフトウェア部品識別名
確認項目なし2.2.2 サービスコール
テスト手順参照
項番
確認事
項
実装が独自に用意するサービスコールの名称が、μITRON4.0 仕様書と合致してい1UMA-5ること。また、その名称が製品マニュアルに記載されていること。

2.2.3

コールバック
確認項目なし

2-3

2.2.4 静的 API
項番
確
認
事
項
テスト手順参照
実装が独自に用意する静的 API の名称が、μITRON4.0 仕様書と合致しているこ
1UMA-5と。また、その名称が製品マニュアルに記載されていること。
2.2.5

パラメータとリターンパラメータ
確認項目なし2.2.6

データ型
確認項目なし2.2.7 定数テスト手順参照
項番
確認事
項
実装が独自に定義するメインエラーコードの名称が、μITRON4.0 仕様書と一致し1
UMA-6ていること。また、その名称が製品マニュアルに記載されていること。
2.2.8

マクロ
確認項目なし2.2.9 ヘッダファイル
テスト手順参照
項番
確認
事
項ITRON 仕様共通定義で規定されるデータ型、定数、マクロの定義などを含むヘッ
1
HED-2
ダファイルの名称を itron.h とすること。
カーネル仕様で定められるすべてのサービスコールの宣言と、データ型、定数、マ2HED-3クロの定義などを含むヘッダファイルの名称を kernel.h とすること。
カーネルのコンフィギュレータが生成する自動割付け結果ヘッダファイルの名称を3
HED-4
kernel_id.h とすること。
2.2.10項番
1

カーネルとソフトウェア部品の内部識別子
確認事
項
テスト手順参照
カーネルの内部識別子は、C 言語レベルで、_kernel_または_KERNEL_で始まる名
COM6-1
称とすることを原則とする。

2.3 ITRON 仕様共通定義
2.3.1 ITRON 仕様共通データ型
項番

確

認

事

項

1

B

符号付き 8 ビット整数

2

H

符号付き 16 ビット整数

3

W

符号付き 32 ビット整数

4

UB

符号無し 8 ビット整数

5UH

符号無し 16 ビット整数

6

UW

符号無し 32 ビット整数

7

VB

データタイプが定ならない 8 ビットの値(実装毎に定義)

8

VH

データタイプが定ならない 16 ビットの値(実装毎に定義)

2-4

テスト手順参照
HED-5
COM7-1,3
HED-6
COM7-7,9
HED-7
COM7-13,15
HED-8
COM7-4,6
HED-9
COM7-10,12
HED-10COM7-16,18
HED-11
COM7-19
HED-12
COM7-20

9

VW

10

VP

11

FP

12

INT

13

UINT

14

BOOL

15

FN

16

ER

17

ID

18

ATR

19

STAT

20

MODE

21

PRI

22

SIZE

23

TMO

24

RELTIM

25

SYSTIM

26

VP_INT27

ER_BOOL

28

ER_ID

29

ER_UINT

HED-13
COM7-21
HED-14
データタイプの定まらないものへのポインタ
COM7-22
HED-15
プログラムの起動番地(ポインタ)
COM7-23
HED-1616 ビット以上の符号付き整数
COM7-24,26
HED-1716 ビット以上の符号無し整数
COM7-27,29
HED-18
真偽値(TRUE または FALSE)
COM7-31,33
HED-19
機能コード(16 ビット以上の符号付き整数)
COM7-34,36
HED-20
エラーコード(8 ビット以上の符号付き整数)
COM7-37,39
HED-21
オブジェクトの ID 番号(16 ビット以上の符号付き整数)
COM7-40,42
HED-22
オブジェクト属性(8 ビット以上の符号無し整数)
COM7-43,45
HED-23
オブジェクトの状態(16 ビット以上の符号無し整数)
COM7-46,48
HED-24
サービスコールの動作モード(8 ビット以上の符号無し整数)
COM7-49,51
HED-25
優先度(16 ビット以上の符号付き整数)
COM7-52,54
HED-26
メモリ領域のサイズ(ポインタと同じビット幅の符号無し整数)
COM7-55,57
HED-27
タイムアウト指定(16 ビット以上の符号付き整数、時間単位は 1 ミリ秒)
COM7-58,60
HED-28相対時間(16 ビット以上の符号無し整数、時間単位は１ミリ秒)
COM7-61,63
HED-29システム時刻(16 ビット以上の符号無し整数、時間単位は１ミリ秒)
COM7-64,66
データタイプが定まらないものへのポインタまたはプロセッサに自 HED-30
COM7-67,69
然なサイズの符号付き整数 (実装毎に定義)
HED-31
エラーコードまたは真偽値(符号付き整数)
COM770,72,74,76
HED-32
エラーコードまたは ID 番号(符号付き整数、負の ID 番号は表現できない)
COM7-77,79
エラーコードまたは符号無し整数(符号付き整数、符号無し整数を HED-33
COM7-80,82
表現する場合の有効ビット数は UINT より 1 ビット短い)

データタイプが定ならない 32 ビットの値

2-5(実装毎に定義)

2.3.2 ITRON 仕様共通定数
項番
区
分
1
NULL
2
TRUE
一
般
3
FALSE
4
E_OK
5
E_SYS
6
E_NOSPT
7
E_RSFN8
E_RSATR
9
E_PAR
10
E_ID
メイン
11
E_CTX
エラーコード
12
E_MACV
13
E_ILUSE14
E_NOMEM
15
E_OBJ
16
E_QOVR
17
E_RLWAI18
E_TMOUT
オブジェクト属性 TA_NULL
19
タイムアウト20
TMO_POL指定21
TMO_FEVR

確 認 事 項
無効ポインタ真偽
正常終了
システムエラー
未サポート機能
予約機能コード
予約属性
パラメータエラー
不正 ID 番号
コンテキストエラー
メモリアクセス違反
サービスコール不正
メモリ不足
オブジェクト状態エラー
キューイングオーバーフロー
待ち状態の強制解除
ポーリング失敗またはタイムアウト
オブジェクト属性を指定しない
ポーリング
永久待ち

0
1
0
0
-5
-9
-10
-11
-17
-18
-25
-26
-28
-33
-41
-43
-49
-50
0
0
-1

テスト手順参照
HED-34HED-35HED-36HED-37
HED-38HED-39HED-40HED-41
HED-42HED-43HED-44HED-45
HED-46
HED-47
HED-48
HED-49HED-50HED-51HED-52HED-53HED-542.3.3 ITRON 仕様共通マクロ
項番
確
認
事
項
テスト手順参照ER mercd=MERCD(ER ercd)がヘッダファイル itron.h でマクロ定義され、エ COM8-4
1
HED-55
ラーコードからメインエラーコードが取り出せること。
ER sercd=SERCD(ER ercd) がヘッダファイル itron.h でマクロ定義され、エラ COM8-5
2
HED-56
ーコードからサブエラーコードが取り出せること。
2.3.4 ITRON 仕様共通静的 API
テスト手順参照
項番
確認事
項システムコンフィギュレーションファイルから、プリプロセッサ定数式パラメータおよび一般定数式パラメータの解釈に必要なＣ言語の宣言・定数とプリプロセッサ COM41
5,6
マクロの定数などを含んだファイルをインクルードするための指定｢INCLUDE(文字列);｣ができること。
3. μITRON4.0 仕様の概念と共通定義
3.1 基本的な用語の意味
確認項目なし3 .2
タスク状態とスケジューリング規則
3.2.1 タスク状態
テスト手順参照
項番
確認事
項タスクの待ち解除とは、タスクが待ち状態の時は実行可能状態に、二SPC1112,14,18
タスク
重待ち状態の時は強制待ち状態に移行させること。
の待ちタスクの強制待ちからの再開とは、タスクが強制待ち状態のときは実
SPC12
28,34
行可能状態に、二重待ち状態のときは待ち状態に移行させること。

2-6

3.2.2 タスクのスケジューリング規則
項番
確
認
事
項
テスト手順参照実行できるタスクが複数ある場合には、その中で最も優先順位の高いタスクが実行
1
SPC2-7状態となり、他は実行可能状態となること。
タスク間の優先順位は、異なる優先度を持つタスク間では、高い優先度を持つタス
2
SPC2-7クの方が高い優先順位を持つこと。
同じ優先度を持つタスク間では、先に実行できる状態(実行状態または実行可能状
3
SPC2-12態)になったタスクの方が高い優先順位を持つこと。
最も高い優先順位を持つタスクが変化した場合には、ただちにディスパッチが起こ
4
SPC2-9り、実行状態のタスクが切り替わること。
ディスパッチが起こらない状態になっている場合には、実行状態のタスクの切替
5
SPC3-7は、ディスパッチが起こる状態となるまで保留されること。
優先順位の高いタスクが実行できる状態にある限り、それより優先順位の低いタス
クは全く実行されないこと。すなわち、最も高い優先順位を持つタスクが待ち状態
6
SPC4-14に入るなどの理由で実行できない状態とならない限り、他のタスクは全く実行されないこと。
実行可能状態のタスクが実行状態になった後に実行可能状態に戻った直後には、同
7
SPC2-16
じ優先度を持つタスクの中で最高の優先順位を持っている。
実行状態のタスクが待ち状態になった後に待ち解除されて実行できる状態になった
8
SPC2-19
直後には、同じ優先度を持つタスクの中で最低の優先順位となること。
3.3 割込み処理モデル
3.3.1 割込みハンドラと割込みサービスルーチン
項番
確
認
事
項
割込みハンドラの記述方法は実装毎に定義し、製品マニュアルに記載されているこ
1と。
DEF_INH と ATT_ISR の２つをサポートした場合は、その振舞いが製品マニュア
2
ルに記載されていること。
カーネルは、ある優先度より高い優先度を持つ割込みを、管理しないものとすることができる。どの優先度より高い優先度を持つものをカーネルの管理外の割込みと3するかが製品マニュアルに記載されていること。
3.3.2

テスト手順参照
UMA-7
UMA-8
UMA-9

割込みの指定方法と割込みサービスルーチンの起動確認項目なし3.4 例外処理モデル
3.4.1 例外処理の枠組み
項番
確
認
事
項
CPU 例外ハンドラは、プロセッサが検出する CPU 例外によって起動されること。
1
CPU 例外ハンドラは、CPU 例外の種類毎に、アプリケーションで登録できること。
2
タスク例外処理ルーチンからリターンすると、中断された処理の実行が継続されること。
3
タスク毎に一つのタスク例外処理ルーチンを、アプリケーションで登録できること。
4

2-7

テスト手順参照
SPC5-2
SPC5-S3
SPC6-4
SPC6-6

3.4.2 CPU 例外ハンドラで行える操作
項番
確
認
事
項
テスト手順参照
CPU 例外ハンドラの記述方法は実装毎に定義し、製品マニュアルに記載されてい1
UMA-10ること。
CPU 例外ハンドラ内で呼出し可能なサービスコールは実装毎に定義し、製品マニ2
UMA-11
ュアルに記載されていること。
CPU 例外ハンドラ内で次の操作を行う方法を用意すること。また、その方法は製−−品マニュアルに記載されていること。
CPU 例外が発生したコンテキストや状態の読出しができること。具体的には、CPU 例外が発生した処理で sns_yyy を呼び出した場合の結果を、CPU 例外ハ UMA-123
ンドラ内で取り出せること。
CPU 例外が発生したタスクの ID 番号が読み出せること(例外を発生させたのが4
UMA-13
タスクである場合のみ)。
タスク例外処理の要求ができること。具体的には、CPU 例外ハンドラ内で、
5
UMA-14
ras_tex と同等の操作ができること(注) CPU ロック状態で CPU 例外が発生した場合には、項番 4 および項番 5 の操作ができることは要求されない。
3.5 コンテキストとシステム状態
3.5.1 処理単位とコンテキスト
確認項目なし3.5.2 タスクコンテキストと非タスクコンテキスト
項番
確
認
事
項
タスクの実行されるコンテキストは、タスクコンテキストであること。
1
割込みハンドラおよび周期ハンドラが実行されるコンテキストは、非タスクコンテ
2
キストである。
非タスクコンテキストからサービスコールに渡すパラメータとして、自タスクを指定する
3
TSK_SELF を用いることはできない。渡された場合には、E_ID エラーとなること。
タスクコンテキストを実行中に CPU 例外が発生した場合、CPU 例外ハンドラが実4行されるコンテキストが製品マニュアルに記載されていること。
非タスクコンテキストを実行中に CPU 例外が発生した場合には、CPU 例外ハンド
5
ラが実行されるコンテキストは非タスクコンテキストであること。
3.5.3 処理の優先順位とサービスコールの不可分性
項番
確
認
事
項
割込みハンドラの優先順位は、ディスパッチャの優先順位よりも高いこと。
1
割込みハンドラおよび割込みサービスルーチン相互間の優先順位は、それらを起動
2
する外部割込みの優先度に対応して定めることを基本に、実装毎に定義すること。
周期ハンドラの優先順位は、isig_tim を呼び出した割込みハンドラの優先順位以下
3
で、ディスパッチャの優先順位よりも高いという範囲内で、実装毎に定義すること。
CPU 例外ハンドラの優先順位は、CPU 例外が発生した処理の優先順位と、ディス4
パッチャの優先順位のいずれよりも高いこと。
CPU 例外ハンドラと、割込みハンドラやタイムイベントハンドラとの間の優先順
5位は実装毎に定義すること。

2-8

テスト手順参照
SPC7-2
SPC7-5,17
SPC7-7
UMA-15
SPC7-10

テスト手順参照
TSK3-11
UMA-16
UMA-17
UMA-18
UMA-19

3.5.4 CPU ロック状態
項番
確
認
事
項
CPU ロック状態では、割込みハンドラ(カーネルの管理外の割込みによって起動されるものを除く)や周期ハンドラは起動されず、ディスパッチも起こらないこと。
1
すなわち、割込みが発生しても各ハンドラは起動されないこと。
−
CPU ロック状態では、以下のサービスコールを呼び出すことができること。
CPU ロック状態への移行
2
loc_cpu
CPU ロック状態への移行
3
iloc_cpu
CPU ロック状態の解除
4
unl_cpu
CPU ロック状態の解除
5
iunl_cpu
コンテキストの参照
6
sns_ctx
CPU ロック状態の参照
7
sns_loc
ディスパッチ禁止状態の参照
8
sns_dsp
ディスパッチ保留状態の参照
9
sns_dpn
タスク例外処理禁止状態の参照
10
sns_tex
割込みハンドラ内で CPU ロック解除状態にするための方法が用意されていること。
11
割込みハンドラから正しくリターンするための方法が用意されていること。
12
割込みサービスルーチンと周期ハンドラの実行開始直後は、CPU ロック解除状態
13になっていること。
CPU 例外ハンドラの起動と、ハンドラからのリターンによって、CPU ロック／ロ
14
ック解除状態が変化しないこと。
タスクの実行開始直後は、CPU ロック解除状態になっていること。
15
タスク例外処理ルーチンの起動と、例外処理ルーチンからのリターンによって、
16
CPU ロック／ロック解除状態が変化しないこと。
タスク例外処理ルーチンからのリターン直後−
17
18

CPU ロック状態でリターンした場合には CPU ロック状態になっていること。
CPU ロック解除状態でリターンした場合には CPU ロック解除状態になっていること。

2-9

テスト手順参照
SPC88,39−
SPC8-10
SPC8-25
SPC8-33
SPC8-29
SPC8-12
SPC8-14
SPC8-16
SPC8-18
SPC8-20
UMA-20
UMA-21
SPC8-44
SPC9-3
SPC105,8,13,16
SPC8-2SPC10-27−
SPC10-22
SPC10-31

3.5.5 ディスパッチ禁止状態
項番
確
認
事
項
テスト手順参照
ディスパッチ禁止状態では、ディスパッチが起こらないこと。
1
SPC11-6
ディスパッチ禁止状態でも、自タスクを広義の待ち状態にする可能性がないサービ SPC112-10,11
スコールは呼び出せること。
非タスクコンテキストから呼び出せるサービスコールは、ディスパッチ禁止状態で
3
SPC11-28
も制限を受けないこと。
割込みハンドラの起動と、そこからのリターンによってディスパッチ禁止／許可状 SPC114-23,48態は変化しないこと。
割込みサービスルーチンの起動と、そこからのリータンによってディスパッチ禁止 SPC115-23,48／許可状態は変化しないこと。
周期ハンドラの起動と、そこからのリータンによってディスパッチ禁止／許可状態 SPC116-33,55は変化しないこと。
タスクの実行開始直後は、ディスパッチ許可状態になっていること。
7
SPC11-2
タスク例外処理ルーチンの起動と、そこからのリターンによってディスパッチ禁止 SPC118-39,60／許可状態は変化しないこと。
ポーリングを行うサービスコールは、自タスクを待ち状態にする可能性がないた
9
SPC11-8め、ディスパッチ禁止状態でも呼び出すことができること。
ディスパッチ禁止状態で CPU ロック状態に移行し、その後 CPU ロックを解除して10
SPC11-19
も、ディスパッチ禁止状態は保持されていること。
CPU ロック状態でも、ディスパッチ禁止状態かディスパッチ許可状態かを参照で SPC1111-15,64
きること。
（注）
項番 4：割込みハンドラをサポートしていないシステムでは、テストを省略できる。
項番 5：割込みサービスルーチンをサポートしていないシステムでは、テストを省略できる。
3.5.6 ディスパッチ保留状態の間のタスク状態
テスト手順参照
項番
確認事
項ディスパッチ保留状態では、実行中のタスクがプリエンプトされるべき状況になっても、新たSPC12に実行すべき状態となったタスクにはディスパッチされないこと。実行すべきタスクへのディ
1
6,8
スパッチは、ディスパッチが起こる状態となるまで保留されること。

2-10

3.6 非タスクコンテキストからのサービスコール呼出し
3.6.1 非タスクコンテキストから呼び出せるサービスコール
項番
確
認
事
項
−
非タスクコンテキスト専用のサービスコール
iact_tsk
タスクの起動1iwup_tsk
タスクの起床2
irel_wai
待ち状態の強制解除
3
iras_tex
タスク例外処理の要求
4
isig_sem
セマフォ資源の返却
5
iset_flg
イベントフラグのセット
6
ipsnd_dtq
データキューへの送信(ポーリング)
7
ifsnd_dtq
データキューへの強制送信
8
isig_tim
タイムティックの供給
9
irot_rdq
タスクの実行順位の回転
10
iget_tid
実行状態のタスク ID の参照
11
iloc_cpu
CPU ロック状態への移行
12
iunl_cpu
CPU ロック状態の解除
13−
どのコンテキストからでも呼び出せるサービスコール
コンテキストの参照
14
sns_ctx
CPU ロック状態の参照
15
sns_loc
ディスパッチ禁止状態の参照
16
sns_dsp
ディスパッチ保留状態の参照
17
sns_dpn
タスク例外処理禁止状態の参照
18
sns_tex

テスト手順参照−
TSK3-7
SYN3-10
SYN6-11
TEX3-16
SEM3-16
FLG3-9DTQ4-10
DTQ7-12
SPC13-23
SYS2-27
SYS2-7
SYS2-9SYS2-17−
SPC13-2,13
SPC13-4,15
SPC13-6,17
SPC13-8,19
SPC13-10,21

3.6.2 サービスコールの遅延実行
項番
確
認
事
項
テスト手順参照
サービスコールを遅延実行する場合にも、遅延実行することを許されないものを除いて、サー1
SPC14-7
ビスコールの実行順序がサービスコールの呼び出された順序に一致しなければならないこと。
3.6.3

呼び出せるサービスコールの追加
確認項目なし3.7 システム初期化手順
項番
確
認
事
項
ATT_INI 以外の静的 API の処理は、システムコンフィギュレーションファイル中1に記述された順序でおこなうこと。
初期化ルーチンはアプリケーションで用意され、ATT_INI を使って登録され、実行2されること。
システム時刻は、システム初期化時点で時刻０とすること。
3
カーネルの初期化処理を呼び出す方法は、実装毎に定義すること。
4
静的 API の処理中にエラーを検出した場合の扱いは、実装毎に定義すること。
5
カーネルの管理外の割込みを禁止するかどうかは、実装毎に定義すること。
6
初期化ルーチン内でサービスコールを呼び出せるか否か、呼び出せる場合にはどの7ようなサービスコールが呼び出せるかは、実装毎に定義すること。
初期化ルーチンは、システムコンフィギュレーションファイル中に ATT_INI の記
8
述のある順序で実行すること。
カーネルの動作開始時点で初めて割込みを許可すること。
92-11

テスト手順参照
SPC15-8
SPC15-3
TIM-3
UMA-22
UMA-23
UMA-24
UMA-25SPC15-3
SPC15-4

3.8 オブジェクトの登録とその解除
項番
確
認
事
項
テスト手順参照
ID 番号で識別されるオブジェクトについては、少なくとも 255 個のオブジェクト
1
SPC16-4が登録できること。
カーネルに登録できるオブジェクトの最大数や ID 番号の範囲は、実装毎に定義す2
UMA-26
ること。
自動割付けされる ID 番号の範囲の指定方法は、実装毎に定義すること。
3
UMA-273.9

処理単位の記述形式
確認項目なし3.10

カーネル構成定数／マクロ
確認項目なし3.11 カーネル共通定義
3.11.1 カーネル共通定義
項番
区
分
1
TA_HLNG
2
TA_TFIFO
オブジェクト3
TA_TPRI
属
性
4
TA_MFIFO
5
TA_MPRI
その他のカーネ TSK_SELF
6
ル共通定義
7
TSK_NONE

0x00
0x00
0x01
0x00
0x02
0
0

テスト手順参照
HED-57
HED-58
HED-59HED-60HED-61HED-62HED-63

確 認 事 項
タスク優先度の最小値
1
16 以上
タスク優先度の最大値
メッセージ優先度の最小値
1
TMAX_TPRI 以上
メッセージ優先度の最大値
カーネルのメーカーコード
カーネルの識別番号
ITRON 仕様のバージョン番号
カーネルのバージョン番号

テスト手順参照
HED-64HED-65
HED-66HED-67
HED-68
HED-69HED-70HED-71

4. μITRON4.0 仕様の機能
4.1 タスク管理機能
No.
区分
テ ス ト 項 目
タスクの生成時 タスクの起動要求キューイング数をクリアすること。
1に行うべき処理 タスク例外処理ルーチンの定義されていない状態へ初期化すること。
2
タスクの優先度を初期化すること。
3
起床要求キューイング数をクリアすること。
4
タスクの起動時
強制待ち要求ネスト数をクリアすること。
5に行うべき処理保留例外要因をクリアすること。
6
タスク例外処理を禁止状態へ設定すること。
7
タスクのメインルーチンからリターンした場合にはタスクを終
タスクの終了
8
了すること。
タスクの起動要求キューイング数の最大値 １以上
定数
9
TMAX_ACTCNT

テスト手順参照
TSK1-3
TSK1-5
TSK1-20
TSK1-22
SYN7-24
TEX3-4
TEX3-2(Ref)
return-1
HED-72

3.11.2
項番
1
2
3
4
5
6
7
8

確 認 事 項
高級言語用のインタフェースで処理単位で起動
タスクの待ち行列を FIFO 順に
タスクの待ち行列をタスクの優先度順にメッセージのキューを FIFO 順に
メッセージのキューをメッセージの優先度順に
自タスク指定該当するタスクが無い

カーネル共通構成定数
区分
TMIN_TPRI
TMAX_TPRI
優先度の範囲TMIN_MPRI
TMAX_MPRITKERNEL_MAKER
TKERNEL_PRID
バージョン情報
TKERNEL_SPVER
TKERNEL_PRVER

2-12

CRE_TSK：
CRE_TSK：タスクの生成（静的 API）
No.
区
分
1
E_ID
2
E_RSATR3
E_PAR
エラーコード
4
E_PAR
5
E_PAR
6
E_OBJ

テ ス ト 項 目
不正 ID 番号
予約属性(tskatr が不正あるいは使用できない)パラメータエラー(task が不正)
パラメータエラー(itskpri が不正)
パラメータエラー(stksz が不正)オブジェクト状態エラー(対象タスクが登録済)

7

タスクの生成時に行うべき処理を行うこと。

−
8−

tskatr に TA_ACT の指定がない場合
対象タスクを未登録状態から休止状態に移行させること。
tskatr に TA_ACT の指定がある場合
対象タスクを未登録状態から実行可能状態に移行させること。

9静的 API処
理

テスト手順参照
TSK1-S4
TSK1-S6
TSK1-S8
TSK1-S10
TSK1-S12
TSK1-S14(Ref)タスク管理機能-1,2−
TSK1-7−
TSK1-1

10

タスクの起動時に行うべき処理を行うこと。

(Ref)タスク管理
機能-3,4,5,6,7

11

拡張情報(exinf)がパラメータとして渡ること。また、起動されたタスクでは、起動情報が正しく受取れること。

TSK1-1(注)
No.3

E_PAR エラーを検出できる task がシステムに存在しない場合は、テストを省略することができる。
No.5 E_PAR エラーを検出できる stksz がシステムに存在しない場合は、テストを省略することができる。
act_tsk：
act_tsk：タスクの起動
No.
区
分
1
エラーコード
2
3
4
5

6
7

サービスコール
処理

テスト手順参照
テ ス ト 項 目
不正 ID 番号(tskid が不正あるいは使用できない)
E_ID
TSK2-2
キューイングオーバーフロー(起動要求キューイ
E_QOVRTSK2-20
ング数のオーバーフロー)
対象タスクが休止状態である場合には、tskid で指定されるタス
TSK2-12
クを、休止状態から実行可能状態に移行させること。
(Ref)タスク管理
タスクの起動時に行うべき処理を行うこと。
機能-3,4,5,6,7
タスクを起動する際のパラメータは、生成時に指定したタスクの拡張情報(exinf)と一致すること。また、起動されたタスクで TSK2-12
は、拡張情報が正しく受け取れること。
対象タスクが休止状態でない場合には、tskid で指定されるタスクに対する起動要求をキューイング(タスクの起動要求キューイ TSK2-24
ング数に１を加える)すること。
tskid に TSK_SELF が指定されると、自タスクを対象とするこTSK2-4,6と。

2-13

iact_tsk：
iact_tsk：タスクの起動
No.
区
分
1

2

エラーコード

3
4
5

6
7
(注)
No.2

サービスコール処理

テ ス ト 項 目
テスト手順参照
不正 ID 番号(tskid が不正あるいは使用できない)
E_ID
TSK3-3
キューイングオーバーフロー(起動要求キューイング
数のオーバーフロー)
サービスコールを遅延実行する場合で、E_QOVR エ TSK3-9
E_QOVR
ラーを返すことを実装定義で省略できる。省略する
場合は、E_OK を返すこと。(注)対象タスクが休止状態である場合には、tskid で指定されるタス
TSK3-13
クを、休止状態から実行可能状態に移行させること。
(Ref)タスク管理
タスクの起動時に行うべき処理を行うこと。
機能-3,4,5,6,7
タスクを起動する際のパラメータは、生成時に指定したタスクの拡張情報(exinf)と一致すること。また、起動されたタスクで TSK3-13
は、拡張情報が正しく受け取れること。
対象タスクが休止状態でない場合には、tskid で指定されるタスクに対する起動要求をキューイング(タスクの起動要求キューイ TSK3-16
ング数に１を加える)すること。
tskid に TSK̲SELF が指定された場合には、E_ID エラーを返すこと。
TSK3-5

サービスコールを遅延実行する場合で、E_QOVR エラーを省略することが製品マニュアルに記載されていれば、E_OK を返すことができる。

can_act：
can_act：タスク起動要求のキャンセル
No.
テスト手順参照
区分
テ ス ト 項 目
不正 ID 番号(tskid が不正あるいは使用できない) TSK2-10
エラーコード1
E_ID
タスクの起動要求キューイング数を０にクリアすること。
2
TSK2-8
サービスコール ０クリアする前の起動要求キューイング数を返値として actcnt
3
TSK2-16
処
理に返すこと。
tskid に TSK_SELF が指定されると、自タスクを対象とすること。
TSK2-6
4
ext_tsk：
ext_tsk：自タスクの終了
No.
テスト手順参照
区分
テ ス ト 項 目
TSK4-7
自タスクを実行状態から休止状態に移行させること。
1−
自タスクに対する起動要求がキューイングされている場合−
起動要求キューイング数が１以上の場合には、起動要求キュ2
TSK4-11
ーイング数から１を減じること。
(Ref)タスク管理
サービスコール
タスクの起動時に行うべき処理を行うこと。
3
機能-3,4,5,6,7
処
理
実行可能状態に移行させること。
4
TSK4-9
タスクを起動する際のパラメータとして、タスクの拡張情報(exinf)を渡すこと。また、起動されたタスクでは、拡張情報 TSK4-95が正しく受け取れること。
サービスコール内でエラーが発生した場合の処理。
6
UMA-282-14

return：
return：自タスクの終了
No.
区
分
1
−
2
3
4

サービスコール処理

テ ス ト 項 目
テスト手順参照
TSK5-7
自タスクを実行状態から休止状態に移行させること。
自タスクに対する起動要求がキューイングされている場合−
起動要求キューイング数が１以上の場合には、起動要求キュTSK5-11
ーイング数から１を減じること。
タスクの起動時に行うべき処理を行い、実行可能状態に移行 (Ref)タスク管理
機能-3,4,5,6,7
させること。
タスクを起動する際のパラメータとして、タスクの拡張情報(exinf)を渡すこと。また、起動されたタスクでは、拡張情報 TSK5-9が正しく受け取れること。

ter_tsk：
er_tsk：タスクの強制終了
No.
区分
テ ス ト 項 目
不正 ID 番号(tskid が不正あるいは使用できない)
1
E_ID
エラーコードサービスコール不正使用(対象タスクが自タスク)
2
E_ILUSE
オブジェクト状態エラー(対象タスクが休止状態)
3
E_OBJ
tskid で指定されるタスクを、休止状態に移行させること。
4−
対象タスクに対する起動要求がキューイングされている場合
起動要求キューイング数から１を減じること。
5
対象タスクを実行可能状態に移行させること。
6
サービスコール
処理
タスクの起動すべき処理を行うこと。
7
8

タスクを起動する際のパラメータとして、タスクの拡張情報を渡すこと。また、起動されたタスクでは、拡張情報だ正し
く受け取れること。

テスト手順参照
TSK6-2
TSK6-4
TSK6-6
TSK6-10−
TSK6-20
TSK6-18(Ref)タスク管理
機能-3,4,5,6,7
TSK6-18

chg_pri：
chg_pri：タスク優先度の変更
No.
区分
テ ス ト 項 目
テスト手順参照
不正 ID 番号(tskid が不正あるいは使用できない) TSK7-2
1
E_ID
エラーコードTSK7-4
パラメータエラー(tskpri が不正)
2
E_PAR
オブジェクト状態エラー(対象タスクが休止状態) TSK7-6
3
E_OBJ
tskid で指定されるタスクの優先度を、tskpri で指定される値に変更すること。
TSK7-244
tskid に TSK_SELF が指定されると、自タスクを対象とすること。
5
TSK7-32
tskpri に TPRI_INI が指定されると、タスクの起動時優先度に変更すること。
TSK7-37
6−
対象タスクが実行できる状態である場合−
タスクの優先順位を、変更後の優先度にしたがって変化させること。
TSK7-227
サービスコール
変更後の優先度と同じ優先度を持つタスクの間では、対象タ
8
TSK7-32
処理
スクの優先順位を最低とすること。
−
対象タスクが何らかのタスク優先度順の待ち行列につながれている場合−
その待ち行列の中での順序を、変更後の優先度にしたがって
9
SEM5-45
変化させること。
変更後の優先度と同じ優先度を持つタスクの間では、対象タ
10
SEM5-42
スクを最後につなぐこと。
get_pri：get_pri：タスク優先度の参照
No.
区
分
テ ス ト 項 目
不正 ID 番号(tskid が不正あるいは使用できない)
1
E_ID
エラーコードオブジェクト状態エラー(対象タスクが休止状態)
2
E_OBJ
サービスコール tskid で指定されるタスクの優先度を参照し、tskpri に返すこと。
3
処理
tskid に TSK_SELF が指定されると、自タスクを対象とすること。
4

2-15

テスト手順参照
TSK7-8
TSK7-10
TSK7-13
TSK7-16

4.2 タスク付属同期機能
No.
区
分
1
TMAX_WUPCNT
定数
2
TMAX_SUSCNT
slp_tsk：
slp_tsk：起床待ち
No.
区分
エラーコード1−
2
サービスコール−
処理
3
4

テ ス ト 項 目
タスクの起床要求キューイング数の最大値
タスクの強制待ち要求ネスト数の最大値

１以上
１以上

テスト手順参照
HED-73HED-74

テ ス ト 項 目
待ち状態の強制解除(待ち状態の間に rel_wai を受付)
E_RLWAI
自タスクに対する起床要求がキューイングされていない場合
自タスクを起床待ち状態に移行させること。
自タスクに対する起床要求がキューイングされている場合
起床要求キューイング数から１を減じること。
自タスクを待ち状態に移行させずに、そのまま実行を継続すること。

テスト手順参照
SYN1-17−
SYN1-25−
SYN1-23
SYN1-8tslp_tsk：
tslp_tsk：起床待ち(タイムアウトあり)
No.
区
分
1
E_PAR
2
E_RLWAI
エラーコード3
E_TMOUT

テ ス ト 項 目
テスト手順参照
SYN2-2
パラメータエラー(tmout が不正)待ち状態の強制解除(待ち状態の間に rel_wai を受付) SYN2-13
ポーリング失敗(自タスクに対する起床要求がキューイングされてSYN2-4,17
いない場合で、TMO_POL を指定した場合)またはタイムアウト
自タスクに対する起床要求がキューイングされていない場合−
で、TMO_POL 以外を指定した場合
自タスクを起床待ち状態に移行させること。
SYN2-23
自タスクに対する起床要求がキューイングされている場合−
起床要求キューイング数から１を減じること。
SYN2-10
自タスクを待ち状態に移行させずに、そのまま実行を継続すること。
SYN2-8tmout の指定−
正の値のタイムアウト時間が指定できること。
SYN2-17
SYN2-8
TMO_POL が指定できること。
TMO_FEVR が指定できること。
SYN2-23−

4−
5
サービスコール
処
理
6
−
7
8
9
(注)
No.1 E_PAR エラーを検出できる tmout がシステムに存在しない場合は、テストを省略することができる。
wup_tsk：
wup_tsk：タスクの起床
No.
区
分
1
2
エラーコード
3
4
5
67

サービスコール
処理

テスト手順参照
テ ス ト 項 目
不正 ID 番号(tskid が不正あるいは使用できない) SYN1-2
E_ID
オブジェクト状態エラー(対象タスクが休止状態) SYN1-4
E_OBJ
キューイングオーバーフロー(起床要求キューイ
E_QOVRSYN1-14ング数のオーバーフロー)
tskid で指定されるタスクを、起床待ち状態から待ち解除すること。 SYN1-25
待ち解除されたタスクに対しては、待ち状態に入ったサービス
SYN1-25
コールの返値として E_OK を返すこと。
対象タスクが起床待ち状態でない場合には、タスクの起床要求
SYN1-21
キューイング数に１を加えること。
SYN1-8tskid に TSK_SELF が指定されると、自タスクを対象とすること。

2-16

iwup_tsk：
iwup_tsk：タスクの起床
No.
区
分
1
2
エラーコード
3

4
5
6
7
(注)
No.2

サービスコール処理

テ ス ト 項 目
テスト手順参照
不正 ID 番号(tskid が不正あるいは使用できない) SYN3-6
E_ID
オブジェクト状態エラー(対象タスクが休止状態)
サービスコールを遅延実行する場合で、E_OBJ
E_OBJ
SYN3-8
エラーを返すことを実装定義で省略できる。省略する場合は E_OK を返すこと。(注)キューイングオーバーフロー(起床要求キューイ
ング数のオーバーフロー)サ ー ビ ス コ ー ル を 遅 延 実 行 す る 場 合 で 、 SYN3-14
E_QOVR
E_QOVR エラーを返すことを実装定義で省略できる。省略する場合は E_OK を返すこと。(注)tskid で指定されるタスクを、起床待ち状態から待ち解除すること。 SYN3-16
待ち解除されたタスクに対しては、待ち状態に入ったサービス
SYN3-16
コールの返値として E_OK を返すこと。
対象タスクが起床待ち状態でない場合には、タスクの起床要求
SYN3-19
キューイング数に１を加えること。
tskid に TSK_SELF が指定されると、E_ID エラーを返すこと。
SYN3-4

サービスコールを遅延実行する場合で、E_OBJ エラーを省略することが製品マニュアルに記載されていれば、E_OK を返すことができる。
No.3 サービスコールを遅延実行する場合で、E_QOVR エラーを省略することが製品マニュアルに記載されていれば、E_OK を返すことができる。

can_wup：
can_wup：タスク起床要求のキャンセル
No.
テスト手順参照
区分
テ ス ト 項 目
不正 ID 番号(tskid が不正あるいは使用できない) SYN4-2
1
E_ID
エラーコードオブジェクト状態エラー(対象タスクが休止状態) SYN4-4
2
E_OBJ
SYN4-16
タスクの起床要求キューイング数を０にクリアすること。
3
サービスコール
クリアする前の起床要求キューイング数を wupcnt に返すこと。 SYN4-14
4処理
tskid に TSK_SELF が指定されると、自タスクを対象タスクとすること。
5
SYN4-8rel_wai：
rel_wai：待ち状態の強制解除
No.
区分
テ ス ト 項 目
テスト手順参照
不正 ID 番号(tskid が不正あるいは使用できない) SYN5-2
1
E_ID
エラーコードオブジェクト状態エラー(対象タスクが待ち状態でない) SYN5-4
2
E_OBJ
対象タスクが待ち状態の時は実行可能状態に移行させること。
3
SYN5-7
サービスコール 対象タスクが二重待ち状態の時は強制待ち状態に移行させること。
4
SYN5-15
処理
このサービスコールにより待ち解除されたタスクに対しては、待ち状
5SYN5-7態に入ったサービスコールの返値として E_RLWAI を返すこと。

2-17

irel_wai：
irel_wai：待ち状態の強制解除
No.
区
分
1
E_ID
2
3
4
5
(注)
No.2

エラーコードサービスコール処理

テ ス ト 項 目
テスト手順参照
不正 ID 番号(tskid が不正あるいは使用できない) SYN6-7
オブジェクト状態エラー(対象タスクが待ち状態でない)
サービスコールを遅延実行する場合で、E_OBJ
E_OBJ
SYN6-9
エラーを返すことを実装定義で省略できる。省略する場合は、E_OK を返すこと。(注)対象タスクが待ち状態の時は実行可能状態に移行させること。
SYN6-15
対象タスクが二重待ち状態の時は強制待ち状態に移行させること。
SYN6-17
このサービスコールにより待ち解除されたタスクに対しては、待ち状
SYN6-15
態に入ったサービスコールの返値として E_RLWAI を返すこと。

サービスコールを遅延実行する場合で、E_OBJ エラーを省略することが製品マニュアルに記載されていれば、E_OK を返すことができる。

sus_tsk：
sus_tsk：強制待ち状態への移行
No.
区
分
1
E_ID
2
3

エラーコード

4
5
6
78

サービスコール
処理

テスト手順参照
テ ス ト 項 目
不正 ID 番号(tskid が不正あるいは使用できない)
SYN7-3
コンテキストエラー(ディスパッチ禁止状態で対E_CTX
SYN7-7
象タスクに自タスクを指定)
オブジェクト状態エラー(対象タスクが休止状態) SYN7-11
E_OBJ
キューイングオーバーフロー(強制待ち要求ネス
E_QOVRSYN7-29
ト数のオーバーフロー)
対象タスクが実行できる状態の時は強制待ち状態に移行させること。 SYN7-24
SYN7-31
対象タスクが待ち状態の時は二重待ち状態に移行させること。
SYN7-29
対象タスクの強制待ち要求ネスト数に１を加えること。
tskid に TSK_SELF が指定されると、自タスクを対象タスクとすること。
SYN7-37

rsm_tsk：
rsm_tsk：強制待ち状態からの再開
No.
区
分
1
E_ID
エラーコード
2
E_OBJ
3
−
4
5

サービスコール処理

テ ス ト 項 目
テスト手順参照
不正 ID 番号(tskid が不正あるいは使用できない) SYN7-13
オブジェクト状態エラー(対象タスクが強制待ち
SYN7-15
状態でない)
対象タスクの強制待ち要求ネスト数から１を減じること。
SYN7-33
減じた後の強制待ち要求ネスト数が０の場合−
対象タスクが強制待ち状態の時は実行可能状態に移行させること。 SYN7-24
対象タスクが二重待ち状態の時は待ち状態に移行させること。
SYN7-25,31

frsm_tsk：
frsm_tsk：強制待ち状態からの強制再開
No.
区
分
1
E_ID
エラーコード
2
E_OBJ
3
4
5

サービスコール処理

テ ス ト 項 目
テスト手順参照
不正 ID 番号(tskid が不正あるいは使用できない) SYN8-2
オブジェクト状態エラー(対象タスクが強制待ち
SYN8-4状態でない)
対象タスクの強制待ち要求ネスト数を０とすること。
SYN8-7
対象タスクが強制待ち状態の時は実行可能状態に移行させること。
SYN8-7
対象タスクが二重待ち状態の時は待ち状態に移行させること。
SYN8-13,15

2-18

dly_tsk：
dly_tsk：自タスクの遅延
No.
区分
テ ス ト 項 目
テスト手順参照
SYN9-2
パラメータエラー(dlytim が不正)
1
E_PAR
エラーコード待ち状態の強制解除(待ち状態の間に rel_wai を受付) SYN9-9
2
E_RLWAI
サービスコールが呼び出された時刻から dlytim で指定された相対時間後に待ち解除されるよう設定し、自タスクを時間経過待 SYN9-93
サービスコール
ちに移行させること。
処理
指定された相対時間後に待ち解除された場合、このサービスコ
4
SYN9-4ールは正常終了し、E_OK を返すこと。
(注)
No.1 E_PAR エラーを検出できる dlytim がシステムに存在しない場合は、テストを省略することができる。
4.3 タスク例外処理機能
No.
テスト手順参照
区分
テ ス ト 項 目−
起動するタスク例外処理ルーチン−
起動時の保留例外要因(texptn)とタスクの拡張情報(exinf)を1
TEX2-12,13
パラメータ
パラメータとして渡すこと。
タスクをタスク例外処理禁止状態に移行させ、保留例外要因2
TEX2-22を０クリアすること。
タスク例外処理許可状態であり、保留例外要因が０でなく、タスクが実
3
TEX2-33
行状態であり、非タスクコンテキストが実行されていない場合。
起 動
タスク例外処理許可状態であり、保留例外要因が０でなく、タスクが実
4
TEX2-33
行状態であり、CPU 例外ハンドラが実行されていない場合。
−
タスク例外処理ルーチンからリターン−
タスク例外処理
タスク例外処理ルーチンを起動する前に実行していた処理をルーチンからの
5
TEX2-38
継続すること。
リターン
タスクをタスク例外処理許可状態に移行させること。
6
TEX2-40
タスク例外処理ルーチンからリターンし、保留例外要因が０で再起動
7
TEX2-35ない場合には、再びタスク例外処理ルーチンを起動すること。
ディスパッチ禁止状態であっても以下の条件では、タスク例外−−
処理ルーチンを起動できること。
タスク例外処理許可状態であり、保留例外要因が０でなく、ディスパッチタスクが実行状態であり、非タスクコンテキストが実行され TEX2-12
8
禁止状態ていない場合。
タスク例外処理許可状態であり、保留例外要因が０でなく、タスクが実行状態であり、CPU 例外ハンドラが実行されて TEX2-12
9いない場合。
実行するコンテ タスク例外処理ルーチンは、タスクと同じコンテキストで実行
10
TEX2-17
キストと状態すること。
タ ス ク 例 外 要 因 の ビ ッ ト 数 16 ビッ
11
TBIT_TEXPTN
HED-75(TEXPTN 型のビット数)
ト以上
定数
タスク例外要因のビットパターン
16 ビッ
12
TEXPTNHED-76(符号無し整数)
ト以上

2-19

DEF_TEX：DEF_TEX：タスク例外処理ルーチンの定義（静的 API）
No.
区
分
テ ス ト 項 目
不正 ID 番号(tskid が不正あるいは使用できない)
1
E_ID
エラーコード予約属性(texatr が不正あるいは使用できない)
2
E_RSATR
パラメータエラー(texrtn が不正)
3
E_PAR
静的 API
tskid で指定されるタスクに、定義情報に基づいてタスク例外処
4処
理
理ルーチンを定義できること。

テスト手順参照
TEX1-S2
TEX1-S5
TEX1-S7
TEX2-12

ras_tex：ras_tex：タスク例外処理の要求
No.
区
分
1
E_ID
2
E_PAR
エラーコード3
E_OBJ
45

サービスコール処理

テ ス ト 項 目
テスト手順参照
不正 ID 番号(tskid が不正あるいは使用できない) TEX2-2
TEX2-4
パラメータエラー(rasptn が不正)オブジェクト状態エラー(対象タスクが休止状
態、対象タスクにタスク例外処理ルーチンが定義 TEX2-6,44
されていない)対象タスクの保留例外要因を、サービスコール呼出し前の保留
TEX2-35
例外要因と rasptn の値のビット毎の論理和に更新すること。
tskid に TSK_SELF が指定されると、自タスクを対象タスクとすること。
TEX2-12

iras_tex：
ras_tex：タスク例外処理の要求
No.
区
分
1
E_ID
2
E_PAR
エラーコード3
E_OBJ
45

サービスコール処理

テ ス ト 項 目
テスト手順参照
不正 ID 番号(tskid が不正あるいは使用できない) TEX3-8
TEX3-10
パラメータエラー(rasptn が不正)オブジェクト状態エラー(対象タスクが休止状
TEX3態、対象タスクにタスク例外処理ルーチンが定義12,20
されていない)対象タスクの保留例外要因を、サービスコール呼出し前の保留
TEX3-24
例外要因と rasptn の値のビット毎の論理和に更新すること。
tskid に TSK_SELF が指定されると、E_ID エラーを返すこと。
TEX3-14

dis_tex：dis_tex：タスク例外処理の禁止
No.
区分

テ ス ト 項 目
テスト手順参照
オブジェクト状態エラー(自タスクにタスク例外
TEX4-16
処理ルーチンが定義されていない)

1

エラーコードE_OBJ

2

サービスコール
処理

自タスクを、タスク例外処理禁止状態に移行させること。

ena_tex：ena_tex：タスク例外処理の許可
No.
区
分

TEX4-6

テ ス ト 項 目
テスト手順参照
オブジェクト状態エラー(自タスクにタスク例外
TEX4-18
処理ルーチンが定義されていない)

1

エラーコードE_OBJ

2

サービスコール
処理

自タスクを、タスク例外処理許可状態に移行させること。

2-20

TEX4-2

sns_tex：
sns_tex：タスク例外処理禁止状態の参照
No.
区
分
テ ス ト 項 目
テスト手順参照
実行状態のタスクが、タスク例外処理禁止状態の場合には
1
TEX2-19
TRUE を返すこと。
サービスコール 実行状態のタスクが、タスク例外処理許可状態の場合に FALSE
2
TEX2-40
処
理を返すこと。
非タスクコンテキストから呼び出された場合で、実行状態のタ
3
TEX4-22
スクがない時には、TRUE を返すこと。
4.4 同期・通信機能
4.4.1 セマフォ
No.
区
分
最大資源数
1

テ ス ト
セマフォの最大資源数の最大値

項

目
65535 以上

テスト手順参照
HED-77

CRE_SEM：
CRE_SEM：セマフォの生成（静的 API）
No.
区
分

テ ス ト 項 目
テスト手順参照
不正 ID 番号(semid が不正あるいは使用できな SEM1-S2
E_ID
い)SEM1-S4
予約属性(sematr が不正あるいは使用できない)
E_RSATR
SEM1-S6
パラメータエラー(isemcnt>maxsem)
E_PAR
SEM1-S8
パラメータエラー(maxsem
が最大資源数を越えた)
E_PAR
オブジェクト状態エラー(対象セマフォが登録済) SEM1-S11
E_OBJ
sematr には以下の指定ができ、オブジェクトが生成できること。
−
SEM2-29
TA_TFIFO
SEM5-11
TA_TPRI
isemcnt で示す初期値が正しいこと。
SEM2-14
SEM2-8maxsem で示す最大資源数が正しいこと。

1

2
エラーコード
3
4
5−
6
静的 API
7
処
理
8
9
(注)
No.4 E_PAR エラーを検出できる maxsem がシステムに存在しない場合は、テストを省略することができる。
sig_sem：
sig_sem：セマフォ資源の返却
No.
区
分
1
2
−
3
4
5
−
6

エラーコードサービスコール
処理

テスト手順参照
テ ス ト 項 目
不正 ID 番号(semid が不正あるいは使用できな SEM2-2
E_ID
い)キューイングオーバーフロー(最大資源数を越える返却) SEM2-8
E_QOVR
資源の獲得を待っているタスクがある場合−
待ち行列の先頭のタスクを待ち解除すること。
SEM2-29
対象セマフォの資源数は変化してはならないこと。
SEM2-31
待ち状態に入ったサービスコールの返値として E_OK を返すこと。 SEM2-29
資源の獲得を待っているタスクがない場合−
対象セマフォの資源数に１を加えること。
SEM2-16

2-21

isig_sem：
sig_sem：セマフォ資源の返却
No.
区
分
1
E_ID
2
−
3
4
5
−
6
(注)
No.2

エラーコードサービスコール処理

テ ス ト 項 目
不正 ID 番号(semid が不正あるいは使用できない)
キューイングオーバーフロー(最大資源数を越える返却)
サービスコールを遅延実行する場合で、E=QOVR エラ
E_QOVR
ーを返すことこを実装定義で省略できる。省略する場
合は、E_OK を返すこと。(注)
資源の獲得を待っているタスクがある場合
待ち行列の先頭のタスクを待ち解除すること。
対象セマフォの資源数は変化してはならないこと。
待ち状態に入ったサービスコールの返値として E_OK を返すこと。
資源の獲得を待っているタスクがない場合
対象セマフォの資源数に１を加えること。

テスト手順参照
SEM3-14
SEM3-18−
SEM3-22
SEM3-25
SEM3-22−
SEM3-35

サービスコールを遅延実行する場合で、E_OBJ エラーを省略することが製品マニュアルに記載されていれば、E_OK を返すことができる。

wai_sem：
wai_sem：セマフォ資源の獲得
No.
区分
テ ス ト 項 目
不正 ID 番号(semid が不正あるいは使用できない)
1
E_ID
エラーコード待ち状態の強制解除(待ち状態の間に rel_wai を受付)
2
E_RLWAI−
対象セマフォの資源数が１以上の場合
セマフォの資源数から１を減じること。
3待ち状態とせずにサービスコールの処理を終了すること。
4−
対象セマフォの資源数が０の場合
サービスコール
対象セマフォの資源数は０のまま変化してはならないこと。
5処理−
セマフォ属性が TA_TFIFO
自タスクを待ち行列の末尾につなぐこと。
6−
セマフォ属性が TA_TPRI
優先度順で待ち行列につなぐこと。
7
同じ優先度のタスクの中では最後につなぐこと。
8

テスト手順参照
SEM2-4
SEM2-37−
SEM2-10
SEM2-10−
SEM2-33−
SEM2-33−
SEM3-22
SEM3-29

pol_sem：
pol_sem：セマフォ資源の獲得(ポーリング)
No.
区分
テ ス ト 項 目
不正 ID 番号(semid が不正あるいは使用できない)
エラーコード1
E_ID
ポーリング失敗
2
E_TMOUT−
対象セマフォの資源数が１以上の場合
サービスコール
セマフォの資源数から１を減じること。
3
処
理
待ち状態とせずにサービスコールの処理を終了すること。
4

テスト手順参照
SEM2-6
SEM2-14−
SEM2-12
SEM2-122-22

twai_sem：
wai_sem：セマフォ資源の獲得(タイムアウトあり)No.
区分
テ ス ト 項 目
テスト手順参照
SEM4-2
不正 ID 番号(semid が不正あるいは使用できない)
1
E_ID
SEM4-4
パラメータエラー(tmout が不正)
2
E_PAR
エラーコード待ち状態の強制解除(待ち状態の間に rel_wai を受付) SEM4-29
3
E_RLWAI
SEM4-25
タイムアウト4
E_TMOUT−
対象セマフォの資源数が１以上の場合−
SEM4-6
セマフォの資源数から１を減じること。
5
SEM4-6待ち状態とせずにサービスコールの処理を終了すること。
6−
対象セマフォの資源数が０の場合−
対象セマフォの資源数は０のまま変化してはならないこと。 SEM4-21
7−
セマフォ属性が TA_TFIFO の場合−
サービスコール
自タスクを待ち行列の末尾につなぐこと。
8
SEM4-29
処理−
セマフォ属性が TA_TPRI の場合−
優先度順で待ち行列につなぐこと。
9
SEM5-11
同じ優先度のタスクの中では最後につなぐこと。
10
SEM5-19−
tmout の指定−
SEM4-21
正の値のタイムアウト時間が指定できること。
11
SEM4-8
TMO_POL が指定できること。
12
TMO_FEVR が指定できること。
13
SEM4-29(注)
No.2 E_PAR エラーを検出できる tmout がシステムに存在しない場合は、テストを省略することができる。
4.4.2 イベントフラグ
No.
区
分
1
2

定

数

FLGPTNTBIT_FLGPTN

テ ス ト 項 目
イベントフラグのビットパターン
16 ビット以上(符号無し整数)
イベントフラグのビット数
16 ビット以上

CRE_FLG：
CRE_FLG：イベントフラグの生成（静的 API）
No.
区
分
テ ス ト 項 目
不正 ID 番号(flgid が不正あるいは使用できない)
1
E_ID
予約属性(flgatr が不正あるいは使用できない)
2
E_RSATR
エラーコードパラメータエラー(iflgptn が不正)
3
E_PAR
オブジェクト状態エラー(対象イベントフラグが登録済)
4
E_OBJ
−
flgatr には以下の指定ができ、オブジェクトが生成できること。
5
TA_TFIFO
6
TA_TPRI
TA_TFIFO｜TA_WSGL
7
TA_TPRI｜TA_WSGL
8
静的 API
TA_TFIFO｜TA_CLR
9処理
TA_TPRI｜TA_CLR
10
TA_TFIFO｜TA_WSGL｜TA_CLR
11
TA_TPRI｜TA_WSGL｜TA_CLR
12iflgptn で示すビットパターンの初期値が正しいこと。
13
(注)
No.3

テスト手順参照
HED-78
HED-79

テスト手順参照
FLG1-S2
FLG1-S4
FLG1-S6
FLG1-S9−
FLG2-26
FLG2-28
FLG2-26
FLG2-28
FLG3-20
FLG2-72
FLG3-20
FLG2-72
FLG2-73

E_PAR エラーを検出できる iflgptn がシステムに存在しない場合は、テストを省略すること
ができる。

2-23

set_flg：
set_flg：イベントフラグのセット
No.
区分
テ ス ト 項 目
テスト手順参照
FLG2-2
不正 ID 番号(flgid が不正あるいは使用できない)
1
E_ID
エラーコードFLG2-4
パラメータエラー(setptn が不正)
2
E_PAR
対象イベントフラグのビットパターンを、サービスコール呼出し前のビットパターンと setptn の値のビット毎の論理和に更新 FLG2-49
3すること。
対象イベントフラグのビットパターンが更新された結果、そのイベントフラグで待っているタスクの待ち解除条件を満たした FLG2-644
場合には、該当するタスクを待ち解除すること。
サービスコール−
待ち解除されたタスクに対しての処理−
処
理
待ち状態に入ったサービスコールの返値として E_OK を返すこと。 FLG2-64,84
5
待ち解除時のビットパターンとして、この時の(待ち解除条
6
FLG2-65,85
件を満たした)ビットパターンを返すこと。
TA_CLR が指定されている場合には、イベントフラグのビットパターンのすべてのビットをクリアし、サービスコール FLG2-87
7の処理を終了すること。
（注）
No.2 E_PAR エラーを検出できる setptn がシステムに存在しない場合は、テストを省略することができる。
iset_flg：
set_flg：イベントフラグのセット
No.
テスト手順参照
区分
テ ス ト 項 目
不正 ID 番号(flgid が不正あるいは使用できない) FLG3-5
1
E_ID
エラーコードFLG3-7
パラメータエラー(setptn が不正)
2
E_PAR
対象イベントフラグのビットパターンを、サービスコール呼出し前の3
FLG3-18
ビットパターンと setptn の値のビット毎の論理和に更新すること。
対象イベントフラグのビットパターンが更新された結果、そのイベントフラグで待っているタスクの待ち解除条件を満たした FLG3-174
場合には、該当するタスクを待ち解除すること。
−−
サービスコール 待ち解除されたタスクに対しての処理
処
理
待ち状態に入ったサービスコールの返値として E_OK を返すこと。 FLG3-17
5
待ち解除時のビットパターンとして、この時の(待ち解除条
6
FLG3-18
件を満たした)ビットパターンを返すこと。
TA_CLR が指定されている場合には、イベントフラグのビットパターンのすべてのビットをクリアし、サービスコール FLG3-23
7の処理を終了すること。
（注）
No.2 E_PAR エラーを検出できる setptn がシステムに存在しない場合は、テストを省略することができる。
clr_flg：
clr_flg：イベントフラグのクリア
No.
テスト手順参照
区分
テ ス ト 項 目
不正 ID 番号(flgid が不正あるいは使用できない) FLG2-6
1
E_ID
エラーコードFLG2-8
パラメータエラー(clrptn が不正)
2
E_PAR
サービスコール 対象イベントフラグのビットパターンを、サービスコール呼出し前の3
FLG2-37
処理
ビットパターンと clrptn の値のビット毎の論理積に更新すること。
（注）
No.2 E_PAR エラーを検出できる clrptn がシステムに存在しない場合は、テストを省略すること
ができる。

2-24

wai_flg：
wai_flg：イベントフラグ待ち
No.
区
分
1
E_ID
2
E_PAR
3
E_PAR
エラーコード
4
E_PAR
5
6
−
7
8
−
9
10
11
−
12
13
(注)
No.2

サービスコール処理

テ ス ト 項 目
不正 ID 番号(flgid が不正あるいは使用できない)パラメータエラー(waiptn が不正)
パラメータエラー(wfmode が不正)
パラメータエラー(p_flgptn が不正)サービスコール不正使用(TA_WSGL 属性が指定
E_ILUSEされたイベントフラグで待ちタスクあり)
待ち状態の強制解除(待ち状態の間に rel_wai を受付)
E_RLWAI
wfmode には、以下が指定できること。
TWF_ANDWTWF_ORW
対象イベントフラグのビットパターンが waiptn と wfmode で指定される待ち条件を満たしている場合
自タスクを待ち状態とせずにサービスコールの処理を終了すること。
flgptn には、この時の(待ち解除条件を満たした)ビットパターンを返すこと。
TA_CLR が指定されている場合には、イベントフラグのビットパターンのすべてのビットをクリアすること。
対象イベントフラグのビットパターンが waiptn と wfmode で指定される解除条件を満たしていない場合
自タスクを待ち行列につなぎ、イベントフラグ待ち状態に移行させること。
waiptn に０を指定した場合には、E_PAR エラーを返すこと。

テスト手順参照
FLG2-10
FLG2-12
FLG2-14
FLG2-16
FLG2-56
FLG2-60−
FLG2-56,69
FLG2-64,72−
FLG2-30,69
FLG2-31,70
FLG2-94−
FLG2-60
FLG2-67

E_PAR エラーを検出できる waiptn がシステムに存在しない場合は、テストを省略することができる。
No.4 E_PAR エラーを検出できる p_flgptn がシステムに存在しない場合は、テストを省略することができる。

pol_flg：
pol_flg：イベントフラグ待ち(ポーリング)
No.
テスト手順参照
区分
テ ス ト 項 目
不正 ID 番号(flgid が不正あるいは使用できない) FLG2-18
1
E_ID
FLG2-20
パラメータエラー(waiptn が不正)
2
E_PAR
FLG2-22
パラメータエラー(wfmode が不正)
3
E_PAR
エラーコードFLG2-24
パラメータエラー(p_flgptn が不正)
4
E_PAR
サービスコール不正使用(TA_WSGL 属性が指定
5
E_ILUSE
FLG2-58
されたイベントフラグで待ちタスクあり)
ポーリング失敗
6
E_TMOUTFLG2-33−
wfmode には、以下が指定できること。
−
7
TWF_ANDW
FLG2-37,77
8
TWF_ORW
FLG2-43,84
対象イベントフラグのビットパターンが waiptn と wfmode で指−−サービスコール
定される待ち条件を満たしている場合
処理
flgptn には、この時の(待ち解除条件を満たした)ビットパターンを返すこと。
9
FLG2-44
属性に TA_CLR が指定されている場合には、イベントフラ
10
FLG2-80グのビットパターンのすべてのビットをクリアすること。
waiptn に０を指定した場合には、E_PAR エラーを返すこと。
11
FLG2-39（注）
No.2 E_PAR エラーを検出できる waiptn がシステムに存在しない場合は、テストを省略することができる。
No.4 E_PAR エラーを検出できる p_flgptn がシステムに存在しない場合は、テストを省略することができる。

2-25

twai_flg：
twai_flg：イベントフラグ待ち(タイムアウトあり)No.
区分
テ ス ト 項 目
テスト手順参照
不正 ID 番号(flgid が不正あるいは使用できない) FLG4-2
1
E_ID
パラメータエラー(waiptn が不正)
2
E_PAR
FLG4-4
パラメータエラー(wfmode が不正)
3
E_PAR
FLG4-6
パラメータエラー(p_flgptn が不正)
4
E_PAR
FLG4-8
エラーコードパラメータエラー(tmout が不正)
5
E_PAR
FLG4-10
サービスコール不正使用(TA_WSGL 属性が指定
6
E_ILUSE
FLG4-26
されたイベントフラグで待ちタスクあり)
待ち状態の強制解除(待ち状態の間に rel_wai を受付) FLG4-40
7
E_RLWAI
タイムアウト8
E_TMOUTFLG4-22−
wfmode には、以下が指定できること。
−
9
TWF_ANDW
FLG4-28,56
10
TWF_ORW
FLG4-16,44
対象イベントフラグのビットパターンが waiptn と wfmode で指−−定される待ち条件を満たしている場合
自タスクを待ち状態とせずにサービスコールの処理を終了すること。
11
FLG4-16
flgptn には、この時の(待ち解除条件を満たした)ビットパタ
12
FLG4-17ーンを返すこと。
属性に TA_CLR が指定されている場合には、イベントフラ
13
FLG4-54
サービスコール
グのビットパターンのすべてのビットをクリアすること。
処理
対象イベントフラグのビットパターンが waiptn と wfmode で指−−定される解除条件を満たしていない場合
自タスクを待ち行列につなぎ、イベントフラグ待ち状態に移14
FLG4-28
行させること。
FLG4-12
waiptn に０を指定した場合には、E_PAR エラーを返すこと。
15−
tmout の指定−
FLG4-22
正の値のタイムアウト時間が指定できること。
16
TMO_POL が指定できること。
17
FLG4-16
TMO_FEVR が指定できること。
18
FLG4-40（注）No.2 E_PAR エラーを検出できる waiptn がシステムに存在しない場合は、テストを省略することができる。
No.4 E_PAR エラーを検出できる p_flgptn がシステムに存在しない場合は、テストを省略することができる。
No.5 E_PAR エラーを検出できる tmout がシステムに存在しない場合は、テストを省略すること
ができる。

2-26

4.4.3 データキュー
CRE_DTQ：
CRE_DTQ：データキューの生成（静的 API）
No.
テスト手順参照
区分
テ ス ト 項 目
不正 ID 番号(dtqid が不正あるいは使用できない) DTQ1-S2
1
E_ID
DTQ1-S4
予約属性(dtqatr が不正あるいは使用できない)
2
E_RSATR
エラーコードDTQ1-S6
パラメータエラー(dtqcnt が不正)
3
E_PAR
DTQ1-S9
オブジェクト状態エラー(対象データキューが登録済)
4
E_OBJ
−
dtqatr には以下の指定ができ、オブジェクトが生成できること。
−
静的 API5
TA_TFIFO
DTQ2-16
処理
6
TA_TPRI
DTQ2-56
データキュー領域に格納できるデータの個数が dtqcnt で指定できること。
7
DTQ2-4(注)
No.3 E_PAR エラーを検出できる dtqcnt がシステムに存在しない場合は、テストを省略することができる。
snd_dtq：
snd_dtq：データキューへの送信
No.
区分
テ ス ト 項 目
不正 ID 番号(dtqid が不正あるいは使用できない)
1
E_ID
エラーコード待ち状態の強制解除(待ち状態の間に rel_wai を受付)
2
E_RLWAI
dtqid で指定されるデータキューに、data で指定されるデータ3を送信できること。
送信されるデータは、送信側から受信側にコピーされること。
4−
対象データキューで受信を待っているタスクがある場合
受信待ち行列の先頭のタスクに送信するデータを渡し、その5
タスクの待ちを解除すること。
待ち解除されたタスクに対しては、待ち状態に入ったサービ
6
スコールの返値として E_OK を返すこと。
データキューから受信したデータとして VP_INT data の値7を返すこと。
−
対象データキューで受信を待っているタスクがない場合送信するデータをデータキューの末尾に入れること。
8
サービスコール
データキュー領域に空きがない場合には、自タスクを送信待ち行
処
理
9
列につなぎ、データキューへの送信待ち状態に移行させること。
−
他のタスクがすでに送信待ち行列につながっている場合で−データキュー属性が TA_TFIFO の場合
自タスクを送信待ち行列の末尾につなぐこと。
10−
データキュー属性 TA_TPRI の場合
自タスクを優先度順で送信待ち行列につなぐこと。
11
同じ優先度のタスクの中では、自タスクを最後につなぐこ
12と。
−
データキューで送信されるデータ(１ワードのメッセージ)
整数値であること。
13
送信側と受信側で共有しているメモリ上に置かれたメッセー
14
ジの先頭番地であること。

2-27

テスト手順参照
DTQ2-2
DTQ2-52
DTQ2-8
DTQ2-8−
DTQ2-16
DTQ2-16
DTQ2-17−
DTQ2-81
DTQ2-42−−
DTQ2-47−
DTQ2-56
DTQ2-72−
DTQ2-8
DTQ2-22

psnd_dtq：
psnd_dtq：データキューへの送信(ポーリング)
No.
区分
テ ス ト 項 目
テスト手順参照
DTQ3-2
不正 ID 番号(dtqid が不正あるいは使用できない)
1
E_ID
ポーリング失敗(対象データキューで受信を待っ
エラーコードているタスクがなく、データキュー領域に空きが DTQ3-4
2
E_TMOUT
ない場合には、E_TMOUT エラーを返すこと。)
dtqid で指定されるデータキューに、data で指定されるデータ
3
DTQ3-8を送信できること。
送信されるデータは、送信側から受信側にコピーされること。
4
DTQ3-8−
対象データキューで受信を待っているタスクがある場合−
受信待ち行列の先頭のタスクに送信するデータを渡し、その5
DTQ3-7
タスクの待ちを解除すること。
サービスコール
待ち解除されたタスクに対しては、待ち状態に入ったサービ
処理
6
DTQ3-7
スコールの返値として E_OK を返すこと。
データキューから受信したデータとして data の値を返すこと。
DTQ3-8
7−
データキューで送信されるデータ(１ワードのメッセージ)−
整数値であること。
8
DTQ3-8
送信側と受信側で共有しているメモリ上に置かれたメッセー
9
DTQ3-13
ジの先頭番地であること。
ipsnd_dtq：
psnd_dtq：データキューへの送信(ポーリング)
No.
区分
テ ス ト 項 目
テスト手順参照
不正 ID 番号(dtqid が不正あるいは使用できない) DTQ4-4
1
E_ID
ポーリング失敗(サービスコールを遅延実行する場合
エラーコードで、E_TMOUT エラーを返すことを実装定義で省略で DTQ4-6
2
E_TMOUT
きる。省略する場合は E_OK を返すこと。)
dtqid で指定されるデータキューに、data で指定されるデータ
3
DTQ4-13を送信できること。
送信されるデータは、送信側から受信側にコピーされること。
4
DTQ4-13−
対象データキューで受信を待っているタスクがある場合−
受信待ち行列の先頭のタスクに送信するデータを渡し、その5
DTQ4-12
タスクの待ちを解除すること。
サービスコール
待ち解除されたタスクに対しては、待ち状態に入ったサービ
6
DTQ4-12
処理
スコールの返値として E_OK を返すこと。
データキューから受信したデータとして VP_INT data の値
7
DTQ4-12を返すこと。
−
データキューで送信されるデータ(１ワードのメッセージ)−
整数値であること。
8
DTQ4-13
送信側と受信側で共有しているメモリ上に置かれたメッセー
9
DTQ4-16
ジの先頭番地であること。
(注)
No.2 サービスコールを遅延実行する場合で、E_TMOUT エラーを省略することが製品マニュアルに記載されていれば、E_OK を返すことができる。

2-28

tsnd_dtq：
snd_dtq：データキューへの送信(タイムアウトあり)No.
区分
テ ス ト 項 目
テスト手順参照
DTQ5-2
不正 ID 番号(dtqid が不正あるいは使用できない)
1
E_ID
DTQ5-4
パラメータエラー(tmout が不正)
2
E_PAR
エラーコード待ち状態の強制解除(待ち状態の間に rel_wai を受付) DTQ5-49
3
E_RLWAI
タイムアウト4
E_TMOUT
DTQ5-45
dtqid で指定されるデータキューに、data で指定されるデータ
5
DTQ5-10を送信できること。
送信されるデータは、送信側から受信側にコピーされること。
6
DTQ5-10−
対象データキューで受信を待っているタスクがある場合−
受信待ち行列の先頭のタスクに送信するデータを渡し、その7
DTQ5-9
タスクの待ちを解除すること。
待ち解除されたタスクに対しては、待ち状態に入ったサービ
8
DTQ5-9スコールの返値として E_OK を返すこと。
データキューから受信したデータとして data の値を返すこと。
9
DTQ5-10−
対象データキューで受信を待っているタスクがない場合−送信するデータをデータキューの末尾に入れること。
10
DTQ5-22
データキュー領域に空きがない場合には、自タスクを送信待ち行
11
DTQ5-16
列につなぎ、データキューへの送信待ち状態に移行させること。
サービスコール−
他のタスクがすでに送信待ち行列につながっている場合で−処理−
データキュー属性が TA_TFIFO の場合−
自タスクを送信待ち行列の末尾につなぐこと。
12
DTQ5-45−
データキュー属性 TA_TPRI の場合−
自タスクを優先度順で送信待ち行列につなぐこと。
13
DTQ5-67
同じ優先度のタスクの中では、自タスクを最後につなぐこと。
14
DTQ5-83−
tmout の指定−
正の値のタイムアウト時間が指定できること。
15
DTQ5-40
TMO_POL が指定できること。
16
DTQ5-14
TMO_FEVR が指定できること。
17
DTQ5-49−
データキューで送信されるデータ(１ワードのメッセージ)−
整数値であること。
18
DTQ5-10
送信側と受信側で共有しているメモリ上に置かれたメッセー
19
DTQ5-19
ジの先頭番地であること。
(注)
No.2 E_PAR エラーを検出できる tmout がシステムに存在しない場合は、テストを省略すること
ができる。

2-29

fsnd_dtq：
fsnd_dtq：データキューへの強制送信
No.
区
分
1
E_ID
エラーコード2
E_ILUSE
−
3
4
5
−
6

サービスコール処理

7

テ ス ト 項 目
不正 ID 番号(dtqid が不正あるいは使用できない)
サービスコール不正使用(対象データキューのデータキュー領域の容量が０)
対象データキューで受信を待っているタスクがある場合
受信待ち行列の先頭のタスクに送信するデータを渡し、そのタスクの待ちを解除すること。
待ち解除されたタスクに対しては、待ち状態に入ったサービ
スコールの返値として E_OK を返すこと。
データキューから受信したデータとして data の値を返すこと。
受信を待っているタスクがない場合送信するデータをデータキューの末尾に入れること。
データキュー領域に空きがない場合には、データキューの先頭のデータを抹消し、データキュー領域に必要な領域を確保すること。

ifsnd_dtq：
fsnd_dtq：データキューへの強制送信
No.
区
分
1
E_ID
エラーコード2
E_ILUSE
−
3
4
5
−
6
7

サービスコール処理

テ ス ト 項 目
不正 ID 番号(dtqid が不正あるいは使用できない)
サービスコール不正使用(対象データキューのデータキュー領域の容量が０)
対象データキューで受信を待っているタスクがある場合
受信待ち行列の先頭のタスクに送信するデータを渡し、そのタスクの待ちを解除すること。
待ち解除されたタスクに対しては、待ち状態に入ったサービ
スコールの返値として E_OK を返すこと。
データキューから受信したデータとして VP_INT data の値を返すこと。
受信を待っているタスクがない場合送信するデータをデータキューの末尾に入れること。
データキュー領域に空きがない場合には、データキューの先頭のデータを抹消し、データキュー領域に必要な領域を確保
すること。

2-30

テスト手順参照
DTQ6-2
DTQ6-4−
DTQ6-14
DTQ6-14
DTQ6-15−
DTQ6-25
DTQ6-11

テスト手順参照
DTQ7-4
DTQ7-6−
DTQ7-18
DTQ7-18
DTQ7-19−
DTQ7-29
DTQ7-23

rcv_dtq：
rcv_dtq：データキューからの受信
No.
区分
テ ス ト 項 目
テスト手順参照
DTQ8-2
不正 ID 番号(dtqid が不正あるいは使用できない)
1
E_ID
エラーコードDTQ8-4
パラメータエラー(p_data が不正)
2
E_PAR
待ち状態の強制解除(待ち状態の間に rel_wai を受付) DTQ8-37
3
E_RLWAI−
対象データキューにデータが入っている場合−
DTQ8-9先頭のデータを取り出し、data に返すこと。
4−
データキューで送信を待っているタスクがある場合−
送信待ち行列の先頭のタスクが送信しようとしているデータを
5
DTQ8-14,20
データキューの末尾に入れ、そのタスクを待ち解除すること。
待ち解除されたタスクに対しては、待ち状態に入ったサービ
6
DTQ8-14スコールの返値として E_OK を返すこと。
−
データが入っていない場合−−
対象データキューで送信を待っているタスクがある場合−
サービスコール
送信待ち行列の先頭のタスクから、そのタスクが送信しようとして処 理
7
DTQ8-26
いるデータを受け取り、そのタスクの待ちを解除すること。
待ち解除されたタスクに対しては、待ち状態に入ったサ
8
DTQ8-26
ービスコールの返値として E_OK を返すこと。
data には、受け取ったデータ返すこと。
9
DTQ8-29−
送信を待っているタスクがない場合−
自タスクを受信待ち行列につなぎ、データキューからの10
DTQ8-32
受信待ち状態に移行させること。
他のタスクがすでに受信待ち行列につながっている場合
11
DTQ8-37には、自タスクを受信待ち行列の末尾につなぐこと。
（注）
No.2 E_PAR エラーを検出できる p_data がシステムに存在しない場合は、テストを省略することができる。
prcv_dtq：
prcv_dtq：データキューからの受信(ポーリング)
No.
テスト手順参照
区分
テ ス ト 項 目
不正 ID 番号(dtqid が不正あるいは使用できない) DTQ9-2
1
E_ID
エラーコードDTQ9-5
パラメータエラー(p_data が不正)
2
E_PAR
DTQ9-7
ポーリング失敗
3
E_TMOUT−
対象データキューにデータが入っている場合−
先頭のデータを取り出し、data に返すこと。
4
DTQ9-15−
データキューで送信を待っているタスクがある場合
サービスコール
送信待ち行列の先頭のタスクが送信しようとしているデータを DTQ9処 理
518,29
データキューの末尾に入れ、そのタスクを待ち解除すること。
この時、待ち解除されたタスクに対しては、待ち状態に入っ
6
DTQ9-18たサービスコールの返値として E_OK を返すこと。
（注）
No.2 E_PAR エラーを検出できる p_data がシステムに存在しない場合は、テストを省略すること
ができる。

2-31

trcv_dtq：
trcv_dtq：データキューからの受信(タイムアウトあり)No.
区分
テ ス ト 項 目
テスト手順参照
DTQ10-2
不正 ID 番号(dtqid が不正あるいは使用できない)
1
E_ID
DTQ10-5
パラメータエラー(p_data が不正)
2
E_PAR
エラーコードDTQ10-7
パラメータエラー(tmout が不正)
3
E_PAR
待ち状態の強制解除(待ち状態の間に rel_wai を受付) DTQ10-50
4E_RLWAI
タイムアウト5
E_TMOUT
DTQ10-46−
対象データキューにデータが入っている場合−
先頭のデータを取り出し、data に返すこと。
6
DTQ10-12−
データキューで送信を待っているタスクがある場合−
送信待ち行列の先頭のタスクが送信しようとしているデータを
7
DTQ10-19,25
データキューの末尾に入れ、そのタスクを待ち解除すること。
この時、待ち解除されたタスクに対しては、待ち状態に入っ
8
DTQ10-19
たサービスコールの返値として E_OK を返すこと。
−
データが入っていない場合−−
対象データキューで送信を待っているタスクがある場合−
送信待ち行列の先頭のタスクから、そのタスクが送信しようとして
9
DTQ10-31
いるデータを受け取り、そのタスクの待ちを解除すること。
サービスコール
待ち解除されたタスクに対しては、待ち状態に入ったサ
処 理
10
DTQ10-31
ービスコールの返値として E_OK を返すこと。
data には、受け取ったデータを返すこと。
11
DTQ10-34−
送信を待っているタスクがない場合−
自タスクを受信待ち行列につなぎ、データキューからの12
DTQ10-41
受信待ち状態に移行させること。
他のタスクがすでに受信待ち行列につながっている場合
13
DTQ10-50には、自タスクを受信待ち行列の末尾につなぐこと。
−
tmout の指定−
正の値のタイムアウト時間が指定できること。
14
DTQ10-41
TMO_POL が指定できること。
15
DTQ10-11
TMO_FEVR が指定できること。
16
DTQ10-50（注）
No.2 E_PAR エラーを検出できる p_data がシステムに存在しない場合は、テストを省略することができる。
No.3 E_PAR エラーを検出できる tmout がシステムに存在しない場合は、テストを省略することができる。
4.4.4 メールボックス
No.
区
分
1
データ型
2

T_MSG
T_MSG_PRI

テ ス ト 項 目
メールボックスのメッセージヘッダ
メールボックスの優先度付きメッセージヘッダ

2-32

テスト手順参照
HED-80HED-81

CRE_MBX：
CRE_MBX：メールボックスの生成（静的 API）
No.
区
分
テ ス ト 項 目
テスト手順参照
不正 ID 番号(mbxid が不正あるいは使用できな
1
E_ID
MBX1-S2
い)
予約属性(mbxatr が不正あるいは使用できない)
エラーコード
2
E_RSATR
MBX1-S4
パラメータエラー(maxmpri が不正)
3
E_PAR
MBX1-S6
オブジェクト状態エラー(対象メールボックスが登録済) MBX1-S9
4
E_OBJ
−
mbxatr には以下の指定ができ、オブジェクトが生成できること。
−
5
TA_TFIFO|TA_MFIFO
MBX2-19
6
TA_TFIFO|TA_MPRI
MBX3-37
TA_TPRI|TA_MFIFO
MBX4-11
静的 API8
TA_TPRI|TA_MPRI
MBX6-18
処理
maxmpri に０を指定することはできない。指定した場合には、
9
MBX1-S11
E_PAR エラーを返すこと。
maxmpri には、メールボックスに送信されるメッセージの優先10
MBX3-24
度の最大値が指定できること。
snd_mbx：
snd_mbx：メールボックスへの送信
No.
区
分
1
2

エラーコード

3
−
4
5
6
−
−
7
−
8
9

サービスコール処理

テ ス ト 項 目
テスト手順参照
不正 ID 番号(mbxid が不正あるいは使用できな MBX2-2
E_ID
い)パラメータエラー(pk_msg が不正)
E_PAR
MBX2-5
パラメータエラー(メッセージパケット中のメッ
E_PAR
MBX3-27
セージ優先度(msgpri)が不正)対象メールボックスで受信を待っているタスクがある場合−
受信待ち行列の先頭のタスクに pk_msg で指定されたメッセージ
MBX2-54
パケットの先頭番地を渡し、そのタスクを待ち解除すること。
待ち解除されたタスクに対しては、待ち状態に入ったサービ
MBX2-53
スコールの返値として E_OK を返すこと。
待ち解除されたタスクに対しては、メールボックスから受信した
MBX2-54
メッセージパケットの先頭番地として pk_msg の値を返すこと。
受信を待っているタスクがない場合−
メールボックス属性が TA_MFIFO−
pk_msg を先頭番地とするメッセージパケットをメッセ MBX236,39,42
ージキューの末尾に入れること。
メールボックス属性が TA_MPRI
メッセージパケットを優先度順でメッセージキューに入MBX3-15れること。
同じ優先度のメッセージパケットの中では、新たに送信
MBX3-9
されたメッセージパケットを最後に入れること。

2-33

rcv_mbx：メールボックスからの受信
rcv_mbx
No.
区分
テ ス ト 項 目
テスト手順参照
不正 ID 番号(mbxid が不正あるいは使用できない)
1
E_ID
MBX2-7
エラーコードパラメータエラー(ppk_msg が不正)
2
E_PAR
MBX2-10待ち状態の強制解除(待ち状態の間に rel_wai を受付)
3
E_RLWAI
MBX2-63−
メッセージキューにメッセージが入っている場合−
先頭のメッセージパケットを取り出し、その先頭番地を4
MBX2-22
pk_msg に返すこと。
−
メッセージキューにメッセージが入っていない場合−
自タスクを待ち行列につなぎ、メールボックスからの受信待5
MBX2-53
ち状態に移行させること。
サービスコール
処 理−
他のタスクがすでに待ち行列につながっている場合−−
属性が TA_TFIFO の場合−
自タスクを待ち行列の末尾につなぐこと。
6
MBX2-58−
属性が TA_TPRI の場合−
自タスクを優先度順で待ち行列につなぐこと。
7
MBX4-11
同じ優先度のタスクの中では、自タスクを最後につなぐこと。 MBX4-21
8(注)No.2 E_PAR エラーを検出できる ppk_msg がシステムに存在しない場合は、テストを省略することができる。
prcv_mbx：
prcv_mbx：メールボックスからの受信(ポーリング)
No.
テスト手順参照
区分
テ ス ト 項 目
不正 ID 番号(mbxid が不正あるいは使用できない)
1
E_ID
MBX2-12
エラーコードパラメータエラー(ppk_msg が不正)
2
E_PAR
MBX2-14
ポーリング失敗
3
E_TMOUT
MBX2-17−
メッセージキューにメッセージが入っている場合−
サービスコール
先頭のメッセージパケットを取り出し、その先頭番地を処 理
4
MBX2-27
pk_msg に返すこと。
(注)
No.2 E_PAR エラーを検出できる ppk_msg がシステムに存在しない場合は、テストを省略することができる。

2-34

trcv_mbx：
trcv_mbx：メールボックスからの受信(タイムアウトあり)No.
区分
テ ス ト 項 目
テスト手順参照
MBX5-2
不正 ID 番号(mbxid が不正あるいは使用できない)
1
E_ID
MBX5-5
パラメータエラー(ppk_msg が不正)
2
E_PAR
エラーコードMBX5-7
パラメータエラー(tmout が不正)
3
E_PAR
待ち状態の強制解除(待ち状態の間に rel_wai を受付) MBX5-36
4
E_RLWAI
タイムアウト5
E_TMOUT
MBX5-30−
メッセージキューにメッセージが入っている場合−
先頭のメッセージパケットを取り出し、その先頭番地を
6
MBX5-12pk_msg に返すこと。
−
メッセージキューにメッセージが入っていない場合−
自タスクを待ち行列につなぎ、メールボックスからの受信待7
MBX5-25
ち状態に移行させること。
−
他のタスクがすでに待ち行列につながっている場合−−
属性がTA_TFIFOの場合−
サービスコール
自タスクを待ち行列の末尾につなぐこと。
処 理
8MBX5-36−
属性が TA_TPRI の場合−
自タスクを優先度順で待ち行列につなぐこと。
9
MBX6-12
同じ優先度のタスクの中では、自タスクを最後につなぐこと。 MBX6-24
10−
tmout の指定−
正の値のタイムアウト時間が指定できること。
11
MBX5-25
TMO_POL が指定できること。
12
MBX5-11
TMO_FEVR が指定できること。
13
MBX5-36(注)
No.2 E_PAR エラーを検出できる ppk_msg がシステムに存在しない場合は、テストを省略することができる。
No.3 E_PAR エラーを検出できる tmout がシステムに存在しない場合は、テストを省略することができる。
4.6 メモリプール管理機能
4.6.1 固定長メモリプール
CRE_MPF：
CRE_MPF：固定長メモリプールの生成（静的 API）
No.
区
分
テ ス ト 項 目
不正 ID 番号(mpfid が不正あるいは使用できない)
1
E_ID
予約属性(mpfatr が不正あるいは使用できない)
2
E_RSATR
エラーコードパラメータエラー(blkcnt が 0)。
3
E_PAR
パラメータエラー(blksz が 0)。
4
E_PAR
オブジェクト状態エラー(対象固定長メモリプールが登録済)
5
E_OBJ
−
mpfatr には以下の指定ができ、オブジェクトが生成できること。
6
TA_TFIFO
静的 API7
TA_TPRI処理
blkcnt で指定する個数でオブジェクトが生成できること
8
blksz で指定するバイト数でオブジェクトが生成できること
92-35

テスト手順参照
MPF1-S2
MPF1-S4
MPF1-S6
MPF1-S8
MPF1-S11−
MPF2-16
MPF3-2
MPF2-37
MPF2-37

get_mpf：
get_mpf：固定長メモリブロックの獲得
No.
区分
テ ス ト 項 目
テスト手順参照
MPF2-2
不正 ID 番号(mpfid が不正あるいは使用できない)
1
E_ID
エラーコードMPF2-7
パラメータエラー(p_blk が不正)
2
E_PAR
待ち状態の強制解除(待ち状態の間に rel_wai を受付) MPF2-43
3
E_RLWAI−
空きメモリブロックがある場合−
その内のいずれかを選んで獲得された状態とし、その先頭番 MPF24
25,26
地を blk に返すこと。
−
空きメモリブロックがない場合−
自タスクを待ち行列につなぎ、固定長メモリブロックの獲得
5
MPF2-37
待ち状態に移行させること。
サービスコール
処理−
他のタスクがすでに待ち行列につながっている場合−−
属性が TA_TFIFO の場合−
MPF2-40
自タスクを待ち行列の末尾につなぐこと。
6−
属性が TA_TPRI の場合−
MPF3-13
自タスクを優先度順で待ち行列につなぐこと。
7
同じ優先度のタスクの中では、自タスクを最後につなぐこと。
8
MPF3-21(注)
No.2 E_PAR エラーを検出できる p_blk がシステムに存在しない場合は、テストを省略することができる。
pget_mpf：
pget_mpf：固定長メモリブロックの獲得(ポーリング)
No.
テスト手順参照
区分
テ ス ト 項 目
MPF2-4
不正 ID 番号(mpfid が不正あるいは使用できない)
1
E_ID
エラーコードMPF2-9パラメータエラー(p_blk が不正)
2
E_PAR
ポーリング失敗
3
E_TMOUTMPF2-21−
空きメモリブロックがある場合−
その内のいずれかを選んで獲得された状態とし、その先頭番 MPF2サービスコール
4
16,17
地を blk に返すこと。
処理−
空きメモリブロックがない場合−
E_TMOUT エラーを返すこと。
5
MPF2-21(注)
No.2 E_PAR エラーを検出できる p_blk がシステムに存在しない場合は、テストを省略することができる。
tget_mget_mpf_mpf：
pf：固定長メモリブロックの獲得(タイムアウトあり)No.
区分
テ ス ト 項 目
不正 ID 番号(mpfid が不正あるいは使用できない)
1
E_ID
パラメータエラー(p_blk が不正)
2
E_PAR
エラーコードパラメータエラー(tmout が不正)
3
E_PAR
待ち状態の強制解除(待ち状態の間に rel_wai を受付)
4
T_RLWAI
タイムアウト5
E_TMOUT
サービスコール 空きメモリブロックがある場合−
処理
その内のいずれかを選んで獲得された状態とし、その先頭番
6
地を blk に返すこと。
−
空きメモリブロックがない場合
自タスクを待ち行列につなぎ、固定長メモリブロックの獲得
7待ち状態に移行させること。
−
他のタスクがすでに待ち行列につながっている場合−
属性が TA_TFIFO の場合
自タスクを待ち行列の末尾につなぐこと。
82-36

テスト手順参照
MPF4-2
MPF4-5
MPF4-7
MPF4-30
MPF4-26−
MPF49,10−
MPF4-21−−
MPF4-30

属性が TA_TPRI の場合
自タスクを優先度順で待ち行列につなぐこと。
同じ優先度のタスクの中では、自タスクを最後につなぐこと。
tmout の指定
正の値のタイムアウト時間が指定できること。
TMO_POL が指定できること。
TMO_FEVR が指定できること。

−
9
10
−
11
12
13
(注)
No.2

−
MPF5-13
MPF5-23−
MPF4-21
MPF4-9MPF4-30

E_PAR エラーを検出できる p_blk がシステムに存在しない場合は、テストを省略することができる。
No.3 E_PAR エラーを検出できる tmout がシステムに存在しない場合は、テストを省略することができる。

rel_mpf：
rel_mpf：固定長メモリブロックの返却
No.
区
分
1
E_ID
2
E_PAR
エラーコード
3
E_PAR
4
−
5

サービスコール
処理

6
7

テ ス ト 項 目
不正 ID 番号(mpfid が不正あるいは使用できない)パラメータエラー(異なるメモリプールへの返却)
パラメータエラー(獲得したメモリブロックの先頭番地以外の返却)
mpfid で指定される固定長メモリプールに対して、blk を先頭番地とするメモリブロックを返却すること。
メモリブロックの獲得を待っているタスクがある場合返却したメモリブロックを待ち行列の先頭のタスクに獲得させ、そのタスクを待ち解除すること。
待ち解除されたタスクに対しては、待ち状態に入ったサービ
スコールの返値として E_OK を返すこと。
固定長メモリブロックから獲得したメモリブロックの先頭番地として blk の値を返すこと。

テスト手順参照
MPF2-11
MPF2-19
MPF2-14
MPF2-41−
MPF2-49
MPF2-40
MPF2-41

4.7 時間管理機能
4.7.1 システム時刻管理
No.
区
分
1
初期化
2
時刻の更新
3
−
4
5
6
7
8

システム時刻に依存して行う処 理
定数

テ ス ト 項 目
テスト手順参照
TIM-3
システム時刻は、システム初期化時に０とすること。
アプリケーションが定められた周期で isig_tim を呼出し、シス
TIM-22
テム時刻が更新されること。
システム時刻更新機能がカーネル内部にある場合は、isig_tim を呼UMAび出さなくてもシステム時刻が更新されること。ただし、システム
29,30
時刻更新方法が製品マニュアルに記載されていること。
システム時刻に依存して行う処理は、以下の３つであること。
−
タイムアウト処理
MPF4-26
dly_tsk による時間経過待ち状態からの解除
SYN9-4
周期ハンドラの起動
CYC2-32
タイムティックの周期の分子
HED-82
TIC_NUME
タイムティックの周期の分母
TIC_DENO
HED-832-37

set_tim：
set_tim：システム時刻の設定
No.
区分
テ ス ト 項 目
テスト手順参照
TIM-8
パラメータエラー(p_systim が不正)
1
E_PAR
エラーコードTIM-11
パラメータエラー(systim が不正)
2
E_PAR
サービスコール 現在のシステム時刻を、systim で指定される時刻に設定できる
3
TIM-17処理こと。
(注)
No.1 E_PAR エラーを検出できる p_systim がシステムに存在しない場合は、テストを省略することができる。
No.2 E_PAR エラーを検出できる systim がシステムに存在しない場合は、テストを省略することができる。
get_tim：
get_tim：システム時刻の参照
No.
テスト手順参照
区分
テ ス ト 項 目
TIM-6
パラメータエラー(p_systim
が不正)エラーコード1
E_PAR
サービスコール
現在のシステム時刻を呼び出し、systim に返すこと。
2
TIM-17
処理(注)No.1 E_PAR エラーを検出できる p_systim がシステムに存在しない場合は、テストを省略することができる。
isig_tim：
isig_tim：タイムティックの供給
No.
テスト手順参照
区分
テ ス ト 項 目
システム時刻を更新できること。
1
TIM-22
サービスコール
システム時刻を更新する機構をカーネル内部に持つ場合には、
処理2
UMA-29
このサービスコールをサポートする必要はない。
4.7.2 周期ハンドラ
No.
区
分
1

拡張情報

2

停止状態

テ ス ト 項 目
テスト手順参照
周期ハンドラを起動すべき時刻になると、その周期ハンドラの拡張情
CYC2-32報(exinf)をパラメータとして、周期ハンドラを起動すること。
周期ハンドラを起動すべき時刻になっても周期ハンドラを起動
CYC2-10
せず、次に起動すべき時刻の決定のみを行うこと。

CRE_CYC：
CRE_CYC：周期ハンドラの生成（静的 API）
No.
区
分
テ ス ト 項 目
テスト手順参照
CYC1-S2
予約属性(cycatr が不正あるいは使用できない)
1
E_RSATRCYC1-S4
パラメータエラー(cychdr が不正)
2
E_PAR
エラーコードCYC1-S6
パラメータエラー(cyctim
が
0)
3
E_PAR
CYC1-S8
パラメータエラー(cycphs が不正)
4
E_PAR
−
TA_STA 指定の場合−
周期ハンドラを生成した後に、周期ハンドラを動作している
5
CYC2-11状態とすること。
静的 API−TA_STA 指定なしの場合−
処理
周期ハンドラを動作していない状態とすること。
6
CYC2-10周期ハンドラを最初に起動すべき時刻は、これらのサービスコールが呼び出された時刻(静的 API の場合にはシステム初期化の CYC2-117時刻)に、指定された起動位相を加えた時刻とすること。
(注)
No.2 E_PAR エラーを検出できる cychdr がシステムに存在しない場合は、テストを省略すること
ができる。

2-38

sta_cyc
sta_cyc：_cyc：周期ハンドラの動作開始
No.
区
分
1

エラーコード2
3

サービスコール処理

テ ス ト 項 目
テスト手順参照
CYC2-3
不正 ID 番号 (cycid が不正あるいは使用できな
E_ID
い)cycid で指定される周期ハンドラを、動作している状態に移行さ
CYC2-22せること。
対象周期ハンドラに、周期ハンドラ属性に TA_PHS が指定されていないで動作している状態の周期ハンドラが指定された場合には、周期 CYC2-27
ハンドラを次に起動すべき時刻の再設定のみを行うこと。

stp_cyc：
stp_cyc：周期ハンドラの動作停止
No.
区分
テ ス ト 項 目
テスト手順参照
CYC2-5
不正 ID 番号 (cycid が不正あるいは使用できない)
エラーコード1
E_ID
cycid で指定される周期ハンドラを、動作していない状態に移行
2
CYC2-17
サービスコール させること。
処理
動作していない状態の周期ハンドラが指定された場合には、何3CYC2-7もしないこと。
4.8 システム状態管理機能
rot_rdq：
rot_rdq：タスクの優先順位の回転
No.
テスト手順参照
区分
テ ス ト 項 目
パラメータエラー(tskpri が不正)
エラーコード1
E_PAR
SYS1-2
対象優先度を持った実行できる状態のタスクの中で、最も高い
サービスコール 優先順位を持つタスクを、同じ優先度を持つタスクの中で最低 SYS1-66
2
処理の優先順位とすること。
TPRI_SELF が指定されると、自タスクの優先度とすること。
3
SYS1-50
irot_rdq：
rot_rdq：タスクの優先順位の回転
No.
区分
テ ス ト 項 目
テスト手順参照
パラメータエラー(tskpri が不正)
エラーコード
1
E_PAR
SYS2-3
対象優先度を持った実行できる状態のタスクの中で、最も高い
優先順位を持つタスクを、同じ優先度を持つタスクの中で最低 SYS2-31
2
サービスコールの優先順位とすること。
処理
非タスクコンテキストから TPRI_SELF の呼び出しが行われた
3
SYS2-5場合には、E_PAR エラーを返すこと。
get_tid：
get_tid：実行状態のタスク ID の参照
No.
区
分
テ ス ト 項 目
サービスコール
実行状態のタスクの ID 番号を参照し、tskid に返すこと。
1
処理

テスト手順参照
SYS1-5iget_tid：
get_tid：実行状態のタスク ID の参照
No.
区
分
テ ス ト 項 目
サービスコール
実行状態のタスクのID
番号を参照し、tskid に返すこと。
1
処理
実行状態のタスクがない時は、tskid に TSK_NONE を返すこと。
2

テスト手順参照
SYS2-7
SYS2-34

loc_cpu：
loc_cpu：CPU ロック状態への移行
No.
区分
テ ス ト 項 目
サービスコール CPU ロック状態に移行すること。
1処理
CPU ロック状態で呼び出された場合には何もしないこと。
2

テスト手順参照
SYS1-11
SYS1-172-39

iloc_cpu：
loc_cpu：CPU ロック状態への移行
No.
区分
テ ス ト 項 目
サービスコール CPU ロック状態に移行すること。
1処理
CPU ロック状態で呼び出された場合には何もしないこと。
2

テスト手順参照
SYS2-11
SYS2-15

unl_cpu
unl_cpu：
pu：CPU ロック状態の解除
No.
区
分
テ ス ト 項 目
サービスコール CPU ロック解除状態に移行すること。
1処理
CPU ロック解除状態で呼び出された場合には何もしないこと。
2

テスト手順参照
SYS1-21
SYS1-25

iunl_cpu：
unl_cpu：CPU ロック状態の解除
No.
区
分
テ ス ト 項 目
サービスコール CPU ロック状態解除に移行すること。
1処理
CPU ロック解除状態で呼び出された場合には何もしないこと。
2

テスト手順参照
SYS2-19
SYS2-23

dis_dsp：dis_dsp：ディスパッチの禁止
No.
区分
テ ス ト 項 目
テスト手順参照
ディスパッチ禁止状態に移行すること。
1
SYS1-31
サービスコール
ディスパッチ禁止状態で呼び出された場合には何もしないこ処理2
SYS1-37と。
ena_dsp：ena_dsp：ディスパッチの許可
No.
区分
テ ス ト 項 目
テスト手順参照
ディスパッチ許可状態に移行すること。
1
SYS1-41
サービスコール
ディスパッチ許可状態で呼び出された場合には何もしないこ処理2
SYS1-45と。
sns_ctx：
sns_ctx：コンテキストの参照
No.
区分
テ ス ト 項 目
サービスコール タスクコンテキストから呼び出された場合に FALSE を返すこと。
1
処理
非タスクコンテキストから呼び出された場合に TRUE を返すこと。
2

テスト手順参照
SYS1-27
SYS2-25

sns_loc：
sns_loc：CPU ロック状態の参照
No.
区
分
テ ス ト 項 目
サービスコール システムが、CPU ロック状態の場合に TRUE を返すこと。
1
処
理
システムが、CPU ロック解除状態の場合に FALSE を返すこと。
2

テスト手順参照
SYS1-11
SYS1-21

sns_dsp：sns_dsp：ディスパッチ禁止状態の参照
No.
区
分
テ ス ト 項 目
サービスコール システムが、ディスパッチ禁止状態の場合に TRUE を返すこと。
1
処
理
システムが、ディスパッチ許可状態の場合に FALSE を返すこと。
2

テスト手順参照
SYS1-31
SYS1-41

sns_dpn：sns_dpn：ディスパッチ保留状態の参照
No.
区
分
テ ス ト 項 目
システムが、以下に示すディスパッチ保留状態の場合には−TRUE を返すこと。
ディスパッチャよりも優先順位の高い処理が実行されている間
1
サービスコール
処理
CPU ロック状態の間
2
ディスパッチ禁止状態の間
3システムが、ディスパッチ保留状態でない場合に FALSE を返すこと。
42-40

テスト手順参照−
SYS2-36
SYS1-13
SYS1-33
SYS1-7

4.9 割込み管理機能
No.
区
分
1
データ型
2
3

記述形式

4

拡張情報

5

CPU ロック解除

6

リターン

テ ス ト 項 目
テスト手順参照
割込みハンドラ番号
HED-84
INHNO
割込み番号
INTNO
HED-85
製品マニュアル記載の通りに割込みハンドラを記述し、期待す
UMA-31
る動作を行うこと。
割込みサービスルーチンを起動する際、その割込みサービスル
ISR1-2ーチンの拡張情報(exinf)をパラメータとして渡すこと。
割込みハンドラ内で CPU ロック解除状態にする方法が、製品マ
UMA-32ニュアルに明示されていること。
CPU ロック解除した後に、割込みハンドラから正しくリターン
UMA-33するための方法が製品マニュアルに明示されていること。

DEF_INH：
DEF_INH：割込みハンドラの定義（静的 API）
No.
区
分
テ ス ト 項 目
テスト手順参照
INH1-S2
予約属性(inhatr が不正あるいは使用できない)
1
E_RSATR
エラーコードINH1-S4
パラメータエラー(inhno が不正)
2
E_PAR
INH1-S6
パラメータエラー(inthdr が不正)
3
E_PAR
inhno で指定される割込みハンドラ番号に対して、定義情報に基静的 API4
INH1-2
づいて割込みハンドラを定義できること。
処理
inhno の具体的な意味が実装で定義されていること。
5
UMA-34(注)
No.3 E_PAR エラーを検出できる inthdr がシステムに存在しない場合は、テストを省略すること
ができる。
ATT_I
ATT_ISR_ISR：
SR：割込みサービスルーチンの追加（静的 API）
No.
テスト手順参照
区分
テ ス ト 項 目
予約属性(isratr が不正あるいは使用できない)
1
E_RSATR
ISR1-S2
エラーコードパラメータエラー(intno が不正)
2
E_PAR
ISR1-S4
パラメータエラー(isr が不正)
3
E_PAR
ISR1-S6
静的 API
割込みサービスルーチンを起動する時に、パラメータとして
4
ISR1-2処理
exinf を渡すこと。
(注)
No.3 E_PAR エラーを検出できる isr がシステムに存在しない場合は、テストを省略することができる。
4.11 システム構成管理機能
No.
テスト手順参照
区分
テ ス ト 項 目
1
データ型
CPU 例外ハンドラ番号
EXCNO
HED-86
CPU 例外ハンド 製品マニュアル記載の通りに CPU 例外ハンドラを記述し、期待2
UMA-35ラの記述形式する動作を行うこと。
初期化ルーチンを起動する際には、その初期化ルーチンの拡張
拡張情報3
INI1-2
情報(exinf)をパラメータとして渡すこと。

2-41

DEF_
DEF_EXC：EXC：CPU 例外ハンドラの定義（静的 API）
No.
区
分
テ ス ト 項 目
テスト手順参照
EXC1-S2
予約属性(excatr が不正あるいは使用できない)
1
E_RSATR
エラーコードEXC1-S4
パラメータエラー(excno が不正)
2
E_PAR
EXC1-S6
パラメータエラー(exchdr が不正)
3
E_PAR
excno の具体的な意味は実装定義であるが、一般的な実装では、
4
UMA-36プロセッサで区別される例外の種類に対応する。。
静的 API
すでに CPU 例外ハンドラが定義されている CPU 例外ハンドラ処
理
番号に対して、再度 CPU 例外ハンドラを定義した場合には、以 EXC1-2
5前の定義を解除し、新しい定義に置き換えること。
(注)
No.3 E_PAR エラーを検出できる exchdr がシステムに存在しない場合は、テストを省略することができる。
ATT_INI：
ATT_INI：初期化ルーチンの追加（静的 API）
No.
テスト手順参照
区分
テ ス ト 項 目
静的 API
追加された初期化ルーチンは、システム初期化時に、静的 API
1
INI1-1
処理の処理の一環として実行すること。

2-42

第3章
第１節
1.1

スタンダードプロファイルのテスト手順
プログラムによる確認の見方

テストに必要なシステム条件
スタンダードプロファイルのテスト手順を実施する場合のシステム条件を示す。
(1) ソフトウェアから何らかの CPU 例外が発生できること。
(2) ソフトウェアから何らか割込みが発生できること。
(3) 1msec 周期で isig_tim サービスコールを呼び出し、タイマを更新すること。

1.2

静的 API のテスト手順の見方
以下に、静的 API のテストを行う場合のテスト手順の見方を、タスク管理機能のテスト手順
その１で説明する。また、｢4.1 タスク管理機能｣などタイトルの前の番号は、μITRON4.0
仕様書に記載されてあるものと一致させた。
TSK1：タスク管理機能のテスト手順 その１
No
S1
S2
S3
S4
S5
S6
S7
S8
S9
S10
S11
S12
S13
S14

テ ス ト 手 順 内 容
CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(ERR_TASK_ID,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
E_ID を検出できること
CRE_TSK(TASK_ID3,{ERR_TSKATR,TASK1,ITSKPRI_1,STKSZ,NULL})E_RSATR を検出できること
CRE_TSK(TASK_ID3,{TA_HLNG,EXINF_1,ERR_TASK,ITSKPRI_3,STKSZ,NULL})
E_PAR を検出できること
CRE_TSK(TASK_ID3,{TA_HLNG,EXINF_1,TASK1,ERR_ITSKPRI,STKSZ,NULL})
E_PAR を検出できること
CRE_TSK(TASK_ID3,{TA_HLNG,EXINF_1,TASK3,ITSKPRI_3,ERR_STKSZ,NULL})
E_PAR を検出できること
CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
E_OBJ を検出すること

テスト項目参照

CRE_TSK-1
CRE_TSK-2
CRE_TSK-3
CRE_TSK-4
CRE_TSK-5
CRE_TSK-6(1) No.
静的 API の記述順序を示す。
(2) テスト手順内容
システムコンフィギュレーションファイルに記述する内容である。
｢TASK_ID｣等は、μITRON 検定仕様書で使用する定数一覧でデータ型とその値を定義している。
網掛けされてあるものは、実装定義でエラーの検出を省略できることを示す。ただし、これらのエラーコードの検出を省略する場合は、省略する旨が製品マニュアルに記載されていること。
No.S4 でエラーを検出するとコンフィギュレータが停止するシステムの場合は、No.S4 のテストが完了したら、No.S3 と No.S4 をエディタ等で削除し、再度コンフィギュレータを実行する。
エラーを検出して停止したら当該行を削除する作業を最後まで繰り返す。
(3) テスト項目参照
テスト手順で確認すべき事項が、テスト項目のどの部分に記載されているかを示す。

3-1

1.3

静的 API 以外のテスト手順の見方
以下に、タスク管理機能のテスト手順 その２を例にテスト手順の見方を説明する。
TSK2：タスク管理機能のテスト手順 その２No

テ ス ト 手 順 内 容

S1
S2
−
1
2
3
4
5

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK1,ITSKPRI_2,STKSZ,NULL})<TASK_ID<TASK_ID<TASK_ID1:DORMANT>_ID1:DORMANT><TASK_ID2:READY>_ID2:READY>
ercd = act_tsk(ERR_TASK_ID)
MERCD(ercd) ==E_ID
ercd = act_tsk(TSK_SELF)
MERCD(ercd) == E_OK
act_cnt = can_act(TSK_SELF)

6

actcnt == 1

7
8
9
10
11
12
13
14
15

act_cnt = can_act(TSK_SELF)
actcnt == 0
act_cnt = can_act(ERR_TASK_ID)
actcnt == E_ID
ercd = act_tsk(TASK_ID1)

exinf == EXINF_1
ercd = act_tsk(TASK_ID2)
MERCD(ercd) == E_OK
actcnt = can_act(TASK_ID2)

テスト
項目参照

−
act_tsk_1
act_tsk-7
act_tsk-7
can_act-4
can_act-2
can_act-1
act_tsk-3,5(1) No.
プログラムの実行順序を示す。必ずこの順序で実行されていることを確認しなければならない。
番号の前にＳが付加されているものは、静的 API の記述順序を示す。
番号のみの場合は、タスクやハンドラの実行順序であることを示す。したがって、タスクやハンドラは、必ず昇順で実行されることを確認すること。
｢−｣は、補足的説明を加えている行を示し、プログラム化を行う必要はない。
(2) テスト手順内容
静的 API でテスト環境を整え、No.1 から順次実行していく。また、No.1 で定数として使用している｢ERR_TASK_ID｣は、μITRON 検定仕様書で使用する定数一覧でデータ型とその値を定義している。さらに、No.5 で変数と使用している｢actcnt｣は、μITRON 検定仕様書で使用する変数一覧でデータ型を定義している。
ercd == E_OK など、イタリック体で記述している行では、値を比較し必ず一致しなければならないことを示す。
テスト項目と同様に、エラーコードに網掛けされてあるものは、実装定義でエラーの検出を省略できることを示す。ただし、これらのエラーコードの検出を省略する場合は、省略する旨が製品マニュアルに記載されていること。したがって、製品マニュアルに省略する旨が記載されている場合に限り、当該テストを省略できる。
No.12 で示すように、記述位置が変わっている場合は、状態が遷移しなければならないことを示す。
カーネル構成定数によって結果が異なる場合がある。
例えば、
TMAX_ACTCNT == 1 ：actcnt == 1などである。
TMAX_ACTCNT ＞ 1 ：actcnt == 2
定義している値によって、どちらかを選択すること。
静的 API 記述の次の行の<TASK<TASK_ID<TASK_ID1:DORMANT>_ID1:DORMANT>等、太字で記述しているものはタスクやハ
1:DORMANT>
ンドラの初期状態を示している。
(3) テスト項目参照
テスト手順で確認すべき事項が、テスト項目のどの部分に記載されているかを示す。

3-2

1.4

タスク・ハンドラの記述形式
テスト手順は、テスト項目確認のための具体的手段を記載している。テストするためのプログ
ラムがより自然に書けるよう、C 言語を意識した記載とした。
タスクおよびハンドラは、μITRON4.0 仕様書の規定の沿って、以下の通り記述する。
(1)タスクの C 言語による記述形式
void task(VP_INT exinf){
タスク本体
ext_tsk( )}(2)タスクの C 言語による記述形式(return で終了する場合)
void task(VP_INT exinf){
タスク本体
return}(3)タスク例外処理ルーチンの C 言語による記述形式
void texrtn(TEXPTN texptn, VP_INT exinf){
タスク例外処理ルーチン本体}(4)周期ハンドラの C 言語による記述形式
void cychdr(VP_INT exinf){
周期ハンドラ本体}(5)割込みサービスルーチンの C 言語による記述形式
void isr(VP_INT exinf){
割込みサービスルーチン本体}(6)初期化ルーチンの C 言語による記述形式
void inirtn(VP_INT exinf){
初期化ルーチン本体
}

3-3

1.5

スタンダードプロファイルのテスト手順で使用する定数一覧
スタンダードプロファイルのテスト手順では、以下に示す定数を定義しテストを実施すること。
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID

TEXPTNTEXPTNTEXPTNTEXPTNTEXPTNTEXPTNTEXPTNTEXPTNTEXPTN
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INTFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTN
UINT
UINT
UINT
UINT

ID
TASK_ID1TASK_ID1_1
TASK_ID1_2
TASK_ID2TASK_ID2_1
TASK_ID2_2
TASK_ID3TASK_ID4TASK_ID5~TASK_ID16
SEM_ID1~SEM_ID255
FLG_ID1
FLG_ID2
FLG_ID3
コンフィギュレータでFLG_ID4
ID の自動割付けを行う
FLG_ID5
FLG_ID6
FLG_ID7
FLG_ID8
DTQ_ID1
DTQ_ID2
DTQ_ID3
DTQ_ID4
MBX_ID1
MBX_ID1_2
MPF_ID1
MPF_ID2CYC_ID1
CYC_ID2
タスク例外要因パターン
RASPTN_1
0x0001RASPTN_2
0x0002RASPTN_4
0x0003RASPTN_1111
0x1111RASPTN_55AA
0x55AARASPTN_AA55
0xAA55RASPTN_AAAA
0xAAAARASPTN_AAAE
0xAAAERASPTN_FFFF
0xFFFF拡 張 情 報EXINF_1(VP_INT)0x00000001
EXINF_1_1(VP_INT)0x00000011
EXINF_1_2(VP_INT)0x00000012
EXINF_2(VP_INT)0x00000002
EXINF_2_1(VP_INT)0x00000021
EXINF_2_2(VP_INT)0x00000022
EXINF_3(VP_INT)0x00000003
EXINF_4(VP_INT)0x00000004
EXINF_CYC1(VP_INT)0x00000001
EXINF_CYC2(VP_INT)0x00000002
初 期 値
IFLGPTN_0
0x0000IFLGPTN_1
0x0001IFLGPTN_2
0x0002IFLGPTN_3
0x0003IFLGPTN_4
0x0004IFLGPTN_5
0x0005IFLGPTN_6
0x0006IFLGPTN_7
0x0007IFLGPTN_8
0x0008ISEMCNT_00
ISEMCNT_1
1
ISEMCNT_2
2
ISEMCNT_FFFE
0xfffe

FP
FP
FP
FP
FP
FP
FP
FP
FP
FP
FP
FP
FP
FP
FP
FP
FP
FP
FP
FP
INHNO
INHNO
EXCNO
INTNO
PRI
PRI
PRI
PRI
PRI
PRI
PRI
PRI
PRI
PRI
ATR
ATR
ATR
ATR
SIZE
SIZE
SIZE
SIZE
TMO
TMO
TMO
TMO
TMO
RELTIMRELTIMRELTIMRELTIMRELTIMRELTIMRELTIMRELTIMRELTIM
SYSTIM
SYSTIM

3-4

起 動 番 地TASK1TASK_ID1 起動番地
TASK1_1
TASK_ID1_1 起動番地
TASK1_2
TASK_ID1_2 起動番地
TASK2
TASK_ID2 起動番地
TASK2_1
TASK_ID2_1 起動番地
TASK2_2
TASK_ID2_2 起動番地
TASK3
TASK_ID3 起動番地
TASK4
TASK_ID4 起動番地
TASK5〜TASK16TASK_ID5〜TASK_ID16 起動番地
TEXRTN_1
タスク例外処理ルーチン起動番地
TEXRTN_2
タスク例外処理ルーチン起動番地
INTHDR_1
割込みハンドラ起動番地
ISR_ADR_00
ISR_1
割込みサービスルーチン起動番地
EXCHDR_1
CPU 例外ハンドラ起動番地
EXCHDR_2
CPU 例外ハンドラ起動番地
INIRTN_1
初期化ルーチン起動番地
INIRTN_2
初期化ルーチン起動番地
CYCHDR_1
周期ハンドラ起動番地
CYCHDR_2
周期ハンドラ起動番地
INHNO
何らかの割込みハンドラを実装毎に定義する
INHNO_1
実装で定義
EXCNO_1
実装で定義
INTNO_1
実装で定義
優 先 度
ITSKPRI_1〜ITSKPRI_16 0x0001〜0x0010
TSKPRI_3
0x0003
TSKPRI_4
0x0004MSGPRI_1
0x0001MSGPRI_2
0x0002MSGPRI_3
0x0003
MAXMPRI_0
0x00000000
MAXMPRI_3
0x00000003
MAXMPRI_5
0x00000005
MAXMPRI_16
0x00000010
属
性
INHATR
実装毎に値を定義する
INHATR_1
実装毎に値を定義する
EXCATR
実装毎に値を定義する
INIATR
実装毎に値を定義する
サ イ ズ
STKSZ
0x0100BLKSZ_00
BLKSZ_10
10
BLKSZ_256
256
タイムアウト値
TMO_1
1
TMO_2
2
TMO_1010
TMO_100
100
TMO_200200
DLYTIM_2
2
DLYTIM_5
5
DLYTIM_10
10
DLYTIM_20
20
DLYTIM_50
50
DLYTIM_100
100
DLYTIM_300
300
DLYTIM_500
500
DLYTIM_1000
1000
SYSTIM_00
SYSTIM_1000
1000

RELTIMRELTIMRELTIMRELTIMRELTIM
UINT
UINT
UINT
FLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTN
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
UW
UW

周期ハンドラ
0
10
55
0
5
最 大 値
MAXSEM_1
1
MAXSEM_2
2
MAXSEM_FFFF
0xffff
フラグパターン
SETPTN_1
0x0001
CLRPTN_0000
0x0000
CLRPTN_1
0x0001SETPTN_0001
0x0001SETPTN_0002
0x0002
SETPTN_0005
0x0005
SETPTN_0055
0x0055
SETPTN_0500
0x0500SETPTN_0505
0x0505
SETPTN_5500
0x5500SETPTN_1111
0x1111SETPTN_5555
0x5555
SETPTN_8000
0x8000SETPTN_AAAA
0xAAAA
WAIPTN_0000
0x0000
WAIPTN_1
0x0001WAIPTN_0001
0x0001WAIPTN_0002
0x0002
WAIPTN_0020
0x0020
WAIPTN_0050
0x0050
WAIPTN_0055
0x0055
WAIPTN_0505
0x0505
WAIPTN_5500
0x5500
WAIPTN_5555
0x5555
WAIPTN_8000
0x8000
WAIPTN_AAAA
0xAAAAFLGPTN_0055
0x0055FLGPTN_5555
0x5555
そ の 他
DATA_00(VP_INT)0x00000000
DATA_01(VP_INT)0x00000001
DATA_02(VP_INT)0x00000002
DATA_03(VP_INT)0x00000003
DATA_04(VP_INT)0x00000004
DATA_05(VP_INT)0x00000005
DATA_11(VP_INT)0x00000011
DATA_22(VP_INT)0x00000022
DATA_33(VP_INT)0x00000033
DATA_44(VP_INT)0x00000044
DATA_55(VP_INT)0x00000055
DATA_66(VP_INT)0x00000066
DATA_77(VP_INT)0x00000077
DATA_88(VP_INT)0x00000088
DATA_99(VP_INT)0x00000099
DATA_AA(VP_INT)0x000000AA
DATA_CC(VP_INT)0x000000CC
DATA_DD(VP_INT)0x000000DD
DATA_EE(VP_INT)0x000000EE
DATA_FF(VP_INT)0x000000FF
MEMORY
共有メモリアドレス
SYSTIM_50
50
CYCTIM_0
CYCTIM_10
CYCTIM_55
CYCPHS_0
CYCPHS_5

UINT
UINT
UINT
UINT
UINT
UINT
UINT
FP
ID
ATR
PRI
PRI
SIZE
TMO
RELTIM
ATR
FP
FP
INHNO
ATR
ATR
INHNO
EXCNO
ATR
ATR
ID
UINT
ID
ATR
FLGPTNFLGPTNFLGPTNFLGPTN
MODE
FP
ID
ATR
UINT
ID
ATR
PRI
PRI
ID
ATR
ID
ATR
RELTIM
FP
FP
FP

3-5

カウンタ
0x00000000
0x00000001
0x00000002
0
1
10
2048
エラー定数
ERR_TASK
E_PAR エラーを返すアドレスを実装毎に定義する
ERR_TASK_ID-1
ERR_TSKATR
0xff
ERR_ITSKPRI-1
ERR_TSKPRI-2
ERR_STKSZ
E_PAR エラーを返す値を実装毎に定義する
ERR_TMO-2
ERR_DLYTIM
E_PAR エラーを返す値を実装毎に定義する
ERR_TEXATR
0xff
ERR_TEXRTN
0
ERR_RASPTN
0
ERR_INHNO
E_PAR エラーを返す値を実装毎に定義する
ERR_INHATR
E_PAR エラーを返す値を実装毎に定義する
ERR_ISRATR
2
ERR_INTNO
未サポート割込み番号
ERR_EXCNO
E_PAR エラーを返す値を実装毎に定義する
ERR_EXCATR
E_PAR エラーを返す値を実装毎に定義する
ERR_SEMATR
0x55
ERR_SEM_ID-2
MAXSEM_OVER
E_PAR エラーを返す値を実装毎に定義する
ERR_FLG_ID-3
ERR_FLGATR
0xaa
ERR_IFLGPTN
E_PAR エラーを返す値を実装毎に定義する
ERR_SETPTN
0xffffffff
ERR_CLRPTN
0xffffffff
ERR_WAIPTN
0xffffffff
ERR_WFMODE
0x02
ERR_POINTER
E_PAR エラーを返すポインタ値を実装毎に定義する
ERR_DTQID-2
ERR_DTQATR
0xaa
ERR_DTQCNT
0xffffffff
ERR_MBXID-1
ERR_MBXATR
0xbb
ERR_MAXMPRI
0xffffffff
ERR_MSGPRI-1
ERR_MPFID-3
ERR_MPFATR
0xcc
ERR_CYCID
0
ERR_CYCATR
0xdd
ERR_CYCPHS
E_PAR エラーを返す値を実装毎に定義する
ERR_INTHDR
E_PAR エラーを返す値を実装毎に定義する
ERR_EXCHDR
E_PAR エラーを返す値を実装毎に定義する
ERR_CYCHDR
E_PAR エラーを返す値を実装毎に定義する
DTQCNT_0
DTQCNT_1
DTQCNT_2
BLKCNT_0
BLKCNT_1
BLKCNT_10
BLKCNT_2048

1.6

スタンダードプロファイルのテスト手順で使用する変数一覧
スタンダードプロファイルのテスト手順では、以下に示す変数を定義しテストを実施すること。
型
T_MSG_PRI
T_MSG_PRI
T_MSG_PRIER
ER_UINTPRITEXPTN
VP_INTSYSTIM
UW
B
UB
VB
VP
UINT
ER
STAT
SIZE
VP_INT
ER_UINT

変数名
msg1
msg22
msg16
ercd
actcnt*p_tskpri
texptndata
systimcyc_work1
b1
ub1
vb1
vp
uint1
er1
stat1
size1
vp_int1
er_unit1型
T_MSG_PRI
T_MSG_PRI
T_MSG_PRI
VP_INTPRI
ER_UNITFLGPTNVP
SYSTIM
UW
H
UH
VH
FP
BOOL
ID
MODE
TMO
ER_BOOL

変数名
msg2
msg3
*pk_msg
exinf
tskpriwupcntflgptn*p_blksystim1
cyc_work2
h1
uh1
vh1
fp
bool1
id1
mode1
tmo1
er_bool1

3-6型
T_MSG_PRI
T_MSG_PRI
T_MSG_PRIBOOLID
FLGPTN
VP_INT
VP
STSTIM
UW
W
UW
VW
INT
FN
ATR
PRI
RELTIM
ER_ID

変数名
msg21
msg8
**ppk_msg
state*p_tskid*p_flgptn*p_datablk
systim2
work
w1
uw1
vw1
int1
fn1
atr1
pri1
reltim1
er_id1

第 3節

第2節 プログラムによる確認の手順
COM1：ITRON仕様共通規定のテスト手順
その1
COM1
No

１

テ

ス

ト

手

順

内

テスト
項目参照

容

#include <kernel.h>#include <kernel.h>B c;main( ){
B a=1,b=2;

APIの構成要素-5

c = a + b;}
※ 上記ファイルをコンパイルして、エラーが発生しないことを確認する。
COM2：ITRON仕様共通規定のテスト手順
その2
COM2
No
S1
S2
S3
S4
S5
S6
S7
S8
S9
S10
S11
S12
S13
S14
S15
S16
S17
−
1
2
3
4
5
6
7
8
9
10
11
12

〜
25
26
27
28
29
30
31
32
33
34
35

テ

ス

ト

手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID16,{TA_HLNG|TA_ACT,EXINF_16,TASK16,ITSKPRI_16,STKSZ,NULL})
CRE_TSK(TASK_ID15,{TA_HLNG|TA_ACT,EXINF_15,TASK15,ITSKPRI_15,STKSZ,NULL})
CRE_TSK(TASK_ID14,{TA_HLNG|TA_ACT,EXINF_14,TASK14,ITSKPRI_14,STKSZ,NULL})
CRE_TSK(TASK_ID13,{TA_HLNG|TA_ACT,EXINF_13,TASK13,ITSKPRI_13,STKSZ,NULL})
CRE_TSK(TASK_ID12,{TA_HLNG|TA_ACT,EXINF_12,TASK12,ITSKPRI_12,STKSZ,NULL})
CRE_TSK(TASK_ID11,{TA_HLNG|TA_ACT,EXINF_11,TASK11,ITSKPRI_11,STKSZ,NULL})
CRE_TSK(TASK_ID10,{TA_HLNG|TA_ACT,EXINF_10,TASK10,ITSKPRI_10,STKSZ,NULL})
CRE_TSK(TASK_ID9,{TA_HLNG|TA_ACT,EXINF_9,TASK9,ITSKPRI_9,STKSZ,NULL})
CRE_TSK(TASK_ID8,{TA_HLNG|TA_ACT,EXINF_8,TASK8,ITSKPRI_8,STKSZ,NULL})
CRE_TSK(TASK_ID7,{TA_HLNG|TA_ACT,EXINF_7,TASK7,ITSKPRI_7,STKSZ,NULL})
CRE_TSK(TASK_ID6,{TA_HLNG|TA_ACT,EXINF_6,TASK6,ITSKPRI_6,STKSZ,NULL})
CRE_TSK(TASK_ID5,{TA_HLNG|TA_ACT,EXINF_5,TASK5,ITSKPRI_5,STKSZ,NULL})
CRE_TSK(TASK_ID4,{TA_HLNG|TA_ACT,EXINF_4,TASK4,ITSKPRI_4,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG|TA_ACT,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_MBX(MBX_ID1,{TA_TPRI|TA_MPRI,MAXMPRI_16,NULL})<TASK_ID<TASK_ID2_ID2〜TASK_ID15:TASK_ID15: READY>READY><TASK_ID<TASK_ID1:READY>_ID1:READY>TASK_ID2 ・・・・・・ TASK_ID15
メッセージ優先度付きで送信するメッセー
ジmsg1,msg8,msg16を用意する
msg16のmsgpriにMSGPRI_16を設定
ercd = snd_mbx(MBX_ID1,&msg16)
MERCD(ercd) == E_OK
msg8のmsgpriにMSGPRI_8を設定
ercd = snd_mbx(MBX_ID1,&msg8)
MERCD(ercd) == E_OK
msg1のmsgpriにMSGPRI_1を設定
ercd = snd_mbx(MBX_ID1,&msg1)
MERCD(ercd) == E_OK
ext_tsk( )ext_tsk( )
・
・
・
・
・
ext_tsk( )<TASK_ID16<TASK_ID16:_ID16: READY>

ercd = prcv_mbx(MBX_ID1,&pk_msg)
MERCD(ercd) == E_OK
msg1を受信ercd = prcv_mbx(MBX_ID1,&pk_msg)
MERCD(ercd) == E_OK
msg8を受信ercd = prcv_mbx(MBX_ID1,&pk_msg)
MERCD(ercd) == E_OK
msg16を受信
ext_tsk( )

3-7

−

優先度-1

優先度-2

COM3：
COM3：ITRON仕様共通規定のテスト手順 その３
No

テ

ス

ト

手

順

内

容

S1
S2
−
1

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG,EXINF_2,TASK1,ITSKPRI_2,STKSZ,NULL})<TASK_ID<TASK_ID<TASK_ID1:READY>_ID1:READY><TASK_ID2:_ID2:DORMANT
2:DORMANT>DORMANT>
ercd = get_tid(ERR_ADDR)

2

MERCD(ercd) == E_MACV

テスト
項目参照

−
サービスコールの返値とエラーコード-3

3
ercd = act_tsk(TASK_ID2)
4
MERCD(ercd) == E_OK
5systim1 = SYSTIM_1000
6ercd = set_tim(&systim1)
7
MERCD(ercd) == E_OK
8ercd = tslp_tsk(TMO_100)
9systim1 = SYSTIM_0
10ercd = set_tim(&systim1)
11
MERCD(ercd) == E_OK
12ercd = dly_tsk(DLYTIM_300)
13 MERCD(ercd) == E_TMOUT
14 ercd = get_tim(&systim2)
15 MERCD(ercd) == E_OK
16 systim2 < SYSTIM_1000
17 ext_tsk( )18
MERCD(ercd) == E_OK
19
ext_tsk( )(注)No.2 E_MACVエラーを検出できるERR_ADDR番地がシステムにない場合は、テストを省略することができる。

相対時間とシステム時刻-1

COM4：
COM4：ITRON仕様共通規定のテスト手順 その４
No

１

２

テ

ス

ト

手

順

内

容

以下の機能を持つプログラムを作成し、それをソフトウェア部品のコンフィギュレータとして、カーネルのコンフィギュレーション手順に組み込む。
(1) プログラムに渡されたファイルをそのまま表示する機能(2) プログラムに渡されたファイルに、｢CRE_TSK｣で始まる行があれば、その直前に｢#define TA_HLNG 0x12345678｣を追加してファイルとして出力する機能
以下のシステムコンフィギュレーションファイルを入力して、カーネルのコンフィギュレーション手順を実行する。
(システムコンフィギュレーションファイルの内容)
INCLUDE(“<kernel.h>”);INCLUDE(“\”task1.h\””);#defineEXINF_1
0x00000001#defineITSKPRI_1 0x0001#define
STKSZ
0x0100
CRE_TSK(TASK_ID1,{TA_HLNG|0x00,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL});

テスト
項目参照

静的APIの文法とパラメータ-1,2,4,5

ただし、以下の内容のヘッダファイル｢task1.h｣を用意しておくこと。
(task1.hの内容)
externvoid
TASK1( );３４システムコンフィギュレー
ションファイル-1,2

プリプロセッサからエラーメッセージが出力されないこと。
ソフトウェア部品のコンフィギュレータが、以下の内容を表示すること。
(コンフィギュレータによる表示内容)
INCLUDE(“<kernel.h>”);INCLUDE(“\”task1.h\””);

システムコンフィギュレー
ションファイル-2

CRE_TSK(TASK_ID1,{TA_HLNG|0x00,0x00000001,TASK1,0x0001,0x0100,NULL});
なお、この他に#で始まる行が含まれていてもよい。
56カーネルのコンフィギュレータからエラーメッセージが出力されないこと。
カーネルのコンフィギュレータが、以下の内容のカーネル構成・初期化ファイルを生成し、それが正しくコンパイルできること。
(カーネル構成・初期化ファイルの内容)#include <kernel.h>#include “task1.h”
タスクの初期化データ

7

カーネルのコンフィギュレータが、以下の内容のID自動割付け結果ヘッダファイル｢kernel_id.h｣を生成すること。
(Id自動割付け結果ヘッダファイル｢kernel_id.h｣の内容)#defineTASK_ID1

1

3-8

システムコンフィギュレー
ションファイル-1,2,5
ITRON仕様共通性的API-1

システムコンフィギュレー
ションファイル-3
ITRON仕様共通性的API-1

APIの構成要素-4
システムコンフィギュレー
ションファイル-3
静的APIの文法とパラメータ-6

COM5：
COM5：ITRON仕様共通規定のテスト手順 その５
No

１

2

3

4

テ

ス

ト

手

順

内

容

システムコンフィギュレーションファイルの内容
INCLUDE(“<kernel.h>”);INCLUDE(“\”task1.h\””);#define EXINF_1
0x00000001#define ITSKPRI_1 0x0001#define STKSZ
0x0100
ABC_DEF(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL}) ;静的APIの名称が異なるので、カーネルのコンフィギュレータがエラーを報告すること。
システムコンフィギュレーションファイルの内容
INCLUDE(“<kernel.h>”);INCLUDE(“\”task1.h\””);#define EXINF_1
0x00000001#define ITSKPRI_1 0x0001#define STKSZ
0x0100
CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL};

テスト
項目参照

システムコンフィギュレー
ションファイル-4
静的APIの文法とパラメータ-8

システムコンフィギュレー
ションファイル-4
静的APIの文法とパラメータ-8

静的APIの文法が異なるので、カーネルのコンフィギュレータがエラーを報告すること。
システムコンフィギュレーションファイルの内容
INCLUDE(“<kernel.h>”);INCLUDE(“\”task1.h\””);#define EXINF_1
0x00000001#define ITSKPRI_1 0x0001#define STKSZ
0x0100
CRE_TSK(TASK_ID1,{TA_HLNG,NULL}) ;システムコンフィギュレー
ションファイル-4
静的APIの文法とパラメータ-8

静的APIのパラメータ数が少ないので、カーネルのコンフィギュレータがエラーを報告すること。
ただし、上記記述を許可するようにコンフィギュレータが拡張されていた場合は、テストを省略することができる。
システムコンフィギュレーションファイルの内容
INCLUDE(“<kernel.h>”);INCLUDE(“\”task1.h\””);#define EXINF_1
0x00000001#define ITSKPRI_1 0x0001#define STKSZ
0x0100
CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,NULL,NULL});

システムコンフィギュレー
ションファイル-4
静的APIの文法とパラメータ-8

静的APIのパラメータ数が多いので、カーネルのコンフィギュレータがエラーを報告すること。
ただし、上記記述を許可するようにコンフィギュレータが拡張されていた場合は、テストを省略することができる。
COM6：
COM6：ITRON仕様共通規定のテスト手順 その６
No
１

テ

ス

ト

手

順

内

容

アプリケーションプログラムとリンクしてカーネルを用いる場合、カーネルオブジェクトのシンボルをダンプし、C言語レベルで内部識
別子が _kernel_ または _KERNEL_ で始まる名称であること。

テスト
項目参照
カーネルとソフトウェア
部品の内部識別子-1

COM7：
COM7：ITRON仕様共通規定のテスト手順 その７
No

テ

ス

ト

手

順

内

容

S1

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})

−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

1 == sizeof(B)b1 = -1
b1 < 01 == sizeof(UB)
ub1 = -1
ub1 > 02 == sizeof(H)h1 = -1
h1 < 02 == sizeof(UH)uh1 = -1
uh1 > 04 == sizeof(W)w1 = -1
w1 < 04 == sizeof(UW)
uw1 = -1
uw1 > 01 == sizeof(VB)
2 == sizeof(VH)
4 == sizeof(VW)
sizeof(void *) == sizeof(VP)sizeof(void *) == sizeof(FP)2 ≦ sizeof(INT)<TASK_ID1:REDAY>

テスト
項目参照
−
ITRON仕様共通データ型-1
ITRON仕様共通データ型-1
ITRON仕様共通データ型-4
ITRON仕様共通データ型-4
ITRON仕様共通データ型-2
ITRON仕様共通データ型-2
ITRON仕様共通データ型-5
ITRON仕様共通データ型-5
ITRON仕様共通データ型-3
ITRON仕様共通データ型-3
ITRON仕様共通データ型-6
ITRON仕様共通データ型-6
ITRON仕様共通データ型-7
ITRON仕様共通データ型-8
ITRON仕様共通データ型-9
ITRON仕様共通データ型-10
ITRON仕様共通データ型-11
ITRON仕様共通データ型-12

3-9

25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83

int1 = -1
int1 < 0
2 ≦ sizeof(UINT)
uint1 = -1
uint1 > 0
bool1 = TRUE
bool1 == TRUE
bool1 = FALSE
bool1 == FALSE
2 ≦ sizeof(FN)
fn1 = -1
fn1 < 01 ≦ sizeof(ER)er1 = -1
er1 < 02 ≦ sizeof(ID)id1 = -1
id1 < 01 ≦ sizeof(ATR)
atr1 = -1
atr1 > 0
2 ≦ sizeof(STAT)
stat1 = -1
stat1 > 0
1 ≦ sizeof(MODE)
mode1 = -1
mode1 > 0
2 ≦ sizeof(PRI)
pri1 = -1
pri1 < 0sizeof(SIZE) == sizeof(void *)size1 = -1
size1 > 0
2 ≦ sizeof(TMO)
tmo1 = -1
tmo1 < 0
2 ≦ sizeof(RELTIM)
reltim1 = -1
reltim1 > 0
2 ≦ sizeof(SYSTIM)
systim1 = -1
systim1 > 0
sizeof(VP_INT) ≧ sizeof(INT) && sizeof(VP_INT) ≧ sizeof(VP)
vp_int1 = -1
vp_int1 < 0
1 ≦ sizeof(ER_BOOL)
er_bool1 = TRUE
er_bool1 == TRUE
er_bool1 = FALSE
er_bool1 == FALSE
er_bool1 = -1
er_bool1 < 0
2 ≦ sizeof(ER_ID)
er_id1 = -1
er_id1 < 0
2 ≦ sizeof(ER_UINT)
er_uint1 = -1
er_uint1 < 0
ext_tsk( )3-10

ITRON仕様共通データ型-12
ITRON仕様共通データ型-13
ITRON仕様共通データ型-13
ITRON仕様共通データ型-14
ITRON仕様共通データ型-14
ITRON仕様共通データ型-15
ITRON仕様共通データ型-15
ITRON仕様共通データ型-16
ITRON仕様共通データ型-16
ITRON仕様共通データ型-17
ITRON仕様共通データ型-17
ITRON仕様共通データ型-18
ITRON仕様共通データ型-18
ITRON仕様共通データ型-19
ITRON仕様共通データ型-19
ITRON仕様共通データ型-20
ITRON仕様共通データ型-20
ITRON仕様共通データ型-21
ITRON仕様共通データ型-21
ITRON仕様共通データ型-22
ITRON仕様共通データ型-22
ITRON仕様共通データ型-23
ITRON仕様共通データ型-23
ITRON仕様共通データ型-24
ITRON仕様共通データ型-24
ITRON仕様共通データ型-25
ITRON仕様共通データ型-25
ITRON仕様共通データ型-26
ITRON仕様共通データ型-26
ITRON仕様共通データ型-27
ITRON仕様共通データ型-27
ITRON仕様共通データ型-27
ITRON仕様共通データ型-27
ITRON仕様共通データ型-28
ITRON仕様共通データ型-28
ITRON仕様共通データ型-29
ITRON仕様共通データ型-29

COM8：
COM8：ITRON仕様共通規定のテスト手順 その８
No
S1
S2

テ

ス

ト

手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})CRE_SEM(SEM_ID1,{TA_TFIFO,ISEMCNT_0,MAXSEM_FFFF})<TASK_ID1:READY>−
1

ercd = pol_sem(SEM_ID1)

2(ER)(B)ercd == E_TMOUT

3

ercd >> 8 < 04
5
6

MERCD(ercd) == (ER)(B)ercd
SERCD(ercd) == ercd >> 8
ext_tsk( )−サービスコールの返値とエ
ラーコード-2
サービスコールの返値とエ
ラーコード-2
ITRON仕様共通マクロ-1
ITRON仕様共通マクロ-2

SPC1：
SPC1：μITRON4.0仕様の概念と共通のテスト手順 その1
No
S1
S2
S3
S4
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

テ

ス

ト

手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG|TA_ACT,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})CRE_SEM(SEM_ID1,{TA_TFIFO,ISEMCNT_0,MAXSEM_1})<TASK_ID<TASK_ID<TASK_ID<TASK_ID1:DORMANT>_ID1:DORMANT><TASK_ID2:_ID2: DORMANT><TASK_ID3:_ID3: READY>
ercd = act_tsk(TASK_ID2)
ercd = wai_sem(SEM_ID1)
MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID1)
ercd = wai_sem(SEM_ID1)
MERCD(ercd) == E_OK
ercd = sus_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = sig_sem(SEM_ID1)
MERCD(ercd) == E_OK
ercd = rel_wai(TASK_ID2)
MERCD(ercd) == E_OBJ
ercd = sig_sem(SEM_ID1)
MERCD(ercd) == E_OK
ercd = slp_tsk( )MERCD(ercd) == E_OK
ercd = rsm_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = wai_sem(SEM_ID1)
MERCD(ercd) == E_OK
ercd = sus_tsk(TASK_ID1)
MERCD(ercd) == E_OK
ercd = sus_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = wup_tsk(TASK_ID1)
ercd = E_OK
ercd = rsm_tsk(TASK_ID1)
MERCD(ercd) == E_OK
ext_tsk( )MERCD(ercd) == E_OK
ercd = rsm_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = sig_sem(SEM_ID1)
MERCD(ercd) == E_OK
ext_tsk( )MERCD(ercd) == E_OK
ext_tsk( )−タスク状態-1
タスク状態-1

タスク状態-1

タスク状態-2

タスク状態-2

SPC2：
SPC2：μITRON4.0仕様の概念と共通のテスト手順 その2
No
S1
S2
S3
S4
S5
−
1
2
3
4
5
6
7

テ

ス

ト

手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID2_1,{TA_HLNG,EXINF_2,TASK2_1,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID2_2,{TA_HLNG,EXINF_2,TASK2_2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG|TA_ACT,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})<TASK_ID<TASK_ID<TASK_ID<TASK_ID<TASK_ID1:DORMANT>_ID1:DORMANT><TASK_ID2:_ID2: DORMANT><TASK_ID2_1:_ID2_1: DORMANTDORMANT><TASK_ID2_2:_ID2_2: DORMANTDORMANT><TASK_ID<TASK_ID3:READY>_ID3:READY>
ercd = act_tsk(TASK_ID2)−

ercd = act_tsk(TASK_ID2_1)
ercd = E_OK
ercd = act_tsk(TASK_ID2_2)
ercd = E_OK
ercd = act_tsk(TASK_ID1)

exinf == EXINF_1

タスクのスケジューリング規則-1,2

3-11

8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

ercd = slp_tsk( )MERCD(ercd) == E_OK
ercd = slp_tsk( )タスクのスケジューリング規則-４
ercd = wup_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = wup_tsk(TASK_ID1)

タスクのスケジューリング規則-３

MERCD(ercd) == E_OK
ext_tsk( )MERCD(ercd) == E_OK
ext_tsk( )タスクのスケジューリング規則-７
ext_tsk( )MERCD(ercd) == E_OK
ext_tsk( )タスクのスケジューリング規則-8

MERCD(ercd) == E_OK
ext_tsk( )SPC3：
SPC3：μITRON4.0仕様の概念と共通のテスト手順 その3
No
S1
S2
−
1
2
3
4
5
6
7
8

テ

ス

ト

手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})<TASK_ID<TASK_ID<TASK_ID1:DORMANT>_ID1:DORMANT><TASK_ID2:_ID2: READY>
ercd = dis_dsp( )MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID1)
MERCD(ercd) == E_OK
ercd = ena_dsp( )ext_tsk( )MERCD(ercd) == E_OK
ext_tsk( )−タスクのスケジューリング規則-5

SPC4：
SPC4：μITRON4.0仕様の概念と共通のテスト手順 その4
テスト
項目参照

No

テ

S1
S2
S3
S4
S5
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14

CRE_TSK(TASK_ID4,{TA_HLNG|TA_ACT,EXINF_4,TASK4,ITSKPRI_4,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG|TA_ACT,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})
CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
DEF_INH(INHNO_1,{INHATR,INTHDR_1})<TASK_ID<TASK<TASK_ID<TASK_ID<TASK_ID1:READY>_ID1:READY><TASK_ID
SK_ID2:READY>_ID2:READY><TASK_ID3:READY>_ID3:READY><TASK_ID4:READY>_ID4:READY>
１回目
２回目
ext_tsk( )<INTHDR_1の割込み発生>

ス

ト

手

順

内

容

<INTHDR_1:割込みハンドラ<INTHDR_1:割込みハンドラ>
割込みハンドラ>−

ercd = iact_tsk(TASK_ID1)
MERCD(ercd) == E_OK
returnext_tsk( )ercd = slp_tsk( )ercd = wup_tsk(TASK_ID2)

MERCD(ercd) == E_OK
ext_tsk( )MERCD(ercd) == E_OK
ext_tsk( )ext_tsk( )タスクのスケジューリング規則-6

SPC5：
SPC5：μITRON4.0仕様の概念と共通のテスト手順 その5
No
S1
S2
S3
−
1
2
3

テ

ス

ト

手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})DEF_EXC(EXCNO_1,{EXCATR,EXCHDR_1})
DEF_EXC(EXCNO_2,{EXCATR,EXCHDR_2})<TASK_ID<TASK_ID1:READY>_ID1:READY><EXCHDR_1:CPU例外ハンドラ<EXCHDR_1:CPU例外ハンドラ>
例外ハンドラ>EXCNO_1のCPU例外を発生させる
returnext_tsk( )例外処理の枠組み-2−
例外処理の枠組み-1

SPC6：
SPC6：μITRON4.0仕様の概念と共通のテスト手順 その6
No
S1
S2
S3
S4
−
1
2
3
4

テ

ス

ト

手

順

内

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})DEF_TEX(TASK_ID1,{TA_HLNG,TEXRTN_1})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})DEF_TEX(TASK_ID2,{TA_HLNG,TEXRTN_2})<TASK_ID<TASK_ID<TASK_ID1_ID1のタスク例外処理ルーチン>のタスク例外処理ルーチン><TASK_ID<TASK_ID1:READY>_ID1:READY><TASK_ID2:READY>_ID2:READY>
ercd = ras_tex(TASK_ID1,RASPTN_1)
exinf == EXINF_1
returnext_tsk( )

3-12

テスト
項目参照

容

<TASK_ID2<TASK_ID2のタスク例外処理ルーチン_ID2のタスク例外処理ルーチン>のタスク例外処理ルーチン>−

例外処理の枠組み-3

5
6
7
8

ercd = ras_tex(TASK_ID2,RASPTN_2)

exinf == EXINF_2
return

例外処理の枠組み-4

ext_tsk( )SPC7：
SPC7：μITRON4.0仕様の概念と共通のテスト手順 その7
No

テ

ス

ト

手

順

内

S1
S2
S3
S4
−
1

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
DEF_INH(INHNO_1,{INHATR,INTHDR_1})
CRE_CYC(CYC_ID1,{TA_HLNG,EXINF_2,CYCHDR_1,CYCTIM_10,CYCPHS_5})
DEF_EXC(EXCNO_1,EXCATR,EXCHDR_1)<INHNO_1:割込みハンドラ<EXCHDR_1:CPU例外ハンドラ<TASK_ID<INHNO_1:割込みハンドラ>
割込みハンドラ><EXCHDR_1:CPU例外ハンドラ>
例外ハンドラ><TASK_ID1:READY>_ID1:READY>
state = sns_ctx( )2state == FALSE

34

INHNO_1の割込みを発生させる<CYC_ID1:周期ハンドラ<CYC_ID1:周期ハンドラ>
周期ハンドラ>−タスクコンテキストと非タスクコンテキスト-1

state = sns_ctx( )タスクコンテキストと非タスクコンテキスト-２

5state == TRUE

6

ercd = iact_tsk(TSK_SELF)

7

MERCD(ercd) == E_ID

89EXCNO_1のCPU例外発生を発生させる

タスクコンテキストと非タスクコンテキスト-３
state = sns_ctx( )10state == TRUE

11
12
13

returnercd = sta_cyc(CYC_ID1)

14

MERCD(ercd) == E_OK

1516ercd = dly_tsk(DLYTIM_20)

タスクコンテキストと非タスクコンテキスト-５

returnstate = sns_ctx( )state == TRUE

17
18
19
20
21
22

テスト
項目参照

容

タスクコンテキストと非タスクコンテキスト-２

returnMERCD(ercd) == E_OK
ercd = stp_cyc(CYC_ID1)
MERCD(ercd) == E_OK
ext_tsk( )SPC8：
SPC8：μITRON4.0仕様の概念と共通のテスト手順 その8
No
S1
S2
S3
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

テ

ス

ト

手

順

内

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
DEF_INH(INHNO_1,{INHATR,INTHDR_1})
CRE_CYC(CYC_ID1,{TA_HLNG,EXINF_2,CYCHDR_1,CYCTIM_10,CYCPHS_5})<INHNO_1:<TASK_ID
INHNO_1:割込みハンドラ>
割込みハンドラ><TASK_ID1:READY>_ID1:READY>
state = sns_loc( )state == FALSE
ercd = loc_cpu( )MERCD(ercd) == E_OK
state = sns_loc( )state == TRUE
INHNO_1の割込みを発生させる
CPUロック状態なので、割込みハンドラは起動されない
ercd = loc_cpu( )MERCD(ercd) == E_OK
state = sns_ctx( )state == FALSE
state = sns_loc( )state == TRUE
state = sns_dsp( )state == FALSE
state = sns_dpn( )state == TRUE
state = sns_tex( )state == TRUE
ercd = unl_cpu( )ercd = iloc_cpu( )MERCD(ercd) == E_OK
ercd = iloc_cpu( )MERCD(ercd) == E_OK
state = sns_loc( )state == TRUE
ercd = iunl_cpu( )MERCD(ercd) == E_OK

3-13

テスト
項目参照

容

<CYC_ID1:CYC_ID1:周期起動ハンドラ>
周期起動ハンドラ>−
CPUロック状態-15

CPUロック状態-1
CPUロック状態-2
CPUロック状態-6
CPUロック状態-7
CPUロック状態-8
CPUロック状態-9
CPUロック状態-10

CPUロック状態-3

CPUロック状態-530state = sns_loc( )31state == FALSE
32
return33 MERCD(ercd) == E_OK
34 ercd = sta_cyc(CYC_ID1)
35 MERCD(ercd) == E_OK
36 ercd = loc_cpu( )37 MERCD(ercd) == E_OK
38 50msec以上のソフトウェアディレーを入れる
39 CPUロック状態なので周期ハンドラは起動されない
40 ercd = unl_cpu( )41 MERCD(ercd) == E_OK
42 50msecのソフトウェアディレーを入れる
43
state = sns_loc( )state== FALSE
4445
return46 ercd = stp_cyc(CYC_ID1)
47 MERCD(ercd) == E_OK
48 ext_tsk( )（注）S2 DEF_INHをサポートしていないシステムでは、以下のように置換し、SPC8のテストを実施すること。
S2 ATT_ISR({TA_HLNG,EXINF_1,INTNO_1,ISR_1})

CPUロック状態-4

CPUロック状態-1

CPUロック状態-13

SPC9：
SPC9：μITRON4.0仕様の概念と共通のテスト手順 その9
No

テ

ス

ト

手

順

内

容

S1 CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})S2 ATT_ISR({TA_HLNG,EXINF_1,INTNO_1,ISR_1})−<INTNO_1:<TASK_ID
INTNO_1:割込みサービスルーチン>
割込みサービスルーチン><TASK_ID1:READY>_ID1:READY>INTNO_1の割込み番号に対応する割込みを発生させる
1
2state = sns_loc( )3MERCD(ercd) == FALSE
4
return5ext_tsk( )（注）
ATT_ISRをシステムがサポートしていない場合は、SPC9のテストを省略することができる。

テスト
項目参照

−

CPUロック状態-13

SPC10：SPC10：μITRON4.0仕様の概念と共通のテスト手順 その10
No
S1
S2
S3
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

テ

ス

ト

手

順

内

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})DEF_EXC(EXCNO_1,{EXCATR,EXCHDR_1})
DEF_TEX(TASK_ID1,{TA_HLNG,TEXRTN_1})<EXCNO_1:
EXCNO_1:CPU例外ハンドラ
CPU例外ハンドラ>
例外ハンドラ><TASK_ID<TASK_ID<TASK_ID1_ID1:タスク例外処理ルーチン>
タスク例外処理ルーチン><TASK_ID1:READY>_ID1:READY>
１回目
２回目
ercd = loc_cpu( )MERCD(ercd) == E_OK
EXCNO_1のCPU例外を発生させる
state = sns_loc( )state == TRUE
returnstate = sns_loc( )state == TRUE
ercd = unl_cpu( )MERCD(ercd) == E_OK
EXCNO_1のCPU例外を発生させる
state = sns_loc( )state == FALSE
returnstate = sns_loc( )state == FALSE
ercd = ena_tex( )MERCD(ercd) == E_OK
ercd = loc_cpu( )MERCD(ercd) == E_OK
state = sns_loc( )state == TRUE
ercd = unl_cpu( )MERCD(ercd) == E_OK
ercd = ras_tex(TASK_ID1,RASPTN_1)
state = sns_loc( )state == FALSE
returnMERCD(ercd) == E_OK
state = sns_loc( )state == FALSE
ext_tsk( )

3-14

テスト
項目参照

−

CPUロック状態-14

CPUロック状態-14

CPUロック状態-14

CPUロック状態-14

CPUロック状態-17

CPUロック状態-16

CPUロック状態-18

SPC11：SPC11：μITRON4.0仕様の概念と共通のテスト手順 その11
No
S1
S2
S3
S4
S5
S6
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66

テ

ス

ト

手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})DEF_TEX(TASK_ID2,{TA_HLNG,TEXRTN_2})
DEF_INH(INHNO_1,{INHATR,INTHDR_1})
CRE_CYC(CYC_ID1,{TA_HLNG,EXINF_2,CYCHDR_1,CYCTIM_10,CYCPHS_5})
CRE_SEM(SEM_ID1,{TA_TFIFO,ISEMCNT_1,MAXSEM_2})<TEXRTN_2:<INHNO_1:
タスク例外処理ルーチン＞
割込みハンドラ＞<TASK_ID1:DORMANT><TASK_2:READY>
１回目
２回目
１回目
２回目
state = sns_dsp( )state == FALSE
ercd = dis_dsp( )MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID1)
MERCD(ercd) == E_OK
ercd = pol_sem(SEM_ID1)
MERCD(ercd) == E_OK
ercd = get_tid(p_tskid)
MERCD(ercd) == E_OK
tskid == TASK_ID2
ercd = loc_cpu( )MERCD(ercd) == E_OK
state = sns_dsp( )state == TRUE
ercd = unl_cpu( )MERCD(ercd) == E_OK
state = sns_dsp( )state == TRUE
INTNO_1の割込み発生
returnstate = sns_dsp( )state == TRUE
ercd = sta_cyc(CYC_ID1)
MERCD(ercd) == E_OK
ソフトウェアでDLYTIM_20以上のディレーを作成<CYC_ID1:周期起動ハンドラ<CYC_ID1:周期起動ハンドラ>
周期起動ハンドラ>
１回目

−

２回目
ディスパッチ禁止状態-7

ディスパッチ禁止状態-1
ディスパッチ禁止状態-9
ディスパッチ禁止状態-2
ディスパッチ禁止状態-2

ディスパッチ禁止状態-11

ディスパッチ禁止状態-10

ディスパッチ禁止状態-4

ercd = iact_tsk(TASK_ID1)
MERCD(ercd) == E_OK
returnディスパッチ禁止状態-3

ercd = stp_cyc(CYC_ID1)
MERCD(ercd) == E_OK
state = sns_dsp( )state == TRUE
ercd = ena_tex( )MERCD(ercd) == E_OK
ercd = ras_tex(TASK_ID2,RASPTN_2)

ディスパッチ禁止状態-6

returnstate = sns_dsp( )state == TRUE
ercd = ena_dsp( )ディスパッチ禁止状態-8

actcnt = can_act(TSK_SELF)
actcnt == 1
ext_tsk( )MERCD(ercd) == E_OK
INTNO_1の割込み発生
returnstate = sns_dsp( )state = FALSE
ercd = sta_cyc(CYC_ID1)
MERCD(ercd) == E_OK
ercd = dly_tsk(DLYTIM_20)

ディスパッチ禁止状態-4
returnMERCD(ercd) == E_OK
state = sns_dsp( )state == FALSE
ercd = ras_tex(TASK_ID2,RASPTN_2)

ディスパッチ禁止状態-6
returnMERCD(ercd) == E_OK
state = sns_dsp( )state == FALSE
ercd = loc_cpu( )MERCD(ercd) == E_OK
state = sns_dsp( )state == FALSE
ercd = unl_cpu( )MERCD(ercd) == E_OK

ディスパッチ禁止状態-8

ディスパッチ禁止状態-11

3-15

67

ext_tsk( )

(注)
S4

S4

DEF_INHをサポートしていないシステムでは、以下のように置換し、SPC11のテストを実施すること。
ATT_ISR({TA_HLNG,EXINF_1,INTNO_1,ISR_1})
なお、DEF_INHとATT_ISRの両方をサポートしているシステムでは、SPC11記載のテストとATT_ISRに置換したテストの２通りを実施すること。

SPC12：SPC12：μITRON4.0仕様の概念と共通のテスト手順 その12
No
S1
S2
S3
−
1
2
3
4
5

テ

ス

ト

手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
DEF_INH(INHNO_1,{INHATR,INTHDR_1})<TASK_ID<TASK_ID<TASK_ID1:DORMANT>_ID1:DORMANT><TASK_ID2:_ID2:R
2:READY>
EADY><INHNO_1:割込みハンドラ<INHNO_1:割込みハンドラ>
割込みハンドラ>INHNO_1の割込み発生
ercd = iact_tsk(TASK_ID1)
MERCD(ercd) == E_OK
ercd = iget_tid(p_tskid)
MERCD(ercd) == E_OK

6tskid == TASK_ID2

7

return8

ディスパッチ保留状態の間のタスク状態-1
ディスパッチ保留状態の間のタスク状態-1

ext_tsk( )9−ext_tsk( )SPC13：SPC13：μITRON4.0仕様の概念と共通のテスト手順 その13
No

テ

ス

ト

手

順

内

容

S1
S2
−
1

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
DEF_INH(INHNO_1,{INHATR,INTHDR_1})<TASK_ID<TASK_ID1:READY>_ID1:READY><INHNO_1:割込みハンドラ<INHNO_1:割込みハンドラ>
割込みハンドラ>state = sns_ctx( )2state == FALSE

3state = sns_loc( )4state == FALSE

5state = sns_dsp( )6state == FALSE

7state = sns_dpn( )8state == FALSE

9state = sns_tex( )10state == TRUE

11
12

INHNO_1の割込み発生

テスト
項目参照

−
非タスクコンテキストから呼び出せるサービスコール−14
非タスクコンテキストから呼び出せるサービスコール−1５
非タスクコンテキストから呼び出せるサービスコール−1６
非タスクコンテキストから呼び出せるサービスコール−1７
非タスクコンテキストから呼び出せるサービスコール−1８

state = sns_ctx( )13state == TRUE

14

state = sns_loc( )15state == FALSE

16

state = sns_dsp( )17state == FALSE

18

state = sns_dpn( )19state == TRUE

20

state = sns_tex( )21state == TRUE

22

ercd = isig_tim( )23

MERCD(ercd) == E_OK

24
return25 ext_tsk( )（注）No.19 isig_timサービスコールをサポートしていないシステムでは、テストを省略できる。

3-16

非タスクコンテキストから呼び出せるサービスコール−1４
非タスクコンテキストから呼び出せるサービスコール−1５
非タスクコンテキストから呼び出せるサービスコール−1６
非タスクコンテキストから呼び出せるサービスコール−1７
非タスクコンテキストから呼び出せるサービスコール−18
非タスクコンテキストから呼び出せるサービスコール−９

SPC14：SPC14：μITRON4.0仕様の概念と共通のテスト手順 その14
No
S1
S2
S3
−
1
2
3
4
5
6
7
8

テ

ス

ト

手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG,EXINF_2,TASK2,ITSKPRI_1,STKSZ,NULL})
DEF_INH(INHNO_1,{INHATR,INTHDR_1})<TASK_ID<TASK_ID2<TASK_ID1:READY>_ID1:READY><TASK_ID2:DORMAN_ID2:DORMANT:DORMANT><INHNO_1:割込みハンドラ<INHNO_1:割込みハンドラ>
割込みハンドラ>INHNO_1の割込み発生
ercd = iact_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = irot_rdq(TSKPRI_1)
MERCD(ercd) == E_OK
returnext_tsk( )ext_tsk( )−サービスコールの遅延実行−１

SPC15：SPC15：μITRON4.0仕様の概念と共通のテスト手順 その15
No

テ

S1
S2
S3
S4
S5

ATT_INI({INIATR,EXINF_1,INIRTN_1})
ATT_INI({INIATR,EXINF_2,INIRTN_2})
CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG,EXINF_2,TASK2,ITSKPRI_1,STKSZ,NULL})
DEF_INH(INHNO_1,{INHATR,INTHDR_1})<INIRTN_1:初期化ルーチン＞<INIRTN_2:初期化ルーチ<INIRTN_1:初期化ルーチン＞<INIRTN_2:初期化ルーチン＞
初期化ルーチン＞<INHNO_1:割込みハンドラ＞<TASK_ID1:READY＞<INHNO_1:割込みハンドラ＞ <TASK_ID1:READY＞
カーネルの動作開始前に実行
カーネルの動作開始前に実行
INHNO_1の割込み発生
returnreturnercd = iact_tsk(TASK_ID2)
MERCD(ercd) == E_OK
returnext_tsk( )

−
1
2
3
4
5
6
7
8

ス

ト

手

順

内

テスト
項目参照

容

<TASK_ID2:DORMANT＞<TASK_ID2:DORMANT＞−

システム初期化手順-2,8
システム初期化手順-9

ext_tsk( )システム初期化手順-1

SPC16：SPC16：μITRON4.0仕様の概念と共通のテスト手順 その16
No
S1
S2
S3
・
S255

テ

ス

ト

手

順

内

テスト
項目参照

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})CRE_SEM(SEM_ID1,{TA_TFIFO,ISEMCNT_1,MAXSEM_2})
CRE_SEM(SEM_ID2,{TA_TFIFO,ISEMCNT_1,MAXSEM_2})
・
CRE_SEM(SEM_ID254,{TA_TFIFO,ISEMCNT_1,MAXSEM_2})

S256 CRE_SEM(SEM_ID255,{TA_TFIFO,ISEMCNT_1,MAXSEM_2})
−
1
2
3
4
5

容

<TASK_ID<TASK_ID1:READY>_ID1:READY>
ercd = pol_sem(SEM_ID1)
MERCD(ercd) == E_OK
ercd = pol_sem(SEM_ID255)
MERCD(ercd) == E_OK
ext_tsk( )オブジェクトのID番号とオブジェクト番号-1−

オブジェクトの登録とその削除-1

3-17

TSK1：
TSK1：タスク管理機能のテスト手順

その1

No
S1
S2
S3
S4
S5
S6
S7
S8
S9
S10
S11
S12
S13
S14
−

テ

ス

ト

手

順

内

容

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(ERR_TASK_ID,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
E_IDを検出できること
CRE_TSK(TASK_ID3,{ERR_TSKATR,TASK1,ITSKPRI_1,STKSZ,NULL})E_RSATRを検出できること
CRE_TSK(TASK_ID3,{TA_HLNG,EXINF_1,ERR_TASK,ITSKPRI_3,STKSZ,NULL})
E_PARを検出できること
CRE_TSK(TASK_ID3,{TA_HLNG,EXINF_1,TASK1,ERR_ITSKPRI,STKSZ,NULL})
E_PARを検出できること
CRE_TSK(TASK_ID3,{TA_HLNG,EXINF_1,TASK3,ITSKPRI_3,ERR_STKSZ,NULL})
E_PARを検出できること
CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
E_OBJを検出すること<TASK_ID<TASK_ID2:_ID2: READY><TASK_ID<TASK_ID1:DORMANT>_ID1:DORMANT>
１回目
２回目
exinf == EXINF_2
actcnt = can_act(TSK_SELF)
actcnt == 0
ercd = ras_tex(TSK_SELF,RASPTN_1)
MERCD(ercd) == E_OBJ
ercd = act_tsk(TASK_ID1)
ercd = chg_pri(TASK_ID2,TSKPRI_3)
MERCD(ercd) == E_OK
ercd = wup_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = sus_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = ter_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ext_tsk( )ercd = get_pri(TSK_SELF,p_tskpri)
MERCD(ercd) == E_OK
tskpri == ITSKPRI_2
wupcnt = can_wup(TSK_SELF)
wupcnt == 0
ext_tsk( )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
24
(注)
No.S8
No.S12

CRE_TSK-2
CRE_TSK-3
CRE_TSK-4
CRE_TSK-5
CRE_TSK-6−
CRE_TSK-9,11
タスク管理機能-1
タスク管理機能-2
CRE_TSK-8

タスク管理機能-3
タスク管理機能-4

その2

No

テ ス

S1
S2
−
1
2
3
4
5

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})<TASK_ID<TASK_ID<TASK_ID1:DORMANT>_ID1:DORMANT><TASK_ID2:READY>_ID2:READY>
ercd = act_tsk(ERR_TASK_ID)
MERCD(ercd) ==E_ID
ercd = act_tsk(TSK_SELF)
MERCD(ercd) == E_OK
actcnt = can_act(TSK_SELF)

ト

手

順

内

容

6

actcnt == 1

7
8
9
10
11
12
13
14
15
16
17
18
19

actcnt = can_act(TSK_SELF)
actcnt == 0
actcnt = can_act(ERR_TASK_ID)
actcnt == E_ID
ercd = act_tsk(TASK_ID1)

21
22
23

CRE_TSK-1

E_PARエラーを検出できるERR_TASKがシステムに存在しない場合は、テストを省略することができる。
E_PARエラーを検出できるERR_STKSZがシステムに存在しない場合は、テストを省略することができる。

TSK2：
TSK2：タスク管理機能のテスト手順

20

テスト
項目参照

exinf == EXINF_1
ercd = act_tsk(TASK_ID2)
MERCD(ercd) == E_OK
actcnt = can_act(TASK_ID2)
actcnt == 1
ercd = act_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID2)
TMAX_ACTCNT = 1：MERCD(ercd) == E_QOVR
TMAX_ACTCNT > 1：MERCD(ercd) == E_OK
ext_tsk( )

テスト
項目参照

−
act_tsk-1
act_tsk-7
act_tsk-7
can_act-4
can_act-2
can_act-1
act_tsk-3,5

can_act-3

act_tsk-2

MERCD(ercd) == E_OK
actcnt = can_act(TSK_SELF)

3-18

TMAX_ACTCNT = 1
TMAX_ACTCNT > 1
ext_tsk( )

24
25
TSK3：
TSK3：タスク管理機能のテスト手順：actcnt == 1
：actcnt == 2

act_tsk-6

その3

No

テ

ス

ト

手

順

内

テスト
項目参照

容

S1
S2
S3
−
1
2
3
4
5
6

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
DEF_INH(INHNO,{INHATR,INTHDR_1})<TASK_ID<TASK_ID<INTHDR_1:割込みハンドラ<TASK_ID1:DORMANT>_ID1:DORMANT><TASK_ID2:READY>_ID2:READY><INTHDR_1:割込みハンドラ>
割込みハンドラ>INTHDR_1の割込みを発生させる
ercd = iact_tsk(ERR_TASK_ID)
MERCD(ercd) == E_ID
ercd = iact_tsk(TSK_SELF)
MERCD(ercd) == E_ID
ercd = iact_tsk(TASK_ID2)

7

MERCD(ercd) == E_OK

非タスクコンテキストから呼び出せるサービスコール-1

8iact_tsk-2

10

ercd = iact_tsk(TASK_ID2)
TMAX_ACTCNT = 1 ：MERCD(ercd) == E_QOVR
TMAX_ACTCNT > 1 ：MERCD(ercd) == E_OK
ercd = iact_tsk(TASK_ID1)

11

MERCD(ercd) == E_OK

12
13
14
15

return9−iact_tsk-1
iact_tsk-7

処理の優先順位とサービス
コールの不可分性-1

exinf == EXINF_1
ext_tsk( )iact_tsk-3,5
actcnt == can_act(TSK_SELF)
TMAX_ACTCNT = 1：actcnt == 1
TMAX_ACTCNT > 1：actcnt == 2
ext_tsk( )16iact_tsk-6

17(注)
No.S3 DEF_INHサービスコールをサポートしていないシステムでは、ATT_ISRサービスコールに置換に、テストを実施すること。
N0.9
E_QOVRエラーの検出を省略することが製品マニュアルに記載されている場合：MERCD(ercd) == E_OK または E_QOVR
TSK4：
TSK4：タスク管理機能のテスト手順

その4

No
S1
S2
−
1
2
3
4
5
6
7
8
9
10
11
12

テ

S1
S2
−
1
2
3
4
5
6
7
8
9
10
11
12

ト

手

順 内

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL}<TASK_ID2:DORMANT><TASK_ID1:READY>
１回目
２回目
ercd = act_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ext_tsk( )ercd =
get_pri(TASK_ID1,p_tskpri)
MERCD(ercd) == E_OBJ
ext_tsk( )exinf == EXINF_2
actcnt = can_act(TSK_SELF)
actcnt == 0
ext_tsk( )TSK5：
TSK5：タスク管理機能のテスト手順
No

ス

テスト
項目参照

−

ext_tsk-1
ext_tsk-4,5
ext_tsk-2

その5
テ

ス

ト

手

順

内

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})<TASK_ID2:DORMANT><TASK_ID1:READY>
１回目
２回目
ercd = act_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID2)
MERCD(ercd) == E_OK
returnercd =
get_pri(TASK_ID1,p_tskpri)
MERCD(ercd) == E_OBJ
returnexinf == EXINF_2
actcnt = can_act(TSK_SELF)
actcnt == 0
return

3-19

テスト
項目参照

−

return-1
return-4
return-2

TSK6：
TSK6：タスク管理機能のテスト手順

その6

No
S1
S2
S3
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

テ

S1
S2
S3
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

ト

手

順

内

容

CRE_TSK(TASK_ID1_1,{TA_HLNG|TA_ACT,EXINF_1_1,TASK1_1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID1_2,{TA_HLNG,EXINF_1_2,TASK1_2,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})<TASK_ID1_1:READY><TASK_ID1_2:DORMANT><TASK_ID2:READY>
ercd = ter_tsk(ERR_TASK_ID)
このタスクへの状態遷移はない。
MERCD(ercd) == E_ID
ercd = ter_tsk(TASK_ID1_1)
MERCD(ercd) == E_ILUSE
ercd = ter_tsk(TASK_ID1_2)
MERCD(ercd) == E_OBJ
ercd = ter_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = get_pri(TASK_ID2,p_tskpri)
MERCD(ercd) == E_OBJ
ercd = act_tsk(TASK_ID1_2)
MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID1_2)
MERCD(ercd) == E_OK
ercd = ter_tsk(TASK_ID1_2)
MERCD(ercd) == E_OK
ext_tsk( )exinf == EXINF_1_2
ercd = can_act(TSK_SELF)
actcnt == 0
ext_tsk( )TSK7
TSK7：タスク管理機能のテスト手順
No

ス

テスト
項目参照

−
ter_tsk-1
ter_tsk-2
ter_tsk-3

ter_tsk-4

ter_tsk-6,8
ter_tsk-5

その7
テ

ス

ト

手

順

内

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})<TASK_ID1:READY><TASK_ID2:READY><TASK_ID3:DORMANT>
ercd = chg_pri(ERR_TASK_ID,TSKPRI_1)
MERCD(ercd) == E_ID
ercd = chg_pri(TASK_ID2,ERR_TSKPRI)
MERCD(ercd) == E_PAR
ercd = chg_pri(TASK_ID3,TSKPRI_1)
MERCD(ercd) == E_OBJ
ercd = get_pri(ERR_TASK_ID,p_tskpri)
MERCD(ercd) == E_ID
ercd = get_pri(TASK_ID3,p_tskpri)
MERCD(ercd) == E_OBJ
ercd = get_pri(TASK_ID2,p_tskpri)
MERCD(ercd) == E_OK
tskpri == ITSKPRI_2
ercd = get_pri(TSK_SELF,p_tskpri)
MERCD(ercd) == E_OK
tskpri == ITSKPRI_1
ercd = act_tsk(TASK_ID3)
MERCD(ercd) == E_OK
ercd = chg_pri(TASK_ID2,TSKPRI_3)
MERCD(ercd) == E_OK
ercd = chg_pri(TSK_SELF,TSKPRI_3)
ercd = get_pri(TASK_ID2,p_tskpri)
MERCD(ercd) == E_OK
tskpri == TSKPRI_3
ercd = chg_pri(TASK_ID2,TPRI_INI)
ercd = get_pri(TSK_SELF,p_tskpri)
MERCD(ercd) == E_OK
tskpri == ITSKPRI_2
ext_tsk( )MERCD(ercd) == E_OK
ext_tsk( )MERCD(ercd) == E_OK
ercd = chg_pri(TSK_SELF,TPRI_INI)MERCD(ercd) == E_OK
ercd = get_pri(TSK_SELF,p_tskpri)
MERCD(ercd) == E_OK
tskpri == ITSKPRI_1
ext_tsk( )

3-20

テスト
項目参照

−
chg_pri-1
chg_pri-2
chg_pri-3
get_pri-1
get_pri-2

get_pri-3

get_pri-4

chg_pri-7
chg_pri-4

chg_pri-5,8chg_pri-6

SYN1：
SYN1：タスク付属同期機能のテスト手順 その1
No

テ

ス

ト

手

順

内

容

S1
S2
−
1
2
3
4
5
6
7

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})<TASK_ID1:READY><TASK_ID2:DORMANT>
ercd = wup_tsk(ERR_TASK_ID)
MERCD(ercd) == E_ID
ercd = wup_tsk(TASK_ID2)
ercd = E_OBJ
ercd = wup_tsk(TSK_SELF)
MERCD(ercd) == E_OK
ercd = slp_tsk( )8MERCD(ercd) == E_OK

9
10
11
12
13

ercd = act_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = wup_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = wup_tsk(TASK_ID2)
TMAX_WUPCNT = 1：MERCD(ercd) == E_QOVR
TMAX_WUPCNT > 1：MERCD(ercd) == E_OK
ercd = slp_tsk( )

14
15
16
17
18
19
20
21
22

テスト
項目参照

−
wup_tsk-1
wup_tsk-2

slp_tsk-4
wup_tsk-7

wup_tsk-3
ercd = rel_wai(TASK_ID1)

MERCD(ercd) == E_RLWAI
ercd = slp_tsk( )slp_tsk-1

MERCD(ercd) == E_OK
ercd = slp_tsk( )MERCD(ercd) == E_OK
wupcnt = can_wup(TSK_SELF)
TMAX_WUPCNT = 1：wupcnt == 0
TMAX_WUPCNT > 1：wupcnt == 1
ercd = wup_tsk(TASK_ID1)

23
24
25

MERCD(ercd) == E_OK

26
27
28

ext_tsk( )wup_tsk-6
slp_tsk-3
slp_tsk-2
wup_tsk-4,5

MERCD(ercd) == E_OK
ext_tsk( )SYN2：
SYN2：タスク付属同期機能のテスト手順 その2
No

テ

ス

ト

手

順

内

容

S1 CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
S2 CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})<TASK_ID1:READY><TASK_ID2:READY>−
1 ercd = tslp_tsk(ERR_TMO)
2 MERCD(ercd) == E_PAR
3 ercd = tslp_tsk(TMO_POL)
4 MERCD(ercd) == E_TMOUT
5 ercd = wup_tsk(TSK_SELF)
6 MERCD(ercd) == E_OK
7 ercd = tslp_tsk(TMO_POL)
8 MERCD(ercd) == E_OK
9 wupcnt = can_wup(TSK_SELF)
10 wupcnt == 0
11 ercd = tslp_tsk(TMO_10)12ercd = rel_wai(TASK_ID1)
13 MERCD(ercd) == E_RLWAI
14 ercd = tslp_tsk(TMO_2)
15
MERCD(ercd) == E_OK
16ercd = dly_tsk(DLYTIM_2)
17 MERCD(ercd) == E_TMOUT
18 ercd = tslp_tsk(TMO_FEVR)
19
MERCD(ercd) == E_OK
20
ercd = dly_tsk(DLYTIM_1000)
21
MERCD(ercd) == E_OK
22ercd = wup_tsk(TASK_ID1)
23 MERCD(ercd) == E_OK
24 ext_tsk( )25
MERCD(ercd) == E_OK
26
ext_tsk( )(注)No.2 E_PARエラーを検出できるERR_TMOがシステムに存在しない場合は、テストを省略することができる。

3-21

テスト
項目参照

−
tslp_tsk-1
tslp_tsk-3

tslp_tsk-6,8
tslp_tsk-5

tslp_tsk-2

tslp_tsk-3,7tslp_tsk-4,9

SYN3：
SYN3：タスク付属同期機能のテスト手順 その3
No
S1
S2
S3
S4
−
1
2
3
4

テ

ス

ト

手

順

内

6
7
8
9

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})
DEF_INH(INHNO,{INHATR,INTHDR_1})<TASK_ID1:READY><TASK_ID2:READY><INTHDR_1:割込みハンドラ<INTHDR_1:割込みハンドラ>
割込みハンドラ>
ercd = slp_tsk( )INTHDR_1の割込み発生
ercd = iwup_tsk(TSK_SELF)
MERCD(ercd) == E_ID
ercd =
iwup_tsk(ERR_TASK_ID)
MERCD(ercd) == E_ID
ercd = iwup_tsk(TASK_ID3)
MERCD(ercd) == E_OBJ (注)ercd = iwup_tsk(TASK_ID1)

10

MERCD(ercd) == E_OK

11
12
13

ercd = iwup_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = iwup_tsk(TASK_ID2)
TMAX_WUPCNT == 1：
MERCD(ercd) == E_QOVR (注)TMAX_WUPCNT > 1：
MERCD(ercd) == E_OK
return

5

14

テスト
項目参照

容

<TASK_ID3:DORMANT>

iwup_tsk-1
iwup_tsk-2

iwup_tsk-3

iwup_tsk-4,5

iwup_tsk-6

その4
テ

No
S1
S2
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

iwup_tsk-7

非タスクコンテキストから呼び出せるサービスコール-２

15
16
MERCD(ercd) == E_OK
17
ext_tsk( )18ercd = tslp_tsk(TMO_POL)
19
MERCD(ercd) == E_OK
20
ext_tsk( )このタスクへの状態遷移はない
21
(注)
No.6
E_OBJエラーの検出を省略することが製品マニュアルに記載されている場合 ：MERCD(ercd) == E_OK
No.12 E_QOVRエラーの検出を省略することが製品マニュアルに記載されている場合：MERCD(ercd) == E_OK
SYN4：
SYN4：タスク付属同期機能のテスト手順

−

ス

ト

手

順

内

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})<TASK_ID1:READY><TASK_ID2:DORMANT><TASK_ID1:READY>
ercd = can_wup(ERR_TASK_ID)
MERCD(ercd) == E_ID
ercd = can_wup(TASK_ID2)
MERCD(ercd) == E_OBJ
ercd = wup_tsk(TSK_SELF)
MERCD(ercd) == E_OK
wupcnt = can_wup(TSK_SELF)
wupcnt == 1
ercd = act_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = wup_tsk(TASK_ID2)
MERCD(ercd) == E_OK
wupcnt = can_wup(TASK_ID2)
wupcnt == 1
wupcnt = can_wup(TASK_ID2)
wupcnt == 0
ext_tsk( )ext_tsk( )

テスト
項目参照

−
can_wup-1
can_wup-2

can_wup-5

can_wup-4
can_wup-3

SYN5：
SYN5：タスク付属同期機能のテスト手順 その5
No
S1
S2
−
1
2
3
4
5
6
7
8
9

テ

ス

ト

手

順

内

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})<TASK_ID1:READY><TASK_ID2:READY>
ercd = rel_wai(ERR_TASK_ID)
MERCD(ercd) == E_ID
ercd = rel_wai(TASK_ID2)
MERCD(ercd) == E_OBJ
ercd = slp_tsk( )ercd = rel_wai(TASK_ID1)
MERCD(ercd) == E_RLWAI
ercd = slp_tsk( )MERCD(ercd) == E_OK

3-22

テスト
項目参照

−
rel_wai-1
rel_wai-2

rel_wai-3,5

10
11
12
13
14
15
16
17
18

ercd = sus_tsk(TASK_ID1)
MERCD(ercd) == E_OK
ercd = rel_wai(TASK_ID1)
MERCD(ercd) == E_OK
ercd = rsm_tsk(TASK_ID1)

MERCD(ercd) == E_RLWAI
ext_tsk( )rel_wai-4

MERCD(ercd) == E_OK
ext_tsk( )SYN6：
SYN6：タスク付属同期機能のテスト手順 その6
No
S1
S2
S3
S4
−
1
2
3
4
5

テ

ト

手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG|TA_ACT,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})
DEF_INH(INHNO,{INHATR,INTHDR_1}) 【何らかの割込みを発生できるシステムとすること】<TASK_ID1:READY><TASK_ID2:READY><INTHDR_1:割込みハンドラ<INTHDR_1:割込みハンドラ>
割込みハンドラ>
ercd = slp_tsk( )ercd = sus_tsk(TASK_ID1)
MERCD(ercd) == E_OK
ercd = slp_tsk( )<TASK_ID3:READY>

7
8
9
10
11

MERCD(ercd) == E_OK

irel_wai-1
irel_wai-2
非タスクコンテキストから呼び出せるサービスコール-３

12 ercd = irel_wai(TASK_ID2)
13 MERCD(ercd) == E_OK
14 return15
MERCD(ercd) == E_RLWAI
16
ercd = rsm_tsk(TASK_ID1)
17
MERCD(ercd) == E_RLWAI
18
ext_tsk( )19MERCD(ercd) == E_OK
20
ext_tsk( )21
ext_tsk( )(注)No.9 E_OBJエラーの検出を省略することが製品マニュアルに記載されている場合：MERCD(ercd) == E_OK
SYN7：
SYN7：タスク付属同期機能のテスト手順
No
S1
S2
S3
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

−

INTHDR_1の割込みを発生
ercd =
irel_wai(ERR_TASK_ID)
MERCD(ercd) == E_ID
ercd = irel_wai(TASK_ID3)
MERCD(ercd) == E_OBJ (注)ercd = irel_wai(TASK_ID1)

6ス

irel_wai-3,5
irel_wai-4

その7
テ

ス

ト

手 順

内

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG|TA_ACT,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})<TASK_ID1:READY><TASK_ID2:DORMANT><TASK_ID3:READY>
exinf == EXINF_1
ercd = sus_tsk(ERR_TASK_ID)
MERCD(ercd) == E_ID
ercd = dis_dsp( )MERCD(ercd) == E_OK
ercd = sus_tsk(TSK_SELF)
MERCD(ercd) == E_CTX
ercd = ena_dsp( )MERCD(ercd) == E_OK
ercd = sus_tsk(TASK_ID2)
MERCD(ercd) == E_OBJ
ercd = rsm_tsk(ERR_TASK_ID)
MERCD(ercd) == E_ID
ercd = rsm_tsk(TASK_ID2)
MERCD(ercd) == E_OBJ
ercd = act_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = sus_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = slp_tsk( )ercd = sus_tsk(TASK_ID1)
MERCD(ercd) == E_OK
ercd = rsm_tsk(TASK_ID2)

24

ercd = rsm_tsk(TASK_ID1)

25
26

MERCD(ercd) == E_OK
ercd = sus_tsk(TSK_SELF)

3-23

テスト
項目参照

−

sus_tsk-1

sus_tsk-2

sus_tsk-3
rsm_tsk-1
rsm_tsk-2

タスク管理機能-5
sus_tsk-5
rsm_tsk-4
rsm_tsk-5

MERCD(ercd) == E_OK
ercd = sus_tsk(TASK_ID2)
TMAX_SUSCNT = 1 ：MERCD(ercd) == E_QOVR
TMAX_SUSCNT > 1 ：MERCD(ercd) == E_OK
ercd = wup_tsk(TASK_ID1)

27
28
29
30
31

MERCD(ercd) == E_OK

32
33
34

ercd = rsm_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = rsm_tsk(TASK_ID2)
TMAX_SUSCNT == 1：MERCD(ercd) == E_OBJ
TMAX_SUSCNT > 1 ：MERCD(ercd) == E_OK
ext_tsk( )

35
36
37
38
39
40

sus_tsk-4,7
sus_tsk-6
rsm_tsk-5
rsm_tsk-3

MERCD(ercd) == E_OK
ext_tsk( )sus_tsk-8

MERCD(ercd) == E_OK
ext_tsk( )SYN8：
SYN8：タスク付属同期機能のテスト手順 その8
テ

No
S1
S2
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

ス

ト

手

順

内

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})<TASK_ID1:READY><TASK_ID2:READY><TASK_ID2:READY>
ercd = frsm_tsk(ERR_TASK_ID)
MERCD(ercd) == E_ID
ercd = frsm_tsk(TASK_ID2)
MERCD(ercd) == E_OBJ
ercd = sus_tsk(TSK_SELF)
ercd = frsm_tsk(TASK_ID1)
MERCD(ercd) == E_OK
ercd = slp_tsk( )MERCD(ercd) == E_OK
ercd = sus_tsk(TASK_ID1)
MERCD(ercd) == E_OK
ercd = frsm_tsk(TASK_ID1)
MERCD(ercd) == E_OK
ercd = wup_tsk(TASK_ID1)
MERCD(ercd) == E_OK
ext_tsk( )MERCD(ercd) == E_OK
ext_tsk( )

テスト
項目参照

−

frsm_tsk-1
frsm_tsk-2
frsm_tsk-3,4

frsm_tsk-5
frsm_tsk-5

SYN9：
SYN9：タスク付属同期機能のテスト手順 その9
No

テ

ス

ト

手

順

内

容

S1
S2
−
1
2
3

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})<TASK_ID1:READY><TASK_ID2:DORMANT>
ercd = dly_tsk(ERR_DLYTIM)MERCD(ercd) == E_PAR
ercd = dly_tsk(DLYTIM_10)

4

MERCD(ercd) == E_OK

テスト
項目参照

−
dly_tsk-1
dly_tsk-4

システム時刻管理−５5ercd = act_tsk(TASK_ID2)
6
MERCD(ercd) == E_OK
7ercd = dly_tsk(DLYTIM_100)8ercd = rel_wai(TASK_ID1)
9
MERCD(ercd) == E_RLWAI
10 ext_tsk( )11
MERCD(ercd) == E_OK
12
ext_tsk( )(注)No.2 E_PARエラーを検出できるERR_DLYTIMがシステムに存在しない場合は、テストを省略することができる。

dly_tsk-2,3

TEX1：
TEX1：タスク例外処理機能のテスト手順 その1
No

テ

ス

ト

手 順

内

容

S1
S2
S3

DEF_TEX(ERR_TASK_ID,{TA_HLNG,TEXRTN_1})
E_IDを検出すること
CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})

S4

DEF_TEX(TASK_ID1,{ERR_TEXATR,TEXRTN_1})

S5
S6
S7

E_RSATRを検出すること
DEF_TEX(TASK_ID1,{TA_HLNG,ERR_TEXRTN})
E_PARを検出すること

テスト
項目参照
DEF_TEX-1
静的APIの文法とパラメータ-7
DEF_TEX-2
DEF_TEX-3

3-24

TEX2：
TEX2：タスク例外処理機能のテスト手順 その2
No
S1
S2
S3
−
1
2
3
4
5
6
7
8
9
10
11

テ

ス ト

手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})DEF_TEX(TASK_ID1,{TA_HLNG,TEXRTN_1})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})＜TASK_ID1:タスク例外処理ルーチン＞
TASK_ID1:タスク例外処理ルーチン＞＜TASK_ID1:READY>
１回目の実行
２回目の実行
ercd = ras_tex(ERR_TASK_ID,RASPTN_1)
MERCD(ercd) == E_ID
ercd = ras_tex(TASK_ID1,ERR_RASPTN)MERCD(ercd) == E_PAR
ercd = ras_tex(TASK_ID2,RASPTN_2)
MERCD(ercd) == E_OBJ
ercd = ena_tex( )MERCD(ercd) == E_OK
ercd = dis_dsp( )MERCD(ercd) == E_OK
ercd = ras_tex(TSK_SELF,RASPTN_1111)

12

texptn == RASPTN_1111

13
14
15
16
17
18
19
20
21

exinf == EXINF_1
ercd = ena_dsp( )MERCD(ercd) == E_OK
state = sns_ctx( )state == FALSE
state = sns_tex( )state == TRUE
ercd = ena_tex( )MERCD(ercd) == E_OK
タスク例外処理ルーチンが多重起動されないercd = dis_tex( )MERCD(ercd) == E_OK
ercd = slp_tsk( )

22
23
24
25
26
27

＜TASK_ID2:READY>−

ras_tex-1

ras_tex-2

ras_tex-3

タスク例外処理機能-1,8,9
DEF_TEX-4
ras_tex-5
タスク例外処理機能-1

タスク例外処理機能-10
sns_tex-1

タスク例外処理機能-2

ercd = ena_dsp( )MERCD(ercd) == E_OK
ercd = ras_tex(TASK_ID1,RASPTN_AAAA)MERCD(ercd) == E_OK
ercd = ras_tex(TASK_ID1,RASPTN_4)
MERCD(ercd) == E_OK
ercd = wup_tsk(TASK_ID1)

28
29
30
31
32
33
34

MERCD(ercd) == E_OK
return

タスク例外処理機能-3,4
タスク例外処理機能--7
ras_tex-4

35

texptn == RASPTN_AAAE

36
37
38
39

exinf == EXINF_1
returnMERCD(ercd) == E_OK
state = sns_tex( )タスク例外処理機能-540state == FALSE

タスク例外処理機能-6
sns_tex-2

4142

ext_tsk( )MERCD(ercd) == E_OK
ercd = ras_tex(TASK_ID1,RASPTN_1)
MERCD(ercd) == E_OBJ
ext_tsk( )

43
44
45

ras_tex-3

TEX3：
TEX3：タスク例外処理機能のテスト手順 その3
No

テ

S1
S2
S3
S4
S5
−
1
2
3
4

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})DEF_TEX(TASK_ID1,{TA_HLNG,TEXRTN_1})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})
DEF_INH(INHNO,{INHATR,INTHDR_1})＜TASK_ID1:READY>＜TASK_ID1:タスク例外処理ルーチン＞<INTHDR_1:割込みハンドラ＜TASK_ID2:READY>TASK_ID1:タスク例外処理ルーチン＞<INTHDR_1:割込みハンドラ>
割込みハンドラ>state = sns_tex( )state == TRUE
ercd = ena_tex( )MERCD(ercd) == E_OK

ス ト

手

順

3-25

内

テスト
項目参照

容

＜TASK_ID3:DORMANT>−
タスク管理機能-7
タスク管理機能-6

5
6ercd = slp_tsk( )INTHDR_1の割込み発生
ercd = iras_tex(ERR_TASK_ID,RASPTN_1)
MERCD(ercd) == E_ID
ercd = iras_tex(TASK_ID1,ERR_RASPTN)MERCD(ercd) ==E_PAR
ercd = iras_tex(TASK_ID2,RASPTN_2)
MERCD(ercd) == E_OBJ
ercd = iras_tex(TSK_SELF,RASPTN_1)
MERCD(ercd) == E_ID
ercd = iras_tex(TASK_ID1,RASPTN_55AA)

7
8
9
10
11
12
13
14
15

iras_tex-2

iras_tex-3

iras_tex-5

非タスクコンテキストから呼び出せるサービスコール-４

MERCD(ercd) == E_OK

16ercd = iras_tex(TASK_ID1,RASPTN_AA55)
MERCD(ercd) == E_OK
ercd = iras_tex(TASK_ID3,RASPTN_2)
MERCD(ercd) == E_OBJ
ercd = iwup_tsk(TASK_ID1)
MERCD(ercd) == E_OK
return

17
18
19
20
21
22
23
24
25
26
27
28
29

iras_tex-1

iras_tex-3

texptn == RASPTN_FFFF
exinf == EXINF_1
returniras_tex-4

MERCD(ercd) == E_OK
ext_tsk( )ext_tsk( )TEX4：
TEX4：タスク例外処理機能のテスト手順 その4
No
S1
S2
S3
S4
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

テ

ス

ト 手

順

内

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})DEF_TEX(TASK_ID1,{TA_HLNG,TEXRTN_1})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
DEF_INH(INHNO,{INHATR,INTHDR_1}) 【何らかの割込みを発生できるシステムとすること】<TASK_ID1:READY><TASK_ID1:タ<INTHDR_1:割込みハンドラ<TASK_ID1:タスク例外処理ルーチン>
スク例外処理ルーチン><INTHDR_1:割込みハンドラ>
割込みハンドラ>
ercd = ena_tex( )MERCD(ercd) == E_OK
state = sns_tex( )state == FALSE
ercd = dis_tex( )MERCD(ercd) == E_OK
state = sns_tex( )state == TRUE
ercd = ras_tex(TASK_ID1,RASPTN_1111)
MERCD(ercd) == E_OK
ercd = ena_tex( )returnMERCD(ercd) == E_OK
ercd = slp_tsk( )<TASK_ID2:READY>

state = sns_tex( )state == TRUE
ercd = iwup_tsk(TASK_ID1)
MERCD(ercd) == E_OK
returnMERCD(ercd) == E_OK
ext_tsk( )3-26−
ena_tex-2

dis_tex-2

ercd = dis_tex( )MERCD(ercd) == E_OBJ
ercd = ena_tex( )MERCD(ercd) == E_OBJ
10msec以上経過後にINTHDR_1の割込みが発生するよう設定する
ext_tsk( )

19
20
21
22
23
24
25
26
27

テスト
項目参照

容

dis_tex-1
ena_tex-1

sns_tex-3

SEM1：
SEM1：セマフォ機能のテスト手順

その1

No

テ

ス

ト

手

順

内

テスト
項目参照

容

S1 CRE_SEM(ERR_SEM_ID,{TA_TFIFO,ISEMCNT_1,MAXSEM_FFFF})
S2 E_IDを検出すること
S3 CRE_SEM(SEM_ID3,{ERR_SEMATR,ISEMCNT_1,MAXSEM_FFFF})
S4 E_RSATRを検出すること
S5 CRE_SEM(SEM_ID3,{TA_TPRI,ISEMCNT_2,MAXSEM_1})
S6 E_PARを検出すること
S7 CRE_SEM(SEM_ID3,{TA_TPRI,ISEMCNT_2,MAXSEM_OVER})
S8 E_PARを検出すること
S9 CRE_SEM(SEM_ID1,{TA_TFIFO,ISEMCNT_1,MAXSEM_FFFF})
S10 CRE_SEM(SEM_ID1,{TA_TFIFO,ISEMCNT_1,MAXSEM_FFFF})
S11 E_OBJを検出すること
(注)
No.S8
E_PARエラーを検出できるMAXSEM_OVERがシステムに存在しない場合は、テストを省略することができる。
SEM2：
SEM2：セマフォ機能のテスト手順
No
S1
S2
S3
S4
S5
S6
−
1
2
3
4
5
6
7

CRE_SEM-1
CRE_SEM-2
CRE_SEM-3
CRE_SEM-4

CRE_SEM-5

その2
テ

ス

ト

手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})
CRE_TSK(TASK_ID4,{TA_HLNG|TA_ACT,EXINF_4,TASK4,ITSKPRI_4,STKSZ,NULL})CRE_SEM(SEM_ID1,{TA_TFIFO,ISEMCNT_2,MAXSEM_2})
CRE_SEM(SEM_ID2,{TA_TFIFO,ISEMCNT_FFFE,MAXSEM_FFFF})<TASK_ID1:DORMANT><TASK_ID2:DORMANT><TASK_ID3:DORMANT><TASK_ID1:DORMANT><TASK_ID4:READY>
ercd = sig_sem(ERR_SEM_ID)
MERCD(ercd) == E_ID
ercd = wai_sem(ERR_SEM_ID)
MERCD(ercd) == E_ID
ercd = pol_sem(ERR_SEM_ID)
MERCD(ercd) == E_ID
ercd = sig_sem(SEM_ID1)

8

MERCD(ercd) == E_QOVR

9
10
11
12
13

ercd = wai_sem(SEM_ID1)
MERCD(ercd) == E_OK
ercd = pol_sem(SEM_ID1)
MERCD(ercd) == E_OK
ercd = pol_sem(SEM_ID1)

14

MERCD(ercd) == E_TMOUT

15
16
17
18
19
20
21
22
23
24
25
26
27
28

ercd = sig_sem(SEM_ID1)
MERCD(ercd) == E_OK
ercd = pol_sem(SEM_ID1)
MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID3)−
sig_sem-1
wai_sem-1
pol_sem-1
CRE_SEM-9
sig_sem-2
wai_sem-3,4pol_sem-3,4
CRE_SEM-8
pol_sem-2
sig_sem-6

ercd = wai_sem(SEM_ID1)

MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID2)
ercd = wai_sem(SEM_ID1)

MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID1)
ercd = wai_sem(SEM_ID1)

MERCD(ercd) == E_OK
ercd = sig_sem(SEM_ID1)

29

MERCD(ercd) == E_OK

30
31
32
33
34
35
36
37
38
39
40
41
42

ext_tsk( )CRE_SEM-6
sig_sem-3,5

MERCD(ercd) == E_OK
ercd = sig_sem(SEM_ID1)
MERCD(ercd) == E_OK
ext_tsk( )sig_sem-4
wai_sem-5,6

MERCD(ercd) == E_OK
ercd = rel_wai(TASK_ID1)
MERCD(ercd) == E_RLWAI
ext_tsk( )wai_sem-2

MERCD(ercd) == E_OK
ercd = sig_sem(SEM_ID2)
MERCD(ercd) == E_OK
ext_tsk( )3-27

SEM3：
SEM3：セマフォ機能のテスト手順

その3
テスト
項目参照

No

テ

S1
S2
S3
S4
S5
S6
S7
−
1
2
3
4
5
6
7
8
9
10
11
12

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2_1,{TA_HLNG,EXINF_2_1,TASK2_1,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID2_2,{TA_HLNG,EXINF_2_2,TASK2_2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG|TA_ACT,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})CRE_SEM(SEM_ID1,{TA_TFIFO,ISEMCNT_1,MAXSEM_2})
CRE_SEM(SEM_ID2,{TA_TPRI,ISEMCNT_1,MAXSEM_1})
DEF_INH(INHNO,{INHATR,INTHDR_1} 【何らかの割込みを発生できるシステムとすること】<TASK_ID1:DORMANT> <TASK_ID2_1:DORMANT> <TASK_ID2_2:DORMANT><TASK_ID3:READY>
ercd = pol_sem(SEM_ID2)
MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID2_1)
ercd = wai_sem(SEM_ID2)
MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID2_2)
ercd = wai_sem(SEM_ID2)
MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID1)
ercd = wai_sem(SEM_ID2)
MERCD(ercd) == E_OK
INTHDR_1の割込み発生

ス

ト

手

順

内

容

<INTHDT_1:割込みハンドラ<INTHDT_1:割込みハンドラ>
割込みハンドラ>

14
15

ercd =
isig_sem(ERR_SEM_ID)
MERCD(ercd) == E_ID
ercd = isig_sem(SEM_ID1)

16

MERCD(ercd) == E_OK

17
18
19
20
21

ercd = isig_sem(SEM_ID1)
MERCD(ercd) == E_QOVR (注)ercd = isig_sem(SEM_ID2)
MERCD(ercd) == E_OK
return13

22−

isig_sem-1
非タスクコンテキストから呼び出せるサービスコール-５
isig_sem-2

isig_sem-3,5
wai_sem-7

MERCD(ercd) == E_OK

23 ext_tsk( )24ercd = sig_sem(SEM_ID2)
25
MERCD(ercd) == E_OK
isig_sem-4
26
ext_tsk( )27
MERCD(ercd) == E_OK
28
ercd = sig_sem(SEM_ID2)
29
MERCD(ercd) == E_OK
wai_sem-830
ext_tsk( )31
MERCD(ercd) == E_OK
32
ercd = pol_sem(SEM_ID1)
33
MERCD(ercd) == E_OK
34
ercd = pol_sem(SEM_ID1)
35
MERCD(ercd) == E_OK
isig_sem-6
36
ercd = pol_sem(SEM_ID1)
37
MERCD(ercd) == E_TMOUT
38
ext_tsk( )(注)No.18 サービスコールを遅延実行する場合には、E_QOVRエラーを返すことを省略できる。省略する場合は、製品マニュアルにその旨が記載されていて、E_OKを返すこと。
SEM4：
SEM4：セマフォ機能のテスト手順
No
S1
S2
S3
S4
S5
−

その4
テ

ス

ト

手

順

内

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})
CRE_TSK(TASK_ID4,{TA_HLNG|TA_ACT,EXINF_4,TASK4,ITSKPRI_4,STKSZ,NULL})CRE_SEM(SEM_ID1,{TA_TFIFO,ISEMCNT_1,MAXSEM_2})<TASK_ID1:DORMANT><TASK_ID2:DORMANT><TASK_ID3:DORMANT>

1
2
3
4
5
6
7

テスト
項目参照

容

<TASK_ID4:READY>
ercd = twai_sem(ERR_SEM_ID,TMO_10)
MERCD(ercd) == E_ID
ercd = twai_sem(SEM_ID1,ERR_TMO)
MERCD(ercd) == E_PAR
ercd =
twai_sem(SEM_ID1,TMO_POL)
MERCD(ercd) == E_OK
ercd =
twai_sem(SEM_ID1,TMO_POL)

MERCD(ercd) == E_TMOUT

8

3-28

−

twai_sem-1

twai_sem-2

twai_sem-5,6

タイムアウトとノンブロッキング-1
twai_sem-12

9ercd = act_tsk(TASK_ID3)
ercd =
twai_sem(SEM_ID1,TMO_100)

10

MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID2)

1112ercd =
twai_sem(SEM_ID1,TMO_200)

13

MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID1)

14
15
16

ercd = twai_sem(SEM_ID1,TMO_FEVR)MERCD(ercd) == E_OK
ercd = dly_tsk(DLYTIM_50)
MERCD(ercd) == E_OK
ercd = sig_sem(SEM_ID1)

17
18
19
20
21
22
23
24

MERCD(ercd) == E_OK
ext_tsk( )MERCD(ercd) == E_OK
ercd = dly_tsk(DLYTIM_1000)

25

MERCD(ercd) == E_TMOUT

26
27
28

ext_tsk( )29twai_sem-7,11

タイムアウトとノンブロッキング-2
twai_sem-4

MERCD(ercd) == E_OK
ercd = rel_wai(TASK_ID1)
タイムアウトとノンブロッキング-3
twai_sem-3,8,13

MERCD(ercd) == E_RLWAI

30 ext_tsk( )31
MERCD(ercd) == E_OK
32
ext_tsk( )(注)No.4 E_PARエラーを検出できるERR_TMOがシステムに存在しない場合は、テストを省略することができる。
SEM5：
SEM5：セマフォ機能のテスト手順

その5

No
S1
S2
S3
S4
S5
−
1

テ

ス

ト

手

順

内

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2_1,{TA_HLNG,EXINF_2_1,TASK2_1,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID2_2,{TA_HLNG,EXINF_2_2,TASK2_2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG|TA_ACT,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})CRE_SEM(SEM_ID2,{TA_TPRI,ISEMCNT_0,MAXSEM_1})<TASK_ID1:DORMANT><TASK_ID2_1:DORMANT><TASK_ID2_2:DORMANT><TASK_ID3:READY>
ercd = act_tsk(TASK_ID2_1)−

ercd =
twai_sem(SEM_ID2,TMO_100)

2

MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID2_2)

3
4
ercd =
twai_sem(SEM_ID2,TMO_FEVR)

5MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID1)

6
7
8

テスト
項目参照

容

ercd =
twai_sem(SEM_ID2,TMO_200)

MERCD(ercd) == E_OK
ercd = sig_sem(SEM_ID2)

9
10
11

MERCD(ercd) == E_OK

12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

ext_tsk( )CRE_SEM-7
twai_sem-9

MERCD(ercd) == E_OK
ercd = sig_sem(SEM_ID2)
MERCD(ercd) == E_OK
ext_tsk( )MERCD(ercd) == E_OK
ercd = sig_sem(SEM_ID2)
MERCD(ercd) == E_OK
ext_tsk( )twai_sem-10

MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID1)
ercd = twai_sem(SEM_ID2,TMO_FEVR)MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID2_1)
ercd = twai_sem(SEM_ID2,TMO_FEVR)MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID2_2)
ercd = twai_sem(SEM_ID2,TMO_FEVR)MERCD(ercd) == E_OK
ercd = chg_pri(TASK_ID1,TSKPRI_4)
MERCD(ercd) == E_OK
ercd = chg_pri(TASK_ID2_2,TSKPRI_3)

3-29

34
35
36
37
38
39
40
41
42
43
44
45
46

MERCD(ercd) == E_OK
ercd = chg_pri(TASK_ID2_1,TSKPRI_3)
MERCD(ercd) == E_OK
ercd = sig_sem(SEM_ID2)
ext_tsk( )MERCD(ercd) == E_OK
ercd = sig_sem(SEM_ID2)
ext_tsk( )MERCD(ercd) == E_OK
ercd = sig_sem(SEM_ID2)
ext_tsk( )chg_pri-10

MERCD(ercd) == E_OK
ext_tsk( )chg_pri-9

FLG1：
FLG1：イベントフラグ機能のテスト手順 その1
No

テ

ス

ト 手

順

内

容

S1 CRE_FLG(ERR_FLG_ID,{TA_TFIFO,IFLGPTN_1})
S2 E_IDを検出できること
S3 CRE_FLG(FLG_ID1,{ERR_FLGATR,IFLGPTN_1})
S4 E_RSATRを検出できること
S5 CRE_FLG(FLG_ID1,{TA_TFIFO,ERR_IFLGPTN})
S6 E_PARを検出できること
S7 CRE_FLG(FLG_ID1,{TA_FIFO,IFLGPTN_1})
S8 CRE_FLG(FLG_ID1,{TA_FIFO,IFLGPTN_1})
S9 E_OBJを検出できること(注)
No.S6 E_PARエラーを検出できるERR_IFLGPTNがシステムに存在しない場合は、テストを省略することができる。

テスト
項目参照
CRE_FLG-1
CRE_FLG-2
CRE_FLG-3

CRE_FLG-4

FLG2：
FLG2：イベントフラグ機能のテスト手順 その2
No
S1
S2
S3
S4
S5
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

テ

ス

ト 手

順

内

容

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_FLG(FLG_ID1,{TA_TFIFO|TA_WSGL,IFLGPTN_0})
CRE_FLG(FLG_ID2,{TA_TPRI|TA_WSGL,IFLGPTN_0})
CRE_FLG(FLG_ID3,{TA_TPRI|TA_WSGL|TA_CLR,IFLGPTN_1})<TASK_ID1:DORMANT><TASK_ID2:READY>
ercd = set_flg(ERR_FLG_ID,SETPTN_1)
MERCD(ercd) == E_ID
ercd = set_flg(FLG_ID1,ERR_SETPTN)MERCD(ercd) == E_PAR
ercd = clr_flg(ERR_FLG_ID,CLRPTN_1)
MERCD(ercd) == E_ID
ercd = clr_flg(FLG_ID1,ERR_CLRPTN)MERCD(ercd) == E_PAR
ercd = wai_flg(ERR_FLG_ID,WAIPTN_1,TWF_ANDW,p_flgptn)
MERCD(ercd) == E_ID
ercd = wai_flg(FLG_ID1,ERR_WAIPTN,TWF_ORW,p_flgptn)
MERCD(ercd) == E_PAR
ercd = wai_flg(FLG_ID1,WAIPTN_1,ERR_WFMODE,p_flgptn)
MERCD(ercd) == E_PAR
ercd = wai_flg(FLG_ID1,WAIPTN_1,TWF_ANDW,ERR_pointer)
MERCD(ercd) == E_PAR
ercd = pol_flg(ERR_FLG_ID,WAIPTN_1,TWF_ANDW,p_flgptn)
MERCD(ercd) == E_ID
ercd = pol_flg(FLG_ID1,ERR_WAIPTN,TWF_ORW,p_flgptn)
MERCD(ercd) == E_PAR
ercd = pol_flg(FLG_ID1,WAIPTN_1,ERR_WFMODE,p_flgptn)
MERCD(ercd) == E_PAR
ercd = pol_flg(FLG_ID1,WAIPTN_1,TWF_ANDW,ERR_pointer)
MERCD(ercd) == E_PAR
ercd = set_flg(FLG_ID1,SETPTN_5555)
MERCD(ercd) == E_OK
ercd = set_flg(FLG_ID2,SETPTN_AAAA)MERCD(ercd) == E_OK
ercd = wai_flg(FLG_ID2,WAIPTN_0002,TWF_ORW,p_flgptn)
MERCD(ercd) == E_OK
flgptn == SETPTN_AAAA
ercd = pol_flg(FLG_ID2,WAIPTN_0001,TWF_ORW,p_flgptn)
MERCD(ercd) == E_TMOUT
ercd = clr_flg(FLG_ID1,CLRPTN_0000)
MERCD(ercd) == E_OK
ercd = pol_flg(FLG_ID1,WAIPTN_0001,TWF_ANDW,p_flgptn)

テスト
項目参照

−
set_flg-1
set_flg-2
clr_flg-1
clr_flg-2
wai_flg-1
wai_flg-2
wai_flg-3
wai_flg-4
pol_flg-1
pol_flg-2
pol_flg-3
pol_flg-4
CRE_FLG-5,7
CRE_FLG-6,8
wai_flg-9
wai_flg-10
pol_flg-6

37

MERCD(ercd) == E_TMOUT

pol_flg-７
clr_flg-3

38
39
40

ercd = pol_flg(FLG_ID1,WAIPTN_0000,TWF_ANDW,p_flgptn)
MERCD(ercd) == E_PAR
ercd = set_flg(FLG_ID1,SETPTN_0055)

pol_flg-11

3-30

41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

MERCD(ercd) == E_OK
ercd = pol_flg(FLG_ID1,WAIPTN_0050,TWF_ORW,p_flgptn)
MERCD(ercd) == E_OK
flgptn == FLGPTN_0055
ercd = set_flg(FLG_ID1,SETPTN_5500)
MERCD(ercd) == E_OK
ercd = pol_flg(FLG_ID1,WAIPTN_0055,TWF_ORW,p_flgptn)
MERCD(ercd) == E_OK
flgptn == FLGPTN_5555
ercd = clr_flg(FLG_ID1,CLRPTN_0000)
MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID1)

pol_flg-７
pol_flg-9

set_flg-3

ercd = wai_flg(FLG_ID1,WAIPTN_0001,TWF_ANDW,p_flgptn)

MERCD(ercd) == E_OK
ercd = wai_flg(FLG_ID1,WAIPTN_0002,TWF_ANDW,p_flgptn)
MERCD(ercd) == E_ILUSE
ercd = pol_flg(FLG_ID1,WAIPTN_0002,TWF_ORW,p_flgptn)
MERCD(ercd) == E_ILUSE
ercd = rel_wai(TASK_ID1)
MERCD(ercd) == E_RLWAI
ercd = wai_flg(FLG_ID1,WAIPTN_0001,TWF_ORW,p_flgptn)

wai_flg-5,7
pol_flg-5
wai_flg-6,12

MERCD(ercd) == E_OK
ercd = set_flg(FLG_ID1,SETPTN_1111)

64

MERCD(ercd) == E_OK

65
66
67
68
69
70
71

flgptn == SETPTN_1111
ercd = wai_flg(FLG_ID1,WAIPTN_0000,TWF_ANDW,p_flgptn)
MERCD(ercd) == E_PAR
ercd = wai_flg(FLG_ID2,WAIPTN_AAAA,TWF_ANDW,p_flgptn)
MERCD(ercd) == E_OK
flgptn == SETPTN_AAAA
ercd = wai_flg(FLG_ID3,WAIPTN_0001,TWF_ORW,p_flgptn)

72

MERCD(ercd) == E_OK

73
74
75
76
77
78
79
80
81
82
83

flgptn == SETPTN_0001
ercd = set_flg(FLG_ID3,SETPTN_0002)
MERCD(ercd) == E_OK
ercd = pol_flg(FLG_ID3,WAIPTN_0002,TWF_ANDW,p_flgptn)
MERCD(ercd) == E_OK
flgptn == SETPTN_0002
ercd = pol_flg(FLG_ID3,WAIPTN_0002,TWF_ANDW,p_flgptn)
MERCD(ercd) == E_TMOUT
ercd = wai_flg(FLG_ID3,WAIPTN_8000,TWF_ORW,p_flgptn)

84

MERCD(ercd) == E_OK

set_flg-4,5
wai_flg-8
set_flg-6
wai_flg-13
wai_flg-7,9
wai_flg-10
CRE_FLG-10,12
wai_flg-8
CRE_FLG-13

pol_flg-8

pol_flg-10

MERCD(ercd) == E_OK
ercd = set_flg(FLG_ID3,SETPTN_8000)

85 flgptn == SETPTN_8000
86 ercd = pol_flg(FLG_ID3,WAIPTN_8000,TWF_ORW,p_flgptn)
87 MERCD(ercd) == E_TMOUT
88 ercd = set_flg(FLG_ID3,SETPTN_5555)
89 MERCD(ercd) == E_OK
90 ercd = wai_flg(FLG_ID3,WAIPTN_5555,TWF_ORW,p_flgptn)
91 MERCD(ercd) == E_OK
92 flgptn == SETPTN_5555
93 ercd = pol_flg(FLG_ID3,WAIPTN_5555,TWF_ORW,p_flgptn)
94 MERCD(ercd) == E_TMOUT
95 ext_tsk( )96
MERCD(ercd) == E_OK
97
ext_tsk( )(注)
No.4
E_PARエラーを検出できるERR_SETPTNがシステムに存在しない場合は、テストを省略することができる。
No.8
E_PARエラーを検出できるERR_CLRPTNがシステムに存在しない場合は、テストを省略することができる。
No.12 E_PARエラーを検出できるERR_WAIPTNがシステムに存在しない場合は、テストを省略することができる。
No.16 E_PARエラーを検出できるERR_pointerがシステムに存在しない場合は、テストを省略することができる。
No.20 E_PARエラーを検出できるERR_WAIPTNがシステムに存在しない場合は、テストを省略することができる。
No.24 E_PARエラーを検出できるERR_pointerがシステムに存在しない場合は、テストを省略することができる。

3-31

set_flg-5
pol_flg-8
set_flg-6
set_flg-7

wai_flg-11

FLG3：
FLG3：イベントフラグ機能のテスト手順 その3
No
S1
S2
S3
S4
S5
S6
−
1
2

テ

ス

ト 手

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG|TA_ACT,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})
DEF_INT(INHNO,{INHATR,INTHDR_1})
CRE_FLG(FLG_ID1,{TA_TFIFO|TA_WSGL|TA_CLR,IFLGPTN_0})
CRE_FLG(FLG_ID2,{TA_TPRI|TA_WSGL,IFLGPTN_0})<TASK_ID1:READY><TASK_ID2:READY><INTHDR_1:割込みハンドラ<INTHDR_1:割込みハンドラ>
割込みハンドラ>
ercd = wai_flg(FLG_ID2,WAIPTN_0505,
TWF_ORW,p_flgptn)
ercd = wai_flg(FLG_ID1,WAIPTN_0505,
TWF_ANDW,p_flgptn)<TASK_ID3:READY>−INTHDR_1の割込みを発生させる

3
4
5
6
7
8

ercd = iset_flg(ERR_FLG_ID,SETPTN_0001)
MERCD(ercd) == E_ID
ercd = iset_flg(FLG_ID2,ERR_SETPTN)MERCD(ercd) == E_PAR
ercd = iset_flg(FLG_ID2,SETPTN_0500)

9

MERCD(ercd) == E_OK

10
11
12
13
14
15
16
17
18
19
20
21

ercd = iset_flg(FLG_ID1,SETPTN_0500)
MERCD(ercd) == E_OK
ercd = iset_flg(FLG_ID2,SETPTN_0005)
MERCD(ercd) == E_OK
ercd = iset_flg(FLG_ID1,SETPTN_0005)
MERCD(ercd) == E_OK
returniset_flg-1
iset_flg-2
非タスクコンテキストから呼び出せるサービスコール-６

MERCD(ercd) == E_OK
flgptn == SETPTN_0500
ext_tsk( )iset_flg-4,5
iset_flg-3,6

MERCD(ercd) == E_OK
flgptn == SETPTN_0505
ercd = pol_flg(FLG_ID1,WAIPTN_0001,
TWF_ORW,p_flgptn)
MERCD(ercd) == E_TMOUT
ext_tsk( )

22
23
24
(注)
No.7

順

CRE_FLG-9,11

iset_flg-7

E_PARエラーを検出できるERR_SETPTNがシステムに存在しない場合は、テストを省略することができる。

FLG4：
FLG4：イベントフラグ機能のテスト手順 その4
No
S1
S2
S3
S4
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
35

テ

ス

ト 手

順

内

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_FLG(FLG_ID1,{TA_TPRI|TA_WSGL,IFLGPTN_0})
CRE_FLG(FLG_ID2,{TA_TFIFO|TA_WSGL|TA_CLR,IFLGPTN_0})<TASK_ID1:READY><TASK_ID2:READY>
ercd = twai_flg(ERR_FLG_ID,WAIPTN_0001,TWF_ANDW,p_flgptn,TMO_POL)
MERCD(ercd) == E_ID
ercd = twai_flg(FLG_ID1,ERR_WAIPTN,TWF_ORW,p_flgptn,TMO_POL)
MERCD(ercd) == E_PAR
ercd = twai_flg(FLG_ID1,WAIPTN_0001,ERR_WFMODE,p_flgptn,TMO_POL)
MERCD(ercd) == E_PAR
ercd = twai_flg(FLG_ID1,WAIPTN_0001,TWF_ANDW,ERR_pointer,TMO_POL)
MERCD(ercd) == E_PAR
ercd = twai_flg(FLG_ID1,WAIPTN_0001,TWF_ANDW,p_flgptn,ERR_TMO)
MERCD(ercd) == E_PAR
ercd = twai_flg(FLG_ID1,WAIPTN_0000,TWF_ORW,p_flgptn,TMO_POL)
MERCD(ercd) == E_PAR
ercd = set_flg(FLG_ID1,SETPTN_0055)
MERCD(ercd) == E_OK
ercd = twai_flg(FLG_ID1,WAIPTN_0001,TWF_ORW,p_flgptn,TMO_POL)
MERCD(ercd) == E_OK
flgptn == SETPTN_0055
ercd = twai_flg(FLF_ID1,WAIPTN_0002,TWF_ANDW,p_flgptn,TMO_POL)
MERCD(ercd) == E_TMOUT
ercd = twai_flg(FLF_ID1,WAIPTN_0020,TWF_ORW,p_flgptn,TMO_1)
ercd = dly_tsk(DLYTIM_5)
MERCD(ercd) == E_TMOUT
ercd = twai_flg(FLG_ID1,WAIPTN_5500,TWF_ANDW,p_flgptn,TMO_100)
MERCD(ercd) == E_OK
ercd = twai_flg(FLG_ID1,WAIPTN_0055,TWF_ORW,p_flgptn,TMO_100)
MERCD(ercd) == E_ILUSE
ercd = set_flg(FLG_ID1,SETPTN_5500)
MERCD(ercd) == E_OK
flgptn = WAIPTN_5555
ercd = twai_flg(FLG_ID1,WAIPTN_0002,TWF_ANDW,p_flgptn,TMO_FEVR)

3-32

テスト
項目参照

−
twai_flg-1
twai_flg-2
twai_flg-3
twai_flg-4
twai_flg-5
twai_flg-15

twai_flg-10,11,17
twai_flg-12

twai_flg-8,16

twai_flg-6
twai_flg-9,14

36
MERCD(ercd) == E_OK
37
ercd = dly_tsk(DLYTIM_1000)
38
MERCD(ercd) == E_OK
39
ercd = rel_wai(TASK_ID1)
40 MERCD(ercd) == E_RLWAI
41 ercd = twai_flg(FLG_ID2,WAIPTN_0001,TWF_ORW,p_flgptn,TMO_FEVR)
42
MERCD(ercd) == E_OK
43
ercd = set_flg(FLG_ID2,SETPTN_5555)
44 MERCD(ercd) == E_OK
45 flgptn == SETPTN_5555
46 ercd = pol_flg(FLG_ID2,WAIPTN_0001,TWF_ORW,p_flgptn)
47 MERCD(ercd) == E_TMOUT
48 ercd = set_flg(FLG_ID2,SETPTN_8000)
49 MERCD(ercd) == E_OK
50 ercd = twai_flg(FLG_ID2,WAIPTN_8000,TWF_ANDW,p_flgptn,TMO_FEVR)
51 MERCD(ercd) == E_OK
52 flgptn == SETPTN_8000
53 ercd = pol_flg(FLG_ID2,WAIPTN_8000,TWF_ORW,p_flgptn)
54 MERCD(ercd) == E_TMOUT
55 ercd = twai_flg(FLG_ID2,WAIPTN_0001,TWF_ANDW,p_flgptn,TMO_POL)
56 MERCD(ercd) == E_TMOUT
57 ext_tsk( )58
MERCD(ercd) == E_OK
59
ext_tsk( )(注)
No.4
E_PARエラーを検出できるERR_WAIPTNがシステムに存在しない場合は、テストを省略することができる。
No.8
E_PARエラーを検出できるERR_pointerがシステムに存在しない場合は、テストを省略することができる。
No.10 E_PARエラーを検出できるERR_TMOがシステムに存在しない場合は、テストを省略することができる。
DTQ1：
DTQ1：データキュー機能のテスト手順

テ

ス

ト

手

順

内

S1
S2
S3
S4
S5
S6
S7
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

twai_flg-13
twai_flg-9

テスト
項目参照

容

S1 CRE_DTQ(ERR_DTQID,{TA_TFIFO,DTQCNT_1,NULL})S2 E_IDエラーを検出できること。
S3 CRE_DTQ(DTQ_ID1,{ERR_DTQATR,DTQCNT_1,NULL})
S4 E_RSATRエラーを検出できること。
S5 CRE_DTQ(DTQ_ID1,{TA_FIFO,ERR_DTQCNT,NULL})S6 E_PARエラーを検出できること。
S7 CRE_DTQ(DTQ_ID1,{TA_TFIFO,DTQCNT_1,NULL})
S8 CRE_DTQ(DTQ_ID1,{TA_TFIFO,DTQCNT_1,NULL})
S9 E_OBJエラーを検出できること。
(注)
No.S6 E_PARエラーを検出できるERR_DTQCNTがシステムに存在しない場合は、テストを省略することができる。

No

twai_flg-10

その1

No

DTQ2：
DTQ2：データキュー機能のテスト手順

twai_flg-7,18

CRE_DTQ-1
CRE_DTQ-2
CRE_DTQ-3

CRE_DTQ-4

その2
テ

ス

ト 手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})
CRE_TSK(TASK_ID4,{TA_HLNG|TA_ACT,EXINF_4,TASK4,ITSKPRI_4,STKSZ,NULL})
CRE_DTQ(DTQ_ID1,{TA_TFIFO,DTQCNT_1,NULL})
CRE_DTQ(DTQ_ID2,{TA_TPRI,DTQCNT_1,NULL})
CRE_DTQ(DTQ_ID3,{TA_TPRI,DTQCNT_2,NULL})<TASK_ID1:DORMANT><TASK_ID2:DORMANT><TASK_ID3:DORMANT><TASK_ID4:READY>
ercd = snd_dtq(ERR_DTQID,data)
MERCD(ercd) == E_ID
ercd = snd_dtq(DTQ_ID1,DATA_55)
MERCD(ercd) == E_OK
p_dataにdataのアドレス設定
ercd = rcv_dtq(DTQ_ID1,p_data)
MERCD(ercd) == E_OK
data == DATA_55
ercd = act_tsk(TASK_ID3)−
snd_dtq-1
CRE_DTQ-7

snd_dtq-3,4,13

ercd = rcv_dtq(DTQ_ID1,p_data)

MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID2)
ercd = rcv_dtq(DTQ_ID1,p_data)

MERCD(ercd) == E_OK
ercd = snd_dtq(DTQ_ID1,DATA_33)

16

MERCD(ercd) == E_OK

17
18
19
20
21
22
23

data == DATA_33
ercd = slp_tsk( )CRE_DTQ-5
snd_dtq-5,6
snd_dtq-7

MERCD(ercd) == E_OK
ercd = snd_dtq(DTQ_ID1,MEMORY)
MERCD(ercd) == E_OK
data = MEMORY
ercd = slp_tsk( )snd_dtq-14

3-33

24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55

MERCD(ercd) == E_OK
ercd = snd_dtq(DTQ_ID1,DATA_00)
MERCD(ercd) == E_OK
ercd = wup_tsk(TASK_ID3)
MERCD(ercd) == E_OK
ercd = snd_dtq(DTQ_ID1,DATA_33)
MERCD(ercd) == E_OK
ercd = wup_tsk(TASK_ID2)
ercd = snd_dtq(DTQ_ID1,DATA_22)

MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID1)
ercd = snd_dtq(DTQ_ID1,DATA_11)

MERCD(ercd) == E_OK
ercd = snd_dtq(DTQ_ID2,DATA_FF)
MERCD(ercd) == E_OK
ercd = chg_pri(TASK_ID2,TSKPRI_3)
MERCD(ercd) == E_OK
ercd = rcv_dtq(DTQ_ID1,p_data)
MERCD(ercd) == E_OK
ercd = snd_dtq(DTQ_ID2,DATA_EE)
MERCD(ercd) == E_OK
data == DATA_00
ercd = rcv_dtq(DTQ_ID1,p_data)
MERCD(ercd) == E_OK
ercd = snd_dtq(DTQ_ID2,DATA_DD)

MERCD(ercd) == E_RLWAI
ercd = snd_dtq(DTQ_ID2,DATA_CC)

snd_dtq-2

MERCD(ercd) == E_OK
ercd = rcv_dtq(DTQ_ID2,p_data)
MERCD(ercd) == E_OK

57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82

ext_tsk( )CRE_DTQ-6
snd_dtq-11

MERCD(ercd) == E_OK
data == DATA_FF
ercd = rcv_dtq(DTQ_ID2,p_data)
MERCD(ercd) == E_OK
ext_tsk( )MERCD(ercd) == E_OK
data == DATA_CC
ercd = rcv_dtq(DTQ_ID2,p_data)
MERCD(ercd) == E_OK
ext_tsk( )MERCD(ercd) == E_OK
data == DATA_EE
ercd = rcv_dtq(DTQ_ID2,p_data)
MERCD(ercd) == E_OK
data == DATA_DD
ercd = snd_dtq(DTQ_ID3,DATA_11)
MERCD(ercd) == E_OK
ercd = snd_dtq(DTQ_ID3,DATA_22)
MERCD(ercd) == E_OK
ercd = rcv_dtq(DTQ_ID3,p_data)
MERCD(ercd) == E_OK
ercd = rcv_dtq(DTQ_ID3,p_data)
MERCD(ercd) == E_OK
data == DATA_22
ext_tsk( )DTQ3：
DTQ3：データキュー機能のテスト手順

S1
S2
S3
−
1
2
3
4
5
6
7
8
9
10
11

snd_dtq-10
MERCD(ercd) == E_OK
data == DATA_33
ercd = rel_wai(TASK_ID1)

56

No

snd_dtq-9

snd_dtq-12

snd_dtq-8

その3
テ

ス

ト

手

順

内

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_DTQ(DTQ_ID1,{TA_TFIFO,DTQCNT_0,NULL})<TASK_ID1:READY><TASK_ID2:READY>
ercd = psnd_dtq(ERR_DTQID,DATA_55)
MERCD(ercd) == E_ID
ercd = psnd_dtq(DTQ_ID1,DATA_55)
MERCD(ercd) == E_TMOUT
ercd = rcv_dtq(DTQ_ID1,p_data)
ercd = psnd_dtq(DTQ_ID1,DATA_AA)
MERCD(ercd) == E_OK
data == DATA_AA
ercd = rcv_dtq(DTQ_ID1,p_data)
MERCD(ercd) == E_OK
ercd = psnd_dtq(DTQ_ID1,MEMORY)

3-34

テスト
項目参照

−
psnd_dtq-1
psnd_dtq-2

psnd_dtq-5,6
psnd_dtq-3,4,7,8

12
13
14
15
16

MERCD(ercd) == E_OK
data == MEMORY
ext_tsk( )psnd_dtq-9

MERCD(ercd) == E_OK
ext_tsk( )DTQ4：
DTQ4：データキュー機能のテスト手順

その4

No
S1
S2
S3
S4
S5
−
1
2
3
4
5
6
7
8
9

テ

ス

ト

手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
DEF_INH(INHNO_1,{INHATR_1,INTHDR_1})
CRE_DTQ(DTQ_ID1,{TA_TFIFO,DTQCNT_0,NULL})
CRE_DTQ(DTQ_ID2,{TA_TFIFO,DTQCNT_2,NULL})<TASK_ID1:READY><TASK_ID2:READY>
ercd = rcv_dtq(DTQ_ID2,p_data)<INTHDR_1の割込み発生><INTHDR_1:割込みハンドラ<INTHDR_1:割込みハンドラ>
割込みハンドラ>

ercd = ipsnd_dtq(ERR_DTQID,DATA55)
MERCD(ercd) == E_ID
ercd = ipsnd_dtq(DTQ_ID1,DATA_AA)
MERCD(ercd) == E_TMOUT (注)ercd = ipsnd_dtq(DTQ_ID2,DATA_88)
MERCD(ercd) == E_OK
ercd = ipsnd_dtq(DTQ_ID2,MEMORY)

10MERCD(ercd) == E_OK

11

return12

MERCD(ercd) == E_OK

13data == DATA_88

No
S1
S2
S3
S4
S5
S6
−

テ

ス

ト 手

順

内

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})
CRE_TSK(TASK_ID4,{TA_HLNG|TA_ACT,EXINF_4,TASK4,ITSKPRI_4,STKSZ,NULL})
CRE_DTQ(DTQ_ID1,{TA_TFIFO,DTQCNT_1,NULL})
CRE_DTQ(DTQ_ID2,{TA_TPRI,DTQCNT_1,NULL})<TASK_ID1:DORMANT><TASK_ID2:DORMANT><TASK_ID3:DORMANT><TASK_ID2:DORMANT>

3

MERCD(ercd) == E_OK

10data == DATA_11

14
15
16
17
18
19
20
21
22

<TASK_ID4:READY>
ercd = tsnd_dtq(ERR_DTQID,DATA_55,TMO_10)
MERCD(ercd) == E_ID
ercd = tsnd_dtq(DTQ_ID1,DATA_55,ERR_TMO)
MERCD(ercd) == E_PAR
ercd = act_tsk(TASK_ID3)−

tsnd_dtq-1

tsnd_dtq-2

MERCD(ercd) == E_OK
ercd = tsnd_dtq(DTQ_ID1,DATA_11,TMO_POL)

913ipsnd_dtq-9

ercd = rcv_dtq(DTQ_ID1,p_data)

812

非タスクコンテキストから呼び出せるサービスコール-７

テスト
項目参照

容

2

11

ipsnd_dtq-2

その5

1

4
5
6
7

ipsnd_dtq-1

ipsnd_dtq5,6,7
ipsnd_dtq3,4,8

14 ercd = rcv_dtq(DTQ_ID2,p_data)
15 MERCD(ercd) == E_OK
16 data == MEMORY
17 ext_tsk( )18ext_tsk( )(注)No.6 E_TMOUTエラーの検出を省略することが製品マニュアルに記載されている場合：MERCD(ercd) == E_OK
DTQ5：
DTQ5：データキュー機能のテスト手順−

tsnd_dtq-7,8
tsnd_dtq5,6,9,18

ercd = tsnd_dtq(DTQ_ID1,MEMORY,TMO_100)
MERCD(ercd) == E_OK
ercd = tsnd_dtq(DTQ_ID1,DATA_77,TMO_200)

MERCD(ercd) == E_OK
ercd = prcv_dtq(DTQ_ID1,p_data)
MERCD(ercd) == E_OK
ercd = slp_tsk( )tsnd_dtq-11

MERCD(ercd) == E_OK
data == MEMORY
ercd = prcv_dtq(DTQ_ID1,p_data)
MERCD(ercd) == E_OK
data == DATA_77
ercd = tsnd_dtq(DTQ_ID1,DATA_11,TMO_POL)

23

3-35

tsnd_dtq-16

tsnd_dtq-19

tsnd_dtq-10

MERCD(ercd) == E_OK
ercd = wup_tsk(TASK_ID3)

24
25
26

MERCD(ercd) == E_OK
ercd = tsnd_dtq(DTQ_ID1,DATA_22,TMO_100)

27

MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID2)2829ercd = tsnd_dtq(DTQ_ID1,DATA_33,TMO_200)

30

MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID1)

31
32
33

ercd = tsnd_dtq(DTQ_ID1,DATA_44,TMO_FEVR)MERCD(ercd) == E_OK
ercd = psnd_dtq(DTQ_ID2,DATA_66)
MERCD(ercd) == E_OK
ercd = dly_tsk(DLYTIM_50)
MERCD(ercd) == E_OK
ercd = prcv_dtq(DTQ_ID1,p_data)

34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55

MERCD(ercd) == E_OK
ercd = slp_tsk( )MERCD(ercd) == E_OK
data == DATA_11
ercd = dly_tsk(DLYTIM_1000)
MERCD(ercd) == E_TMOUT
ercd = slp_tsk( )tsnd_dtq-4,12

MERCD(ercd) == E_OK
ercd = rel_wai(TASK_ID1)
MERCD(ercd) == E_RLWAI
ercd = slp_tsk( )tsnd_dtq-3,17

MERCD(ercd) == E_OK
ercd = chg_pri(TASK_ID2,TSKPRI_3)
MERCD(ercd) == E_OK
ercd = wup_tsk(TASK_ID3)
MERCD(ercd) == E_OK
ercd = tsnd_dtq(DTQ_ID2,DATA_77,TMO_FEVR)

56

MERCD(ercd) == E_OK
ercd = wup_tsk(TASK_ID2)

57
58
59

MERCD(ercd) == E_OK
ercd = tsnd_dtq(DTQ_ID2,DATA_88,TMO_100)

60
61
62
63
64

tsnd_dtq-15

MERCD(ercd) == E_OK
ercd = wup_tsk(TASK_ID1)
MERCD(ercd) == E_OK
ercd = tsnd_dtq(DTQ_ID2,DATA_99,TMO_100)

65
MERCD(ercd) == E_OK
66
ercd = prcv_dtq(DTQ_ID2,p_data)
67 MERCD(ercd) == E_OK
68 ext_tsk( )69
MERCD(ercd) == E_OK
70
data == DATA_66
71
ercd = prcv_dtq(DTQ_ID2,p_data)
72
MERCD(ercd) == E_OK
73
ext_tsk( )74
MERCD(ercd) == E_OK
75
data == DATA_99
76
ercd = prcv_dtq(DTQ_ID2,p_data)
77
MERCD(ercd) == E_OK
78
ext_tsk( )79
MERCD(ercd) == E_OK
80
data == DATA_77
81
ercd = prcv_dtq(DTQ_ID2,p_data)
82
MERCD(ercd) == E_OK
83
data == DATA_88
84
ext_tsk( )(注)No.4 E_PARエラーを検出できるERR_TMOがシステムに存在しない場合は、テストを省略することができる。

3-36

tsnd_dtq-13

tsnd_dtq-14

DTQ6：
DTQ6：データキュー機能のテスト手順

その6

No
S1
S2
S3
S4
S5
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

テ

ト

手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_DTQ(DTQ_ID1,{TA_TFIFO,DTQCNT_0,NULL})
CRE_DTQ(DTQ_ID2,{TA_TFIFO,DTQCNT_1,NULL})
CRE_DTQ(DTQ_ID3,{TA_TFIFO,DTQCNT_2,NULL})<TASK_ID1:READY><TASK_ID2:READY>
ercd = fsnd_dtq(ERR_DTQID,DATA_00)
MERCD(ercd) == E_ID
ercd = fsnd_dtq(DTQ_ID1,DATA_00)
MERCD(ercd) == E_ILUSE
ercd = fsnd_dtq(DTQ_ID2,DATA_11)
MERCD(ercd) == E_OK
ercd = fsnd_dtq(DTQ_ID2,DATA_22)
MERCD(ercd) == E_OK
ercd = prcv_dtq(DTQ_ID2,p_data)
MERCD(ercd) == E_OK
data == DATA_22
ercd = rcv_dtq(DTQ_ID2,p_data)
ercd = fsnd_dtq(DTQ_ID2,DATA_33)
MERCD(ercd) == E_OK
data == DATA_33
ercd = fsnd_dtq(DTQ_ID3,DATA_44)
MERCD(ercd) == E_OK
ercd = fsnd_dtq(DTQ_ID3,DATA_55)
MERCD(ercd) == E_OK
ercd = rcv_dtq(DTQ_ID3,p_data)
MERCD(ercd) == E_OK
data == DATA_44
ercd = rcv_dtq(DTQ_ID3,p_data)
MERCD(ercd) == E_OK
data == DATA_55
ercd = fsnd_dtq(DTQ_ID2,DATA_66)
MERCD(ercd) == E_OK
ercd = rcv_dtq(DTQ_ID2,p_data)
MERCD(ercd) == E_OK
data == DATA_66
ext_tsk( )MERCD(ercd) == E_OK
ext_tsk( )DTQ7：
DTQ7：データキュー機能のテスト手順
No
S1
S2
S3
S4
S5
S6
S7
−
1
2
3
4
5
6
7
8
9
10
11

ス

−
fsnd_dtq-1
fsnd_dtq-2

fsnd_dtq-7

fsnd_dtq-3,4
fsnd_dtq-5

fsnd_dtq-6

その7
テ

ス

ト

手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_DTQ(DTQ_ID1,{TA_TFIFO,DTQCNT_0,NULL})
CRE_DTQ(DTQ_ID2,{TA_TFIFO,DTQCNT_1,NULL})
CRE_DTQ(DTQ_ID3,{TA_TFIFO,DTQCNT_1,NULL})
CRE_DTQ(DTQ_ID4,{TA_TFIFO,DTQCNT_2,NULL})
DEF_INH(INHNO_1,{INHATR_1,INTHDR_1})<TASK_ID1:READY><TASK_ID2:READY>
ercd = rcv_dtq(DTQ_ID2,p_data)<INTHDR_1の割込み発生><INTHDR_1:割込みハンドラ<INTHDR_1:割込みハンドラ>
割込みハンドラ>

ercd = ifsnd_dtq(ERR_DTQID,DATA_77)
MERCD(ercd) == E_ID
ercd = ifsnd_dtq(DTQ_ID1,DATA_77)
MERCD(ercd) == E_ILUSE
ercd = ifsnd_dtq(DTQ_ID2,DATA_88)
MERCD(ercd) == E_OK
ercd = ifsnd_dtq(DTQ_ID3,DATA_99)
MERCD(ercd) == E_OK
ercd = ifsnd_dtq(DTQ_ID3,DATA_AA)

12

MERCD(ercd) == E_OK

13
14
15
16
17
18
19
20
21
22
23
24

ercd = ifsnd_dtq(DTQ_ID4,DATA_11)
MERCD(ercd) == E_OK
ercd = ifsnd_dtq(DTQ_ID4,DATA_22)
MERCD(ercd) == E_OK
returnMERCD(ercd) == E_OK
data == DATA_88
ext_tsk( )−ifsnd_dtq-1
ifsnd_dtq-2

非タスクコンテキストから呼び出せるサービスコール-８

ifsnd_dtq-3,4
ifsnd_dtq-5
ercd = prcv_dtq(DTQ_ID3,p_data)
MERCD(ercd) == E_OK
data == DATA_AA
ercd = prcv_dtq(DTQ_ID4,p_data)

3-37

ifsnd_dtq-7

MERCD(ercd) == E_OK
data == DATA_11
ercd = prcv_dtq(DTQ_ID4,p_data)
MERCD(ercd) == E_OK
data == DATA_22
ext_tsk( )

25
26
27
28
29
30
DTQ8：
DTQ8：データキュー機能のテスト手順

ifsnd_dtq-6

その8

No

テ

ス

ト

手

順

内

テスト
項目参照

容

S1 CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
S2 CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
S3 CRE_TSK(TASK_ID3,{TA_HLNG|TA_ACT,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})
S4 CRE_DTQ(DTQ_ID1,{TA_TFIFO,DTQCNT_1,NULL})
S5 CRE_DTQ(DTQ_ID2,{TA_TFIFO,DTQCNT_0,NULL})<TASK_ID1:READY><TASK_ID2:READY><TASK_ID3:READY>−
1 ercd = rcv_dtq(ERR_DTQID,p_data)
2 MERCD(ercd) == E_ID
3 ercd = rcv_dtq(DTQ_ID1,ERR_pointer)
4 MERCD(ercd) == E_PAR
5 ercd = snd_dtq(DTQ_ID1,DATA_01)
6 MERCD(ercd) == E_OK
7 ercd = rcv_dtq(DTQ_ID1,p_data)
8 MERCD(ercd) == E_OK
9 data == DATA_01
10 ercd = snd_dtq(DTQ_ID1,DATA_02)
11 MERCD(ercd) == E_OK
12 ercd = snd_dtq(DTQ_ID1,DATA_03)
13
ercd = rcv_dtq(DTQ_ID1,p_data)
14 MERCD(ercd) == E_OK
15 ercd = slp_tsk( )16MERCD(ercd) == E_OK
17data == DATA_02
18
ercd = rcv_dtq(DTQ_ID1,p_data)
19
MERCD(ercd) == E_OK
20
data == DATA_03
21
ercd = wup_tsk(TASK_ID1)
22 MERCD(ercd) == E_OK
23 ercd = snd_dtq(DTQ_ID2,DATA_04)
24
MERCD(ercd) == E_OK
25
ercd = rcv_dtq(DTQ_ID2,p_data)
26 MERCD(ercd) == E_OK
27 ercd = rcv_dtq(DTQ_ID1,p_data)
28
MERCD(ercd) == E_OK
29
data == DATA_0430
ercd = rcv_dtq(DTQ_ID1,p_data)
31
ercd = snd_dtq(DTQ_ID1,DATA_05)
32 MERCD(ercd) == E_OK
33 data == DATA_05
34 ercd = rel_wai(TASK_ID2)
35 MERCD(ercd) == E_OK
36 ext_tsk( )37
MERCD(ercd) == E_RLWAI
38
ext_tsk( )39
MERCD(ercd) == E_OK
40
ext_tsk( )(注)No.4 E_PARエラーを検出できるERR_pointerがシステムに存在しない場合は、テストを省略することができる。
DTQ9：
DTQ9：データキュー機能のテスト手順
No
S1
S2
S3
S4
S5
−
1
2
3
4
5
6
7
8
9
10
11

−
rcv_dtq-1
rcv_dtq-2

rcv_dtq-4

rcv_dtq-5,6

rcv_dtq-5

rcv_dtq-7,8

rcv_dtq-9

rcv_dtq-10

rcv_dtq-3,11

その9
テ

ス

ト 手

順

内

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG|TA_ACT,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})
CRE_DTQ(DTQ_ID1,{TA_TFIFO,DTQCNT_0,NULL})
CRE_DTQ(DTQ_ID2,{TA_TFIFO,DTQCNT_1,NULL})<TASK_ID1:READY><TASK_ID2:READY>
ercd = prcv_dtq(ERR_DTQID,p_data)
MERCD(ercd) == E_ID
p_dataにE_PARエラーを検出する値を設定
ercd = prcv_dtq(DTQ_ID1,p_data)
MERCD(ercd) == E_PAR
ercd = prcv_dtq(DTQ_ID1,p_data)
MERCD(ercd) == E_TMOUT
ercd = snd_dtq(DTQ_ID1,DATA_99)
ercd = prcv_dtq(DTQ_ID1,p_data)
MERCD(ercd) == E_OK
ercd = snd_dtq(DTQ_ID2,DATA_11)

3-38

テスト
項目参照

容

<TASK_ID3:READY>−
prcv_dtq-1

prcv_dtq-2
prcv_dtq-3

12 MERCD(ercd) == E_OK
13 ercd = snd_dtq(DTQ_ID2,DATA_22)
14
MERCD(ercd) == E_OK
15
data == DATA_99
16ercd = snd_dtq(DTQ_ID2,DATA_33)
17
ercd = prcv_dtq(DTQ_ID2,p_data)
18 MERCD(ercd) == E_OK
19 ext_tsk( )20
MERCD(ercd) == E_OK
21data == DATA_1122ercd = prcv_dtq(DTQ_ID2,p_data)
23
MERCD(ercd) == E_OK
24
ext_tsk( )25
MERCD(ercd) == E_OK
26
data == DATA_2227
ercd = prcv_dtq(DTQ_ID2,p_data)
28
MERCD(ercd) == E_OK
29
data == DATA_33
30
ext_tsk( )(注)No.5 E_PARエラーを検出できるp_dataがシステムに存在しない場合は、テストを省略することができる。
DTQ10：DTQ10：データキュー機能のテスト手順

prcv_dtq-5,6

prcv_dtq-5

その10

No
S1
S2
S3
S4
S5
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

prcv_dtq-4

テ

ス

ト

手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG|TA_ACT,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})
CRE_DTQ(DTQ_ID1,{TA_TFIFO,DTQCNT_1,NULL})
CRE_DTQ(DTQ_ID2,{TA_TFIFO,DTQCNT_0,NULL})<TASK_ID1:DORMANT><TASK_ID2:DORMANT><TASK_ID3:READY>
ercd = trcv_dtq(ERR_DTQ_ID,p_data,TMO_POL)
MERCD(ercd) == E_ID
p_dataにE_PARエラーを検出する値を設定する
ercd = trcv_dtq(DTQ_ID1,p_data,TMO_POL)
MERCD(ercd) == E_PAR
ercd = trcv_dtq(DTQ_ID1,p_data,ERR_TMO)
MERCD(ercd) == E_PAR
ercd = snd_dtq(DTQ_ID1,DATA_01)
MERCD(ercd) == E_OK
ercd = trcv_dtq(DTQ_ID1,p_data,TMO_POL)
MERCD(ercd) == E_OK
data == DATA_01
ercd = act_tsk(TASK_ID2)−
trcv_dtq-1

trcv_dtq-2
trcv_dtq-3

trcv_dtq-15
trcv_dtq-6

ercd = snd_dtq(DTQ_ID1,DATA_02)
MERCD(ercd) == E_OK
ercd = snd_dtq(DTQ_ID1,DATA_03)

MERCD(ercd) == E_OK
ercd = trcv_dtq(DTQ_ID1,p_data,TMO_1)
MERCD(ercd) == E_OK
ercd = slp_tsk( )trcv_dtq-7,8

MERCD(ercd) == E_OK
data == DATA_02
ercd = trcv_dtq(DTQ_ID1,p_data,TMO_FEVR)MERCD(ercd) == E_OK
data == DATA_03
ercd = wup_tsk(TASK_ID2)

trcv_dtq-7

MERCD(ercd) == E_OK
ercd = snd_dtq(DTQ_ID2,DATA_04)
MERCD(ercd) == E_OK
ercd = trcv_dtq(DTQ_ID2,p_data,TMO_100)
MERCD(ercd) == E_OK
ercd = trcv_dtq(DTQ_ID1,p_data,TMO_100)

trcv_dtq-9,10

MERCD(ercd) == E_OK
data == DATA_04
ercd = act_tsk(TASK_ID1)

trcv_dtq-11

ercd = trcv_dtq(DTQ_ID1,p_data,TMO_200)

MERCD(ercd) == E_OK
ercd = dly_tsk(DLYTIM_50)
MERCD(ercd) == E_OK
ercd = snd_dtq(DTQ_ID1,DATA_05)
MERCD(ercd) == E_OK
data == DATA_05
ercd = trcv_dtq(DTQ_ID1,p_data,TMO_FEVR)

trcv_dtq-12,14

MERCD(ercd) == E_OK
ercd = dly_tsk(DLYTIM_1000)
MERCD(ercd) == E_TMOUT
ext_tsk( )trcv_dtq-5

MERCD(ercd) == E_OK

3-39

49
50
51
52
53
(注)
No.5
No.7

ercd = rel_wai(TASK_ID2)

MERCD(ercd) == E_RLWAI
ext_tsk( )trcv_dtq-4,13,16

MERCD(ercd) == E_OK
ext_tsk( )E_PARエラーを検出できるp_dataがシステムに存在しない場合は、テストを省略することができる。
E_PARエラーを検出できるERR_TMOがシステムに存在しない場合は、テストを省略することができる。

MBX1：
MBX1：メールボックス機能のテスト手順 その1
No
S1
S2
S3
S4
S5
S6
S7
S8
S9
S10
S11

テ

ス

ト

手

順

内

テスト
項目参照

容

CRE_MBX(ERR_MBXID,{TA_TFIFO|TA_MFIFO,MAXMPRI_5,NULL})
E_IDエラーを検出できること。
CRE_MBX(MBX_ID1,{ERR_MBXATR,MAXMPRI_5,NULL})E_RSATRエラーを検出できること。
CRE_MBX(MBX_ID1_2,{TA_TFIFO|TA_MFIFO,ERR_MAXMPRI,NULL})
E_PARエラーを検出できること。
CRE_MBX(MBX_ID1,{TA_TFIFO|TA_MFIFO,MAXMPRI_5,NULL})
CRE_MBX(MBX_ID1,{TA_TFIFO|TA_MFIFO,MAXMPRI_5,NULL})
E_OBJエラーを検出できること。
CRE_MBX(MBX_ID5,{TA_TPRI|TA_MPRI,MAXMPRI_0,NULL})
E_PARエラーを検出できること。

CRE_MBX-1
CRE_MBX-2
CRE_MBX-3

CRE_MBX-4
CRE_MBX-9

MBX2：
MBX2：メールボックス機能のテスト手順 その2
No
S1
S2
S3
S4
S5
−
1
2

テ

ス

ト 手

順

内

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})
CRE_TSK(TASK_ID4,{TA_HLNG|TA_ACT,EXINF_4,TASK4,ITSKPRI_4,STKSZ,NULL})
CRE_MBX(MBX_ID1,{TA_TFIFO|TA_MFIFO,MAXMPRI_3,NULL})<TASK_ID1:DORMANT><TASK_ID2:DORMANT><TASK_ID3:DORMANT>

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

3-40

テスト
項目参照

容

<TASK_ID4:READY>
ercd = snd_mbx(ERR_MBXID,&msg1)
MERCD(ercd) == E_ID
pk_msgにE_PARエラーを検出する値を設定する
ercd = snd_mbx(MBX_ID1,pk_msg)
MERCD(ercd) == E_PAR
ercd = rcv_mbx(ERR_MBXID,ppk_msg)
MERCD(ercd) == E_ID
ppk_msgにE_PARエラーを検出する値を設定する
ercd = rcv_mbx(MBX_ID1,ppk_msg)
MERCD(ercd) == E_PAR
ercd = prcv_mbx(ERR_MBXID,ppk_msg)
MERCD(ercd) == E_ID
ercd = prcv_mbx(MBX_ID1,ppk_msg)
MERCD(ercd) == E_PAR
ppk_msgに正常値を設定
ercd = prcv_mbx(MBX_ID1,ppk_msg)
MERCD(ercd) == E_TMOUT
ercd = snd_mbx(MBX_ID1,&msg1)
MERCD(ercd) == E_OK
ercd = rcv_mbx(MBX_ID1,ppk_msg)
MERCD(ercd) == E_OK
ppk_msg == msg1の先頭アドレス
ercd = snd_mbx(MBX_ID1,&msg2)
MERCD(ercd) == E_OK
ercd = prcv_mbx(MBX_ID1,ppk_msg)
MERCD(ercd) == E_OK
ppk_msg==msg2の先頭アドレス
ercd = snd_mbx(MBX_ID1,&msg3)
MERCD(ercd) == E_OK
ercd = snd_mbx(MBX_ID1,&msg2)
MERCD(ercd) == E_OK
ercd = snd_mbx(MBX_ID1,&msg1)
MERCD(ercd) == E_OK
ercd = prcv_mbx(MBX_ID1,ppk_msg)
MERCD(ercd) == E_OK
ppk_msg==msg3の先頭アドレス
ercd = prcv_mbx(MBX_ID1,ppk_msg)
MERCD(ercd) == E_OK
ppk_msg==msg2の先頭アドレス
ercd = prcv_mbx(MBX_ID1,ppk_msg)
MERCD(ercd) == E_OK
ppk_msg==msg1の先頭アドレス
ercd = act_tsk(TASK_ID3)−
snd_mbx-1

snd_mbx-2
rcv_mbx-1

rcv_mbx-2
prcv_msg-1
prcv_msg-2

prcv_mbx-3
CRE_MBX-5

rcv_mbx-4

prcv_mbx-4

snd_mbx-7

snd_mbx-7

snd_mbx-7

44
45
46
47
48
49
50
51
52

ercd = rcv_mbx(MBX_ID1,ppk_msg)

ercd = OK
ercd = act_tsk(TASK_ID2)
ercd = rcv_mbx(MBX_ID1,ppk_msg)

MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID1)
ercd = rcv_mbx(MBX_ID1,ppk_msg)

MERCD(ercd) == E_OK
ercd = snd_mbx(MBX_ID1,&msg1)
MERCD(ercd) == E_OK

53

ppk_msg==msg1の先頭アドレス
54
55
ext_tsk( )56
MERCD(ercd) == E_OK
57
ercd = snd_mbx(MBX_ID1,&msg2)
58
MERCD(ercd) == E_OK
ppk_msg==msg2の先頭アドレス
59
60
ext_tsk( )61
MERCD(ercd) == E_OK
62
ercd = rel_wai(TASK_ID1)
63 MERCD(ercd) == E_RLWAI
64 ext_tsk( )65
MERCD(ercd) == E_OK
66
ext_tsk( )(注)
No.5
E_PARエラーを検出できるpk_msgがシステムに存在しない場合は、テストを省略することができる。
No.10 E_PARエラーを検出できるppk_msgがシステムに存在しない場合は、テストを省略することができる。
No.14 E_PARエラーを検出できるppk_msgがシステムに存在しない場合は、テストを省略することができる。

snd_mbx-5
rcv_mbx-5
snd_mbx-4,6

rcv_mbx-6

rcv_mbx-3

MBX3：
MBX3：メールボックス機能のテスト手順 その3
No
S1
S2
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

テ

ス

ト

手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})(優先度付きメッセージを4個用意し、msg1,msg21,msg22,msg3とすること。)
CRE_MBX(MBX_ID1,{TA_TFIFO|TA_MPRI,MAXMPRI_3,NULL})<TASK_ID1:READY>
msg3のmsgpriにMSGPRI_3を設定
ercd = snd_mbx(MBX_ID1,&msg3)
MERCD(ercd) == E_OK
msg21のmsgpriにMSGPRI_2を設定
ercd = snd_mbx(MBX_ID1,&msg21)
MERCD(ercd) == E_OK
msg22のmsgpriにMSGPRI_2を設定
ercd = snd_mbx(MBX_ID1,&msg22)
MERCD(ercd) == E_OK
msg1のmsgpriにMSGPRI_1を設定
ercd = snd_mbx(MBX_ID1,&msg1)
MERCD(ercd) == E_OK
ercd = prcv_mbx(MBX_ID1,ppk_msg)
MERCD(ercd) == E_OK
ppk_msg==msg1の先頭アドレス
ercd = prcv_mbx(MBX_ID1,ppk_msg)
MERCD(ercd) == E_OK
ppk_msg==msg21の先頭アドレス
ercd = prcv_mbx(MBX_ID1,ppk_msg)
MERCD(ercd) == E_OK
ppk_msg==msg22の先頭アドレス
ercd = prcv_mbx(MBX_ID1,ppk_msg)
MERCD(ercd) == E_OK
ppk_msg==msg3の先頭アドレス
msg1のmsgpriにERR_MSGPRIを設定
ercd = snd_mbx(MBX_ID1,&msg1)
MERCD(ercd) == E_PAR
ext_tsk( )−CRE_MBX-6

snd_mbx-9

snd_mbx-8

CRE_MBX-10

snd_mbx-3

MBX4：
MBX4：メールボックス機能のテスト手順 その4
No
S1
S2
S3
S4
S5
−
1
2
3

テ

ス

ト 手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2_1,{TA_HLNG,EXINF_2_1,TASK2_1,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID2_2,{TA_HLNG,EXINF_2_2,TASK2_2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG|TA_ACT,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})(優先度付きメッセージを３個用意し、msg1,msg21,msg22とすること。)
CRE_MBX(MBX_ID1,{TA_TPRI|TA_MFIFO,MAXMPRI_3,NULL})<TASK_ID1:DORMANT><TASK_ID2_1:DORMANT><TASK_ID2_2:DORMANT><TASK_ID3:READY>
ercd = act_tsk(TASK_ID2_1)

ercd = rcv_mbx(MBX_ID1,ppk_msg)

MERCD(ercd) == E_OK

3-41

−

4
5
6
7
8
9
10

ercd = act_tsk(TASK_ID2_2)
ercd = rcv_mbx(MBX_ID1,ppk_msg)

MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID1)
ercd = rcv_mbx(MBX_ID1,ppk_msg)

MERCD(ercd) == E_OK
ercd = snd_mbx(MBX_ID1,&msg1)

11

MERCD(ercd) == E_OK

12
13
14
15
16
17
18
19
20
21
22
23
24
25

ppk_msg==msg1の先頭アドレス
ext_tsk( )CRE_MBX-7
rcv_mbx-7

MERCD(ercd) == E_OK
ercd = snd_mbx(MBX_ID1,&msg21)
MERCD(ercd) == E_OK
ppk_msg==msg21の先頭アドレス
ext_tsk( )MERCD(ercd) == E_OK
ercd = snd_mbx(MBX_ID1,&msg22)
MERCD(ercd) == E_OK
ppk_msg==msg22の先頭アドレス
ext_tsk( )rcv_mbx-8

MERCD(ercd) == E_OK
ext_tsk( )MBX5：
MBX5：メールボックス機能のテスト手順 その5
No
S1
S2
S3
S4
S5
−

テ

ス

ト 手

順

内

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})
CRE_TSK(TASK_ID4,{TA_HLNG|TA_ACT,EXINF_4,TASK4,ITSKPRI_4,STKSZ,NULL})(優先度付きメッセージを３個用意し、msg1,msg2,msg3とすること。)
CRE_MBX(MBX_ID1,{TA_TFIFO|TA_MFIFO,MAXMPRI_3,NULL})<TASK_ID1:DORMANT><TASK_ID2:DORMANT><TASK_ID3:DORMANT>

1
2
3
4
5
6
7
8
9
10
11
12
13

−

trcv_mbx-1

trcv_mbx-2

trcv_mbx-3

trcv_mbx-12
trcv_mbx-6

MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID2)

15
16ercd = trcv_mbx(MBX_ID1,ppk_msg,TMO_200)

17

MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID1)

18
19

21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

<TASK_ID4:READY>
ercd = trcv_mbx(ERR_MBXID,ppk_msg,TMO_10)
MERCD(ercd) == E_ID
ppk_msgにE_PARエラーを検出する値を設定する
ercd = trcv_mbx(MBX_ID1,ppk_msg,TMO_10)
MERCD(ercd) == E_PAR
ercd = trcv_mbx(MBX_ID1,ppk_msg,ERR_TMO)
MERCD(ercd) == E_PAR
ercd = snd_mbx(MBX_ID1,&msg1)
MERCD(ercd) == E_OK
ercd = trcv_mbx(MBX_ID1,ppk_msg,TMO_POL)
MERCD(ercd) == E_OK
ppk_msg==msg1の先頭アドレス
ercd = act_tsk(TASK_ID3)

ercd = trcv_mbx(MBX_ID1,ppk_msg,TMO_100)

14

20

テスト
項目参照

容

ercd = trcv_mbx(MBX_ID1,ppk_msg,TMO_FEVR)MERCD(ercd) == E_OK
ercd = dly_tsk(DLYTIM_50)
MERCD(ercd) == E_OK
ercd = snd_mbx(MBX_ID1,&msg1)
MERCD(ercd) == E_OK
ppk_msg==msg1の先頭アドレス
ext_tsk( )trcv_mbx-7,11

MERCD(ercd) == E_OK
ercd = dly_tsk(DLYTIM_300)
MERCD(ercd) == E_TMOUT
ext_tsk( )trcv_mbx-5

MERCD(ercd) == E_OK
ercd = dly_tsk(DLYTIM_1000)
MERCD(ercd) == E_OK
ercd = rel_wai(TASK_ID1)
MERCD(ercd) == E_RLWAI
ext_tsk( )trcv_mbx-4,8,13

3-42

38
39
(注)
No.5
No.7

MERCD(ercd) == E_OK
ext_tsk( )E_PARエラーを検出できるppk_msgがシステムに存在しない場合は、テストを省略することができる。
E_PARエラーを検出できるppk_msgがシステムに存在しない場合は、テストを省略することができる。

MBX6：
MBX6：メールボックス機能のテスト手順 その6
No
S1
S2
S3
S4
S5
−
1

テ

ス

ト 手

順

内

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2_1,{TA_HLNG,EXINF_2_1,TASK2_1,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID2_2,{TA_HLNG,EXINF_2_2,TASK2_2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG|TA_ACT,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})(優先度付きメッセージを３個用意し、msg1,msg21,msg22とすること。)
CRE_MBX(MBX_ID1,{TA_TPRI|TA_MPRI,MAXMPRI_3,NULL})<TASK_ID1:DORMANT><TASK_ID2_1:DORMANT><TASK_ID2_2:DORMANT><TASK_ID2_2:DORMANT>−MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID2_2)

3
4
ercd = trcv_mbx(MBX_ID1,ppk_msg,TMO_FEVR)

5MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID1)

6
7

9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

<TASK_ID3:READY>
ercd = act_tsk(TASK_ID2_1)

ercd = trcv_mbx(MBX_ID1,ppk_msg,TMO_100)

2

8

テスト
項目参照

容

ercd = trcv_mbx(MBX_ID1,ppk_msg,TMO_200)

MERCD(ercd) == E_OK
msg1のmsgpriにMSGPRI_1を設定
ercd = snd_mbx(MBX_ID1,&msg1)
MERCD(ercd) == E_OK
ppk_msg==msg1の先頭アドレス
ext_tsk( )trcv_mbx-9

MERCD(ercd) == E_OK
msg21のmsgpriにMSGPRI_2を設定
ercd = snd_mbx(MBX_ID1,&msg21)
MERCD(ercd) == E_OK
ppk_msg==msg21の先頭アドレス
ext_tsk( )CRE_MBX-8

MERCD(ercd) == E_OK
msg22のmsgpriにMSGPRI_2を設定
ercd = snd_mbx(MBX_ID1,&msg22)
MERCD(ercd) == E_OK
ppk_msg==msg22の先頭アドレス
ext_tsk( )trcv_mbx-10

MERCD(ercd) == E_OK
ext_tsk( )MPF1：
MPF1：固定長メモリプール機能のテスト手順 その1
No
S1
S2
S3
S4
S5
S6
S7
S8
S9
S10
S11
S12

テ

ス

ト 手

順

内

テスト
項目参照

容

CRE_MPF(ERR_MPFID,{TA_TFIFO,BLKCNT_2048,BLKSZ_256,NULL})
E_IDエラーを検出できること
CRE_MPF(MPF_ID1,{ERR_MPFATR,BLKCNT_10,BLKSZ_10,NULL})E_RSATRエラーを検出できること。
CRE_MPF(MPF_ID1,{TA_TFIFO,BLKCNT_0,BLKSZ_10,NULL})
E_PARエラーを検出できること。
CRE_MPF(MPF_ID1,{TA_TFIFO,BLKCNT_10,BLKSZ_0,NULL})
E_PARエラーを検出できること。
CRE_MPF(MPF_ID1,{TA_TFIFO,BLKCNT_1,BLKSZ_10,NULL})
CRE_MPF(MPF_ID1,{TA_TFIFO,BLKCNT_1,BLKSZ_10,NULL})
E_OBJエラーを検出できること
CRE_MPF(MPF_ID2,{TA_TPRI,BLKCNT_1,BLKSZ_10,NULL})

CRE_MPF-1
CRE_MPF-2
CRE_MPF-3
CRE_MPF-4

CRE_MPF-5
CRE_MPF-7

MPF2：
MPF2：固定長メモリプール機能のテスト手順 その2（タスク単位で変数blkを設けること）
No
S1
S2
S3
S4
S5
S6
−
1
2
3
4

テ

ス

ト 手

順

内

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})
CRE_TSK(TASK_ID4,{TA_HLNG|TA_ACT,EXINF_4,TASK4,ITSKPRI_4,STKSZ,NULL})
CRE_MPF(MPF_ID1,{TA_TFIFO,BLKCNT_1,BLKSZ_10,NULL})
CRE_MPF(MPF_ID2,{TA_TFIFO,BLKCNT_1,BLKSZ_10,NULL})<TASK_ID1:DORMANT><TASK_ID2:DORMANT><TASK_ID3:DORMANT><TASK_ID1:DORMANT>

3-43

テスト
項目参照

容

<TASK_ID4:READY>
ercd = get_mpf(ERR_MPFID,p_blk)
MERCD(ercd) == E_ID
ercd = pget_mpf(ERR_MPFID,p_blk)
MERCD(ercd) == E_ID−
get_mpf-1
pget_mpf-1

13
14
15

p_blkにE_PARエラーを検出する値を設定する
ercd = get_mpf(MPF_ID1,p_blk)
MERCD(ercd) == E_PAR
ercd = pget_mpf(MPF_ID1,p_blk)
MERCD(ercd) == E_PAR
ercd = rel_mpf(ERR_MPFID,blk)
MERCD(ercd) == E_ID
blkにメモリブロックの先頭アド
レス以外を設定する
ercd = rel_mpf(MPF_ID1,blk)
MERCD(ercd) == E_PAR
ercd = pget_mpf(MPF_ID1,&blk)

16

MERCD(ercd) == E_OK

17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

blk==メモリブロックの先頭アドレス
ercd = rel_mpf(MPF_ID2,blk)
MERCD(ercd) == E_PAR
ercd = pget_mpf(MPF_ID1,p_blk)
MERCD(ercd) == E_TMOUT
ercd = rel_mpf(MPF_ID1,blk)
MERCD(ercd) == E_OK
ercd = get_mpf(MPF_ID1,p_blk)
MERCD(ercd) == E_OK
blk==メモリブロックの先頭アドレス
ercd = act_tsk(TASK_ID3)

5
6
7
8
9
10
11
12

get_mpf-2
pget_mpf-2
rel_mpf-1

rel_mpf-3
CRE_MPF-6
pget_mpf-4
pget_mpf-4
rel_mpf-2
pget_mpf-3,5

get_mpf-4
get_mpf-4

ercd = get_mpf(MPF_ID1,&blk)

MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID2)
ercd = get_mpf(MPF_ID1,&blk)

MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID1)
ercd = get_mpf(MPF_ID1,&blk)

MERCD(ercd) == E_OK
ercd = rel_mpf(MPF_ID1,blk)

37

MERCD(ercd) == E_OK

38
39

blk==メモリブロック先頭アドレス
ercd = rel_mpf(MPF_ID1,blk)

CRE_MPF-8,9
get_mpf-5

get_mpf-6
rel_mpf-6
rel_mpf4,7

MERCD(ercd) == E_OK

40

blk==メモリブロック先頭アドレス(blkはNo.38で獲得したアドレスと同一)
ercd = rel_wai(TASK_ID1)

4142
43 MERCD(ercd) == E_RLWAI
44 ext_tsk( )45
MERCD(ercd) == E_OK
46
ercd = rel_mpf(MPF_ID1,blk)
47
MERCD(ercd) == E_OK
48
ext_tsk( )49
MERCD(ercd) == E_OK
50
ext_tsk( )
51
52
(注)
No.7 E_PARエラーを検出できるp_blkがシステムに存在しない場合は、テストを省略することができる。
No.9 E_PARエラーを検出できるp_blkがシステムに存在しない場合は、テストを省略することができる。

get_mpf-3

rel_mpf-5

MERCD(ercd) == E_OK
ext_tsk( )MPF3：
MPF3：固定長メモリプール機能のテスト手順 その3（タスク単位で変数blkを設けること）
No
S1
S2
S3
S4
S5
−
1
2
3
4
5
6
7
8
9
10
11
12

テ

ス

ト 手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2_1,{TA_HLNG,EXINF_2_1,TASK2_1,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID2_2,{TA_HLNG,EXINF_2_2,TASK2_2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG|TA_ACT,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})
CRE_MPF(MPF_ID1,{TA_TPRI,BLKCNT_1,BLKSZ_10,NULL})<TASK_ID1:DORMANT><TASK_ID2_1:DORMANT><TASK_ID2_2:DORMANT><TASK_ID3:READY>
ercd = pget_mpf(MPF_ID1,&blk)
MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID2_1)

ercd = get_mpf(MPF_ID1,&blk)

MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID2_2)
ercd = get_mpf(MPF_ID1,&blk)

MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID1)
ercd = get_mpf(MPF_ID1,&blk)

MERCD(ercd) == E_OK
ercd = rel_mpf(MPF_ID1,blk)

3-44−
CRE_MBX-7

13
14
15
16
17
18
19
20
21
22
23
24
25
26

MERCD(ercd) == E_OK
ercd = rel_mpf(MPF_ID1,blk)
MERCD(ercd) == E_OK
ext_tsk( )get_mpf-7

MERCD(ercd) == E_OK
ercd = rel_mpf(MPF_ID1,blk)
MERCD(ercd) == E_OK
ext_tsk( )MERCD(ercd) == E_OK
ercd = rel_mpf(MPF_ID1,blk)
MERCD(ercd) == E_OK
ext_tsk( )get_mpf-8

MERCD(ercd) == E_OK
ext_tsk( )MPF4：
MPF4：固定長メモリプール機能のテスト手順 その4（タスク単位で変数blkを設けること）
No
S1
S2
S3
S4
S5
−

テ

ス

ト 手

順

内

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})
CRE_TSK(TASK_ID4,{TA_HLNG|TA_ACT,EXINF_4,TASK4,ITSKPRI_4,STKSZ,NULL})
CRE_MPF(MPF_ID1,{TA_TFIFO,BLKCNT_1,BLKSZ_10,NULL})<TASK_ID1:DORMANT><TASK_ID2:DORMANT><TASK_ID3:DORMANT>

1
2
3
4
5
6
7
8
9
10
11

−

tget_mpf-1

tget_mpf-2

tget_mpf-3

tget_mpf-6,12
tget_mpf-6

MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID2)

1314ercd = tget_mpf(MPF_ID1,&blk,TMO_200)

15

MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID1)

16
17ercd = tget_mpf(MPF_ID1,&blk,TMO_FEVR)MERCD(ercd) == E_OK
ercd = rel_mpf(MPF_ID1,blk)

19
20
21
22
23
24
25
26

<TASK_ID4:READY>
ercd = tget_mpf(ERR_MPFID,p_blk,TMO_POL)
MERCD(ercd) == E_ID
p_blkにE_PARエラーを検出する値を設定する
ercd = tget_mpf(MPF_ID1,p_blk,TMO_POL)
MERCD(ercd) == E_PAR
ercd = tget_mpf(MPF_ID1,&blk,ERR_TMO)
MERCD(ercd) == E_PAR
ercd = tget_mpf(MPF_ID1,p_blk,TMO_POL)
MERCD(ercd) == E_OK
blk==メモリブロックの先頭アドレス
ercd = act_tsk(TASK_ID3)

ercd = tget_mpf(MPF_ID1,&blk,TMO_100)

12

18

テスト
項目参照

容

MERCD(ercd) == E_OK
blk==メモリブロック先頭アドレス
ercd = dly_tsk(DLYTIM_500)

tget_mpf-7,11

MERCD(ercd) == E_OK
ext_tsk( )tget_mpf-5
システム時刻管理-4

MERCD(ercd) == E_TMOUT

27
ext_tsk( )28
MERCD(ercd) == E_OK
29
ercd = rel_wai(TASK_ID1)
30 MERCD(ercd) == E_RLWAI
31 ext_tsk( )32
MERCD(ercd) == E_OK
33
ext_tsk( )(注)No.5 E_PARエラーを検出できるp_blkがシステムに存在しない場合は、テストを省略することができる。
No.7 E_PARエラーを検出できるERR_TMOがシステムに存在しない場合は、テストを省略することができる。

3-45

tget_mpf-4,8,13

MPF5：
MPF5：固定長メモリプール機能のテスト手順 その5（タスク単位で変数blkを設けること）
No
S1
S2
S3
S4
S5
−

テ

ス

ト

手

順

内

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2_1,{TA_HLNG,EXINF_2_1,TASK2_1,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID2_2,{TA_HLNG,EXINF_2_2,TASK2_2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG|TA_ACT,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})
CRE_MPF(MPF_ID1,{TA_TPRI,BLKCNT_1,BLKSZ_10,NULL})<TASK_ID1:DORMANT><TASK_ID2_1:DORMANT><TASK_ID2_2:DORMANT>

1
2
3

−

MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID2_2)

56
ercd = tget_mpf(MPF_ID1,&blk,TMO_FEVR)

7

MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID1)

8
9

11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

<TASK_ID3:READY>
ercd = tget_mpf(MPF_ID1,&blk,TMO_POL)
MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID2_1)

ercd = tget_mpf(MPF_ID1,&blk,TMO_100)

4

10

テスト
項目参照

容

ercd = tget_mpf(MPF_ID1,&blk,TMO_200)

MERCD(ercd) == E_OK
ercd = rel_mpf(MPF_ID1,blk)
MERCD(ercd) == E_OK
blk==メモリブロックの先頭アドレス
ercd = rel_mpf(MPF_ID1,blk)
MERCD(ercd) == E_OK
ext_tsk( )tget_mpf-9

MERCD(ercd) == E_OK
blk==メモリブロックの先頭アドレス
ercd = rel_mpf(MPF_ID1,blk)
MERCD(ercd) == E_OK
ext_tsk( )MERCD(ercd) == E_OK
blk==メモリブロックの先頭アドレス
ercd = rel_mpf(MPF_ID1,blk)
MERCD(ercd) == E_OK
ext_tsk( )tget_mpf-10

MERCD(ercd) == E_OK
ext_tsk( )TIM：（本テストは、システム初期化直後に実行すること。）
TIM：システム時刻管理機能のテスト手順（本テストは、システム初期化直後に実行すること。）
No

テ

ス

ト

手

順

内

容

S1
−
1
2

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})<TASK_ID1:READY>
ercd = get_tim(&systim2)
MERCD(ercd) == E_OK

3

systim2 == 0

4
5
6
7
8
9
10
11
12
13
14
15
16

systimにE_PARエラーを返す値を設定
ercd = get_tim(&systim)
MERCD(ercd) == E_PAR
ercd = set_tim(&systim)
MERCD(ercd) == E_PAR
systimにE_PARエラーを返す値を設定
ercd = set_tim(&systim)
MERCD(ercd) == E_PAR
systim1にSYSTIM_50を設定
ercd = set_tim(&systim1)
MERCD(ercd) == E_OK
ercd = get_tim(&systim2)
MERCD(ercd) == E_OK

17systim2 ≧ SYSTIM_50

18
19
20
21

ercd = dly_tsk(DLYTIM_16)
MERCD(ercd) == E_OK
ercd = get_tim(p_systim)
MERCD(ercd) == E_OK

22systim ≧ systim2 + DLYTIM_16

テスト
項目参照
−

システム時刻管理-1
システム初期化手順-3

get_tim-1
set_tim-1

set_tim-2

set_tim-3
get_tim-2

システム時刻管理-2
isig_tim-1

23 ext_tsk( )(注)
No.6
E_PARエラーを検出できるp_systimがシステムに存在しない場合は、テストを省略することができる。
No.8
E_PARエラーを検出できるp_systimがシステムに存在しない場合は、テストを省略することができる。
No.11 E_PARエラーを検出できるp_systimがシステムに存在しない場合は、テストを省略することができる。

3-46

CYC1：
CYC1：周期ハンドラ機能のテスト手順

その1

No

テ

ス

ト

手

順

内

テスト
項目参照

容

S1 CRE_CYC(CYC_ID1,{ERR_CYCATR,EXINF_CYC1,CYCHDR_1,CYCTIM_10,CYCPHS_5})
S2 E_RSATRエラーを検出できること
S3 CRE_CYC(CYC_ID1,{TA_HLNG,EXINF_CYC1,ERR_CYCHDR,CYCTIM_10,CYCPHS_5})
S4 E_PARエラーを検出できること
S5 CRE_CYC(CYC_ID1,{TA_HLNG|TA_STA,EXINF_CYC1,CYCHDR_1,CYCTIM_0,CYCPHS_5})
S6 E_PARエラーを検出できること
S7 CRE_CYC(CYC_ID1,{TA_HLNG|TA_STA,EXINF_CYC1,CYCHDR_1,CYCTIM_0,ERR_CYCPHS})S8 E_PARエラーを検出できること(注)
No.S4 E_PARエラーを検出できるERR_CYCHDRがシステムに存在しない場合は、テストを省略することができる。
CYC2：
CYC2：周期ハンドラ機能のテスト手順

CRE_CYC-1
CRE_CYC-2
CRE_CYC-3
CRE_CYC-4

その2

No

テ

ス

ト 手

順

内

テスト
項目参照

容

S1
S2
S3
−
1
2
3
4
5
6
7
8
9

CRE_CYC(CYC_ID1,{TA_HLNG|TA_STA,EXINF_CYC1,CYCHDR_1,CYCTIM_10,CYCPHS_5})
CRE_CYC(CYC_ID2,{TA_HLNG,EXINF_CYC2,CYCHDR_2,CYCTIM_55,CYCPHS_0})
CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})<CYCHDR_1:周期ハンドラ<CYCHDR_2:周期ハンドラ<TASK_ID1:READY><CYCHDR_1:周期ハンドラ>
周期ハンドラ><CYCHDR_2:周期ハンドラ>
周期ハンドラ>
共通変数cyc_work1,cyc_work2を0クリア
ercd = sta_cyc(ERR_CYCID)MERCD(ercd) == E_ID
ercd = stp_cyc(ERR_CYCID)MERCD(ercd) == E_ID
ercd = stp_cyc(CYC_ID2)
MERCD(ercd) == E_OK
ercd = dly_tsk(DLYTIM_100)
MERCD(ercd) == E_OK

10

cyc_work2 == 0

11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

cyc_work1 ≧ 9
ercd = stp_cyc(CYC_ID1)
MERCD(ercd) == E_OK
work = cyc_work1(カウンタのセーブ)
ercd = dly_tsk(DLYTIM_100)
MERCD(ercd) == E_OK
cyc_work1 == work
ercd = sta_cyc(CYC_ID2)
MERCD(ercd) == E_OK
ercd = dly_tsk(DLYTIM_100)
MERCD(ercd) == E_OK
cyc_work2 == 1
ercd = sta_cyc(CYC_ID2)
MERCD(ercd) == E_OK
ercd = dly_tsk(DLYTIM_50)
MERCD(ercd) == E_OK
cyc_work2 == 1
ercd = stp_cyc(CYC_ID2)
MERCD(ercd) == E_OK
ext_tsk( )−sta_cyc-1
stp_cyc-1
stp_cyc-3

周期ハンドラ-2
CRE_CYC-6
CRE_CYC-5,7

stp_cyc-2

sta_cyc-2

sta_cyc-3<CYCTIM_10周期に起動される＞

32

exinf == EXINF_CYC1

33
34
35
36
37
38

cyc_work1 ++return

システム時刻管理-6
周期ハンドラ-1< CYCTIM_55周期に起動される＞
exinf == EXINF_CYC2
cyc_work2 ++returnSYS1：SYS1：システム状態管理機能のテスト手順 その1
No
S1
S2
S3
S4
−
1
2
3
4
5
6
7
8

テ

ス

ト

手

順

内

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG|TA_ACT,EXINF_3,TASK3,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID4,{TA_HLNG|TA_ACT,EXINF_4,TASK4,ITSKPRI_1,STKSZ,NULL})<TASK_ID1:READY><TASK_ID2:READY><TASK_ID3:READY>
ercd = rot_rdq(ERR_TSKPRI)
MERCD(ercd) == E_PAR
ercd = get_tid(p_tskid)
MERCD(ercd) == E_OK
tskid == TASK_ID1
state = sns_dpn( )state == FALSE
ercd = loc_cpu( )

3-47

テスト
項目参照

容

<TASK_ID4:READY>−
rot_rdq-1

get_tid-1
sns_dpn-4

910MERCD(ercd) == E_OK
state = sns_loc( )11state == TRUE

12
13
14
15
16
17
18
19
20

state = sns_dpn( )state == TRUE
ercd = loc_cpu( )MERCD(ercd) == E_OK
state = sns_loc( )state == TRUE
ercd = unl_cpu( )MERCD(ercd) == E_OK
state = sns_loc( )21state == FALSE

22
23
24
25
26
27
28
29
30

ercd = unl_cpu( )MERCD(ercd) == E_OK
state = sns_loc( )state == FALSE
state = sns_ctx( )state == FALSE
ercd = dis_dsp( )MERCD(ercd) == E_OK
state = sns_dsp( )31state == TRUE

32
33
34
35
36
37
38
39
40

state = sns_dpn( )state == TRUE
ercd = dis_dsp( )MERCD(ercd) == E_OK
state = sns_dsp( )state == TRUE
ercd = ena_dsp( )MERCD(ercd) == E_OK
state = sns_dsp( )41state == FALSE

42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69

ercd = ena_dsp( )MERCD(ercd) == E_OK
state = sns_dsp( )state == FALSE
ercd = rot_rdq(TPRI_SELF)

loc_cpu-1
sns_loc-1
sns_dpn-2

loc_cpu-2

unl_cpu-1
sns_loc-2

unl_cpu-2
sns_ctx-1

dis_dsp-1
sns_dsp-1
sns_dpn-3

dis_dsp-2

ena_dsp-1
sns_dsp-2

ena_dsp-2
ercd = rot_rdq(TSKPRI_1)
ercd = rot_rdq(TPRI_SELF)
ercd = rot_rdq(TSKPRI_1)

MERCD(ercd) == E_OK
ercd = chg_pri(TASK_ID2,TSKPRI_2)
MERCD(ercd) == E_OK
ercd = chg_pri(TASK_ID3,TSKPRI_2)
MERCD(ercd) == E_OK
ercd = chg_pri(TASK_ID4,TSKPRI_2)
MERCD(ercd) == E_OK
ercd = rot_rdq(TSKPRI_2)
MERCD(ercd) == E_OK
ercd = rot_rdq(TSKPRI_2)
MERCD(ercd) == E_OK
ercd = dly_tsk(DLYTIM_20)

rot_rdq-3

MERCD(ercd) == E_OK
ext_tsk( )MERCD(ercd) == E_OK
ext_tsk( )MERCD(ercd) == E_OK
ext_tsk( )rot_rdq-2

MERCD(ercd) == E_OK
ext_tsk( )SYS2：
SYS2：システム状態管理機能のテスト手順 その2
No
S1
S2
S3
S4
−
1

テ

ス

ト

手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG|TA_ACT,EXINF_3,TASK3,ITSKPRI_1,STKSZ,NULL})
DEF_INH(INHNO,{INHATR,INTHDR_1})<TASK_ID1:READY><TASK_ID2:READY><TASK_ID3:READY><INTHDR_1:割込みハンドラ<INTHDR_1:割込みハンドラ>
割込みハンドラ>
<１回目>
<２回目>

−

INTHDR_1の割込み発生
ercd = irot_rdq(ERR_TSKPRI)
MERCD(ercd) == E_PAR

2
3

3-48

irot_rdq-1

ercd = irot_rdq(TPRI_SELF)
MERCD(ercd) == E_PAR
ercd = iget_tid(p_tskid)

irot_rdq-3

7tskid== TASK_ID1

非タスクコンテキストから呼び出せるサービスコール-11
iget_tid-1

8

ercd = iloc_cpu( )9MERCD(ercd) == E_OK

10
11
12
13
14
15
16

state = sns_loc( )state == TRUE
ercd = iloc_cpu( )MERCD(ercd) == E_OK
state = sns_loc( )state == TRUE
ercd = iunl_cpu( )17MERCD(ercd) == E_OK

18
19
20
21
22
23
24
25

state = sns_loc( )state == FALSE
ercd = iunl_cpu( )MERCD(ercd) == E_OK
state = sns_loc( )state == FALSE
state = sns_ctx( )state == TRUE
ercd = irot_rdq(TSKPRI_1)

4
5
6

26
27

MERCD(ercd) == E_OK

28
29
30
31
32

return

非タスクコンテキストから呼び出せるサービスコール-12
iloc_cpu-1

iloc_cpu-2
非タスクコンテキストから呼び出せるサービスコール-13
iunl_cpu-1

iunl_cpu-2
sns_ctx-2

非タスクコンテキストから呼び出せるサービスコール-10

ext_tsk( )ext_tsk( )irot_rdq-2

10msec後に割込み発生
ext_tsk( )ercd = iget_tid(p_tskid)
tskid == TSK_NONE
state = sns_dpn( )state = TRUE
return

33
34
35
36
37
INH1：
INH1：割込み管理機能のテスト手順

iget_tid-2
sns_dpn-1

その1

No

テ

S1
S2
S3
S4
S5
S6

DEF_INH(INHNO_1,{ERR_INHATR,INTHDR_1})
E_RSATRエラーを検出できること。
DEF_INH(ERR_INHNO,{INHATR,INTHDR_1})
E_PARエラーを検出できること。
DEF_INH(INHNO_1,{INHATR,ERR_INTHDR})
E_PARエラーを検出できること。

S7

DEF_INH(INHNO_1,{INHATR,INTHDR_1})

ス

ト

手

順

内

容

テスト
項目参照
DEF_INH-1
DEF_INH-2
DEF_INH-3
静的APIの文法とパラメータ-３

S8 CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})<TASK_ID1:READY>−<INTHDR_1:割込みハンドラ<INTHDR_1:割込みハンドラ>
割込みハンドラ>INHNO_1の割込み発生
1
2
return３ ext_tsk( )(注)No.S6 E_PARエラーを検出できるERR_INTHDRがシステムに存在しない場合は、テストを省略することができる。

−
DEF_INH-4

ISR1：
ISR1：割込みサービスルーチンのテスト手順 その1
No
S1
S2
S3
S4
S5
S6
S7
S8
−
1
2

テ

ス

ト

手

順

内

容

ATT_ISR(ERR_ISRATR,{EXINF_1,INTNO_1,ISR_1})
E_RSATRエラーを検出できること。
ATT_ISR(TA_HLNG,{EXINF_1,ERR_INTNO,ISR_1})
E_PARエラーを検出できること。
ATT_ISR({TA_HLNG,EXINF_1,INTNO_1,ISR_ADR_0})
E_PARエラーを検出できること。
ATT_ISR({TA_HLNG,EXINF_1,INTNO_1,ISR_1})
CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})<TASK_ID1:READY><ISR_1:割込みサービスルーチン<ISR_1:割込みサービスルーチン>
割込みサービスルーチン>
INTNO_1の割込み番号に対応する割込み発生

exinf == EXINF_1

3-49

テスト
項目参照
ATT_ISR-1
ATT_ISR-2
ATT_ISR-3

割込み管理機能-4
ATT_ISR-4

3
return4 ext_tsk( )(注)No.S6 E_PARエラーを検出できるISR_ADR_0がシステムに存在しない場合は、テストを省略することができる。
EXC1：
EXC1：CPU例外ハンドラのテスト手順

その1

No

テ

ス

ト

手

順

内

容

S1 DEF_EXC(EXCNO_1,{ERR_EXCATR,EXCHDR_1})
S2 E_RSATRエラーを検出できること。
S3 DEF_EXC(ERR_EXCNO,{EXCATR,EXCHDR_1})
S4 E_PARエラーを検出できること。
S5 DEF_EXC(EXCNO_1,{EXCATR,ERR_EXCHDR})
S6 E_PARエラーを検出できること。
S7 DEF_EXC(EXCNO_1,{EXCATR,EXCHDR_1})
S8 DEF_EXC(EXCNO_1,{EXCATR,EXCHDR_2})
S9 CRE_TSK(TASK_ID1,TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL)<TASK_ID1:READY>−<EXCHDR_2:CPU例外ハンドラ<EXCHDR_2:CPU例外ハンドラ>
例外ハンドラ>1 EXCHDR_2の割込み発生
2
return３ ext_tsk( )(注)No.S6 E_PARエラーを検出できるERR_EXCHDRがシステムに存在しない場合は、テストを省略することができる。
INI1：
INI1：初期化ルーチンのテスト手順
No
S1
S2
−
1
2
3
4
5

テスト
項目参照
DEF_EXC-1
DEF_EXC-2
DEF_EXC-3−
DEF_EXC-5

その1
テ

ス

ト 手

順

内

容

ATT_INI({TA_HLNG,EXINF_1,INIRTN_1})
CRE_TSK({TASK_ID1,TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})<TASK_ID1:READY><INIRTN_1:初期化ルーチン<INIRTN_1:初期化ルーチン>
初期化ルーチン>TASK_ID1より先に初期化ルーチンが実行される
exinf == EXINF_1
returnext_tsk( )

3-50

テスト
項目参照

−
ATT_INI-1
システム構成管理機能-3

第 3節

第3節 製品マニュアルによる確認の見方
以下に、製品マニュアル確認の見方を説明する。
UMA
No.

区

分

1
APIの構成要素
2
3
4
56

サービスコールの返値とエラーコード
静的APIの文法とパラ
メータ
APIの名称に関する原則テス
ト
項目
すべてのサービスコールの名称、パラメータとリターンパラメータの種類・順序・名称・データ型がμITRON4.0仕様書通りに記載されていること。ただし、実装が独自に拡張しているサービスコールは除く。
静的APIの名称、パラメータとリターンパラメータの種類・順序・名称・データ型がμITRON4.0仕様書通りに記載されていること。ただし、実装が独自に拡張している静的
APIは除く。
サブエラーコードをサポートする場合は、その意味が記載されていること。
静的APIの処理中にエラーが発生した場合の扱いが記載されていること。
実装が独自に用意するサービスコールの名称が記載されていること。
実装が独自に定義するメインエラーコードの名称とその内容が記載されていること。

テスト項目参照
APIの構成要素-1
サービスコールの返値とエラーコード-1
APIの構成要素-2
サービスコールの返値とエラーコード-3
静的APIの文法とパラメータ-8
APIの名称に関する原則-1
APIの名称に関する原則-2(1) No.
製品マニュアルの確認番号を示す。
(2) 区分
製品マニュアルの確認で、確認項目を内容毎に分類したものである。
(3) テスト項目
μITRON4.0仕様書に記載されている内容であり、テスト手順(プログラム)では確認できない項目である。したがって、検定を受けるカーネルメーカが作成する製品マニュアルに、振舞いや意味が明確に記載されていることを確認する。
(4) テスト項目参照
製品マニュアルで確認すべき事項が、テスト項目のどの部分に記載されているかを示す。
なお、No.3で示すように、カーネルが当該機能をサポートしていない場合は、検定項目から除くことを明記している。

3-51

第4節 製品マニュアルによる確認の手順
UMA：
No.
1

2
3
4
5
6
7

8

9
10
11
12
13
14
15

16

17

18

区

分

テ
ス
ト
項
目
テスト項目参照
スタンダードプロファイルに含まれるサービスコールの名称、パ APIの構成要素-1
ラメータとリターンパラメータの種類・順序・名称・データ型が サービスコールの返値とエラーコード-1
μITRON4.0仕様書通りに記載されていること。
APIの構成要素
スタンダードプロファイルに含まれる静的APIの名称、パラメー
APIの構成タの種類・順序・名称・データ型がμITRON4.0仕様書通りに記要素-2載されていること。
サービスコールの返 サブエラーコードをサポートする場合は、その意味が記載されて サービスコールの返値とエラーコード いること。
値とエラーコード-2
静的APIの文法と 静的APIの処理中にエラーが発生した場合の扱いが記載されてい 静的APIの文法と
パラメータ
ること。
パラメータ-9
サービスコール-1
実装が独自に用意するサービスコールと静的APIの名称がサービスコール
静的API-1
μITRON4.0仕様書通りに記載されていること。
実装が独自に定義するメインエラーコードの名称とその内容が
定数
定数-1μITRON4.0仕様書通りに記載されていること。
割込みハンドラの記述方法（カーネルが用意する出入口処理やア 割込み処理ハンド
プリケーションが登録する割込みハンドラで行うべき処理）が記 ラと割込みサービ
載されていること。
スルーチン-1
割込み処理ハンド
DEF_INTとATT_ISRの両方をサポートした場合の振舞いが記載
割込み処理モデル
ラと割込みサービ
されていること。
スルーチン-2
割込み処理ハンド
どの優先度より高い優先度を持つものをカーネルの管理外の割
ラと割込みサービ込みにするかが、製品マニュアルに記載されていること。
スルーチン-3
CPU例外ハンドラ
CPU例外ハンドラの記述方法が記載されていること。
で行える操作-1
CPU例外ハンドラ内で呼出し可能なサービスコールが記載され CPU例外ハンドラていること。
で行える操作-２
CPU例外ハンド CPU例外が発生したコンテキストや状態の読出し方法が記載さ CPU例外ハンドラ
ラで行える操作 れていること。
で行える操作-３
CPU例外が発生したタスクのID番号の読出し方法が記載されて CPU例外ハンドラいること。
で行える操作-４
CPU例外ハンドラ内でras_texと同等の操作ができ、方法が記載 CPU例外ハンドラ
で行える操作-５
されていること。
タスクコンテキ タスクコンテキストを実行中にCPU例外が発生した場合、CPU タスクコンテキス
ストと非タスク 例外ハンドラが実行されるコンテキストが製品マニュアルに記 トと非タスクコン
コンテキスト
テキスト-4載されていること。
処理の優先順位
処理の優先順位と割込みハンドラおよび割込みサービスルーチン相互間の優先順とサービスコー
サービスコールの位の関係が記載されていること。
ルの不可分性
不可分性-2
処理の優先順位と周期ハンドラの優先順位と、isig_timを呼び出した割込みハンド
サービスコールのラの優先順位との関係が記載されていること。
不可分性-３
CPU例外ハンドラの優先順位が、CPU例外が発生した処理の優 処理の優先順位と先順位と、ディスパッチャの優先順位のいずれよりも高いことが サービスコールの不可分性-4
製品マニュアルに記載されていること。

3-52

CPU例外ハンドラと、割込みハンドラやタイムイベントハンドラとの間の優先順位が記載されていること。

19
20
CPUロック状態
21

割込みハンドラ内でCPUロック解除状態にするための方法が記載されていること。
割込みハンドラから正しくリターンするための方法が記載されていること。

22

カーネルの初期化処理を呼び出す方法が記載されていること。

23

静的APIの処理中にエラーを検出した場合の扱いが記載されていること。
カーネルの管理外の割込みを禁止するかどうかが記載されていること。
初期化ルーチン内でサービスコールを呼び出せるか否か、呼び出せる場合にはどのようなサービスコールが呼び出せるか記載されていること。

24

システム
初期化手順

25

26
オブジェクトの登録とその削除
27
28
29

ext_tskシステム
時刻管理

カーネルに登録できるオブジェクトの最大数やID番号の範囲の指定方法が記載されていること。
自動割付けされるID番号の範囲の指定方法が記載されていること。
エラーが発生した場合の処理が記載されていること。
システム時刻更新機能がカーネル内部にある場合は、システム時
刻更新方法が記載されていること。

30

記載通りに実行するとシステム時刻が正しく更新されること。

31

割込みハンドラの記述方法が記載されていて、正しく動作すること。
割込みハンドラ内でCPUロック解除状態にする方法が記載されていること。
CPUロックを解除した後に、割込みハンドラからリターンする方法が記載されていること。
inhnoの具体的な意味が記載されていること。
CPU例外ハンドラの記述方法が記載されていて、正しく動作すること。
excnoの具体的な意味が記載されていること。

32

割込み管理機能

33
34
35
36

DEF_INH
システム構成管理機能
DEF_EXC

3-53

処理の優先順位とサービスコールの不可分性-5
CPUロック
状態-11
CPUロック状態-12
システム初期化手順-4
システム初期化手順-５
システム初期化手順-６
システム初期化手順-７
オブジェクトの登録とその削除-２
オブジェクトの登録とその削除-3
ext_tsk-6
システム
時刻管理-3
isig_tim-2
システム
時刻管理-3
割込み管理
機能-3
割込み管理
機能-５
割込み管理
機能-６
DEF_INH-5
システム構成管理機能-2
DEF_EXC-4

第5節 ヘッダファイルによる確認の見方
以下に、μITRON4.0仕様で定義するヘッダファイルの内容確認の見方について説明する。
HED：
No.
1

区
分
APIの構成要素

2
3

APIの名称に関する原則4−
5
6
7

ITRON仕様共通データ型（itron.h）

34
35
36

ITRON仕様
共通定数（itron.h）

テ
ス
ト
項
目
“kernel.h”から“itron.h”をインクルードしていること。
ITRON仕様共通定義で規定されるデータ型、定数、マクロの定義などを含むヘッダ
ファイルの名称が、“itron.h”であること。
カーネル仕様で定められるサービスコールの宣言と、データ型、定数、マクロの定義などを含むヘッダファイルの名称が、“kernel.h”であること。
カーネルのコンフィギュレータが生成する自動割付け結果ヘッダファイルの名称を kernel_id.h とすること。
型
整数／ポインタ／構造体
整数
B
整数
H
整数
W

テスト項目参照
APIの構成要素-3
ヘッダファイル-1
サービスコールの返値とエラーコード-1
ヘッダファイル-2
ヘッダファイル-3−
ITRON仕様共通データ型-1
ITRON仕様共通データ型-2
ITRON仕様共通データ型-3

〜

〜
NULL
TRUE
FALSE

0で定義されていること
1で定義されていること
0で定義されていること

ITRON仕様共通定数-1
ITRON仕様共通定数-2
ITRON仕様共通定数-3(1) No.
ヘッダファイルの確認番号を示す。
(2) 区分
ヘッダファイルの確認で、確認項目をμITRON4.0仕様書の内容に添って分類したものである。
(3) テスト項目
μITRON4.0仕様書に記載されている内容であり、テスト手順(プログラム)では確認できない項目である。したがって、検定を受けるカーネルメーカは、μITRON4.0仕様書が規定するヘッダ
ファイルの名称、および当該ヘッダファイル内で記述すべき内容が明確に記載されていることを確認する。
データ型や定数についても、μITRON4.0仕様書が規定している通りに定義されていることを確認する。なお、検定対象のカーネルがTA_NULLをサポートしていなければ、省略することが可能である。
網掛けされてあるエラーコードは、実装依存や実装定義でエラーの検出を省略できることを示す。
ただし、これらのエラーコードの検出を省略する場合は、省略する旨が製品マニュアルに記載されていること。
(4) テスト項目参照
ヘッダファイルで確認すべき事項が、テスト項目のどの部分に記載されているかを示す。

3-54

第6節 ヘッダファイルによる確認の手順
HED：
No.
区
分
APIの構成要素
1
2
3

APIの名称に関する原則

4
−
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

ITRON仕様共通データ型（itron.h）

ITRON仕様共通
定数（itron.h）

テ
ス
ト
項
目
テスト項目参照
APIの構成要素-3“kernel.h”から“itron.h”をインクルードしていること。
ITRON仕様共通定義で規定されるデータ型、定数、マクロの定義なヘッダファイル-1
どを含むヘッダファイルの名称が、“itron.h”であること。
カーネル仕様で定められるサービスコールの宣言と、データ サービスコールの返値と型、定数、マクロの定義などを含むヘッダファイルの名称が、 エラーコード-1
ヘッダファイル-2“kernel.h”であること。
カーネルのコンフィギュレータが生成する自動割付け結果ヘ
ヘッダファイル-3
ッダファイルの名称を kernel_id.h とすること。
型
整数／ポインタ／構造体−
ITRON仕様共通データ型-1
整数
B
ITRON仕様共通データ型-2
整数
H
ITRON仕様共通データ型-3
整数W
ITRON仕様共通データ型-4
整数UB
ITRON仕様共通データ型-5
整数UH
ITRON仕様共通データ型-6
整数UW
ITRON仕様共通データ型-7
定義されていることVB
ITRON仕様共通データ型-8
定義されていること
VH
ITRON仕様共通データ型-9定義されていること
VW
ITRON仕様共通データ型-10
ポインタ
VP
ITRON仕様共通データ型-11
ポインタ
FP
ITRON仕様共通データ型-12
整数
INT
ITRON仕様共通データ型-13
整数
UINT
ITRON仕様共通データ型-14
整数
BOOL
ITRON仕様共通データ型-15
整数
FN
ITRON仕様共通データ型-16
整数
ER
ITRON仕様共通データ型-17
整数ID
ITRON仕様共通データ型-18
整数
ATR
ITRON仕様共通データ型-19
整数
STAT
ITRON仕様共通データ型-20
整数
MODE
ITRON仕様共通データ型-21
整数
PRI
ITRON仕様共通データ型-22
整数
SIZE
ITRON仕様共通データ型-23
整数
TMO
ITRON仕様共通データ型-24
整数
RELTIM
ITRON仕様共通データ型-25
整数
SYSTIM
ITRON仕様共通データ型-26
整数またはポインタ
VP_INTITRON仕様共通データ型-27
整数
ER_BOOLITRON仕様共通データ型-28
整数
ER_ID
ITRON仕様共通データ型-29
整数
ER_UINTITRON仕様共通定数-10で定義されていること
NULL
ITRON仕様共通定数-21で定義されていること
TRUE
ITRON仕様共通定数-30で定義されていること
FALSE
0で定義されていること
ITRON仕様共通定数-4
E_OK-5で定義されていること
ITRON仕様共通定数-5E_SYS-9で定義されていること
ITRON仕様共通定数-6
E_NOSPT-10で定義されていること
ITRON仕様共通定数-7
E_RSFN-11で定義されていること
ITRON仕様共通定数-8
E_RSATR

3-55

42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80

81

82
83
84
85
86

-17で定義されていること
E_PAR-18で定義されていること
E_ID-25で定義されていること
E_CTX-26で定義されていること
E_MACV-28で定義されていること
E_ILUSE-33で定義されていること
E_NOMEM-41で定義されていること
E_OBJ-43で定義されていること
E_QOVR-49で定義されていること
E_RLWAI-50で定義されていること
E_TMOUT0で定義されていること
TA_NULL0で定義されていること
TMO_POL-1で定義されていること
TMO_FEVRITRON仕様itron.h にMERCDマクロが定義されていること。
共通マクロ
itron.h にSERCDマクロが定義されていること。
0x00 で定義されていること
TA_HLNG0x00 で定義されていること
TA_TFIFO
0x01 で定義されていること
TA_TPRI
カーネル
0x00 で定義されていること
TA_MFIFO
共通定義
0x02 で定義されていること
TA_MPRI
0 で定義されていること
TSK_SELF
0 で定義されていること
TSK_NONE
TMIN_TPRI 1 で定義されていること
TMAX_TPRI 16以上 で定義されていること
TMIN_MPRI 0x01 で定義されていること
カーネル共通TMAX_MPRI TMAX_TPRI以上 で定義されていること
構成定数
TKERNEL_MAKER カーネルのメーカーコード
TKERNEL_PRID カーネルの識別番号
TKERNEL_SPVER ITRON仕様のバージョン番号
TKERNEL_PRVER カーネルのバージョン番号
タスク管理機能 TMAX_ACTCNT 1以上で定義されていること
タスク付属
TMAX_WUPCNT 1以上で定義されていること
同期機能
TMAX_SUSCNT 1以上で定義されていること
タスク例外
16ビット以上で定義されていること
TBIT_TEXPTN
処理機能
16ビット以上で定義されていること
TEXPTN
セマフォ
TMAX_MAXSEM 65535以上で定義されていること
16ビット以上で定義されていること
FLGPRN
イベントフラグ
16ビット以上で定義されていること
TBIT_FLGPTN
実装毎に定義されていること
T_MSG
メールボックスの優先度付きメッセージヘッダ
typedef struct t_msg_pri{
メールボックス
T_MSG_PRI
T_MSG
msgque ;PRI
msgpri ;} T_MSG_PRI ;システム
実装毎に定義されていること
TIC_NUME
時刻管理
実装毎に定義されていること
TIC_DENO
実装毎に定義されていること
INHNO
割込み管理機能
実装毎に定義されていること
INTNO
システム構成管理機能 EXCNO
実装毎に定義されていること

3-56

ITRON仕様共通定数-9
ITRON仕様共通定数-10
ITRON仕様共通定数-11
ITRON仕様共通定数-12
ITRON仕様共通定数-13
ITRON仕様共通定数-14
ITRON仕様共通定数-15
ITRON仕様共通定数-16
ITRON仕様共通定数-17
ITRON仕様共通定数-18
ITRON仕様共通定数-19
ITRON仕様共通定数-20
ITRON仕様共通定数-21
ITRON仕様共通マクロ-1
ITRON仕様共通マクロ-2
カーネル共通定義-1
カーネル共通定義-2
カーネル共通定義-3
カーネル共通定義-4
カーネル共通定義-5
カーネル共通定義-6
カーネル共通定義-7
カーネル共通構成定数-1
カーネル共通構成定数-2
カーネル共通構成定数-3
カーネル共通構成定数-4
カーネル共通構成定数-5
カーネル共通構成定数-6
カーネル共通構成定数-7
カーネル共通構成定数-8
タスク管理機能-9
タスク付属同期機能-1
タスク付属同期機能-2
タスク例外処理機能-11
タスク例外処理機能-12
セマフォ-1
イベントフラグ-1
イベントフラグ-2
メールボックス-1

メールボックス-2

システム時刻管理-7
システム時刻管理-8
割込み管理機能-1
割込み管理機能-2
システム構成管理機能-1

第4章

自動車制御用プロファイルのテスト項目

第１節 テスト項目の見方
テスト項目は、μITRON4.0 仕様書に記載されている内容と対応しており、確認すべき項目を洗い出したものである。また、｢4.1 タスク管理機能｣などタイトルの前の番号は、μITRON4.0 仕様書に記載されてあるものと一致させた。
以下に、act_tsk サービスコールを例にテスト項目の見方を説明する。
No.
1
2

区

分

エラーコード

3
4
5
6
7

テ ス ト 項 目
不正 ID 番号(tskid が不正あるいは使用できない)
キューイングオーバーフロー(起動要求キューイング数のオー
E_QOVR
バーフロー)
対象タスクが休止状態である場合には、tskid で指定されるタスクを、休止状態から実行可能状態に移行させること。

E_ID

タスクの起動時に行うべき処理を行うこと。
サービスコール
処理

タスクを起動する際のパラメータは、生成時に指定したタスクの拡張情報(exinf)と一致すること。また、起動されたタスクでは、拡張情報が正しく受け取れること。
対象タスクが休止状態でない場合には、tskid で指定されるタスクに対する起動要求を
キューイング(タスクの起動要求キューイング数に１を加える)すること。
tskid に TSK_SELF が指定されると、自タスクを対象とすること。

テスト手順参照
TSK2-2
TSK2-20
TSK2-12(Ref)タスク管理
機能-2,3

TSK2-12
TSK2-24
TSK2-4,6(1) No.
当該サービスコールのテスト番号を示す。
(2) 区分
テスト項目をテスト内容毎に分類したものである。
(3) テスト項目
μITRON4.0 仕様書に記載されている内容であり、機能を確認する項目である。エラーコードに網掛けされてあるものは、実装定義でエラーの検出を省略できることを示す。ただし、これらのエラーコードの検出を省略する場合は、省略する旨が製品マニュアルに記載されていること。
(4) テスト手順参照
テスト項目を確認する具体的手段が、テスト手順のどの部分に記載されているかを示す。
(Ref)と記述されているものは、別のテスト項目で確認済であるので、ここでの確認項目ではないことを示す。
また、複数の番号が記述されている場合は、当該テスト項目の確認に複数のテスト手順が必要であることを示している。

4-1

第 2 節 テスト項目
2. ITRON 仕様共通定義
2 .1

ITRON 仕様共通概念

2.1.1

用語の意味
確認項目なし2.1.2 API の構成要素
テスト手順参照
項番
確
認
事
項
自動車制御用プロファイルに含まれるサービスコールの名称、パラメータとリター
ンパラメータの種類・順序・名称・データ型が、μITRON4.0 仕様書と一致してい ＵＭＡ-1
1
ること。
自動車制御用プロファイルに含まれる静的 API の名称、パラメータの種類・順序・
ＵＭＡ-2
2
名称・データ型がμITRON4.0 仕様書と一致していること。
“kernel.h”から“itron.h”をインクルードしていること。
3
HED-1
オブジェクトの ID 番号などの自動割付けを行うコンフィギュレータは、自動割付けを行4COM4-7
った結果を、自動割付け結果ヘッダファイル kernel_id.h に生成すること。
ITRON 仕様で標準化された同じヘッダファイルを複数回インクルードしてもエラ
5
COM1-1
ーとならないこと。
2.1.3 オブジェクトの ID 番号とオブジェクト番号
項番
確
認
事
項
ID 番号は 1〜255 の範囲の正の値をサポートしていること。
1

テスト手順参照
SPC15-S256

2.1.4 優先度
項番
確
認
事
項
1〜16 の 16 段階のタスク優先度をサポートすること。
1

テスト手順参照
COM2-16

2.1.5

機能コード
確認項目なし2.1.6 サービスコールの返値とエラーコード
テスト手順参照
項番
確認事
項
エラーコードは、下位 8 ビットのメインエラーコードと、それを除いた上位ビット
1
COM8-2,3のサブエラーコードで構成される。
サブエラーコードをサポートする場合は、実装毎に定義しサブエラーコードに関す
2
UMA-3
る記述が製品マニュアルに記載されていること。
3

メインエラーコード E_MACV

2.1.7

オブジェクト属性と拡張情報
確認項目なし2.1.8

タイムアウトとノンブロッキング
確認項目なし2.1.9

相対時間とシステム時刻
相対時間とシステム時刻
確認項目なしメモリアクセス違反

4-2

COM3-2

2.1.10
項番
1

2
3
4
5
2.1.11
項番
1
−
2
3
4
5
6
7
8

システムコンフィギュレーションファイル
確認事
項
テスト手順参照
システムコンフィギュレーションファイルには、カーネルやソフトウェア部品の静COM4的 API と ITRON 仕様共通静的 API に加えて、C 言語処理系のプリプロセッサディ
3,5
レクティブを記述できること。
システムコンフィギュレーションファイルは、まず、Ｃ言語のプリプロセッサに通COM4される。次にソフトウェア部品のコンフィギュレータによって順に処理され、最後3,4,5にカーネルのコンフィギュレータによって処理されること。
カーネルコンフィギュレータでは、カーネル構成・初期化ファイルと ID 自動割付 COM46,7
け結果ヘッダファイル(kernel_id.h)を生成すること。
自分自身に対する静的 API または共通静的 API として解釈できない記述が含まれ COM51,2,3,4ている場合には、エラーを報告すること。
カーネルのコンフィギュレータは、 ＃ で始まる行を無視すること。
COM4-5
静的 API の文法とパラメータ
確認事
項
テスト手順参照
サービスコールに対応する静的 API のパラメータは、対応するサービスコールのＣ言語 APIに準ずること。ただし、パラメータにパケットへのポインタがある場合には、パケット中の各 COM4-2
要素を ， で区切り、 ｛ と ｝ で囲んだ形で記述すること。
静的 API のパラメータは、記述に使える式によって分類される。
−
自動割付け対応整数値パラメータ
COM4-2
INH1-S7
自動割付け非対応整数値パラメータ
プリプロセッサ定数式パラメータ
COM4-2一般定数式パラメータ
COM4-2
自動割付け対応整数値パラメータに単一の識別子が記述された場合、その静的 API
COM4-7を処理するコンフィギュレータが、識別子に整数値を割付けること。
静的 API に文法エラーやパラメータ数の過不足があった場合には、それを検出した COM51,2,3,4
コンフィギュレータがエラーを報告すること。
静的 API の処理中にエラーを検出した場合の扱いについては、実装毎に定義するこUMA-4と。エラー発生時の扱いは製品マニュアルに記載されていること。

2.2. API の名称に関する原則
2.2.1 ソフトウェア部品識別名
確認項目なし2.2.2 サービスコール
テスト手順参照
項番
確認事
項
実装が独自に用意するサービスコールの名称が、μITRON4.0 仕様書と合致してい1UMA-5ること。また、その名称が製品マニュアルに記載されていること。
2.2.3

コールバック
確認項目なし2.2.4 静的 API
テスト手順参照
項番
確認事
項
実装が独自に用意する静的 API の名称が、μITRON4.0 仕様書と合致しているこ
1UMA-5と。また、その名称が製品マニュアルに記載されていること。
2.2.5

パラメータとリターンパラメータ
確認項目なし

4-3

2.2.6

データ型
確認項目なし2.2.7 定数テスト手順参照
項番
確認事
項
実装が独自に定義するメインエラーコードの名称が、μITRON4.0 仕様書と一致し1
UMA-6ていること。また、その名称が製品マニュアルに記載されていること。
2.2.8

マクロ
確認項目なし2.2.9 ヘッダファイル
テスト手順参照
項番
確認
事
項ITRON 仕様共通定義で規定されるデータ型、定数、マクロの定義などを含むヘッ
1
HED-2
ダファイルの名称を itron.h とすること。
カーネル仕様で定められるすべてのサービスコールの宣言と、データ型、定数、マHED-32クロの定義などを含むヘッダファイルの名称を kernel.h とすること。
カーネルのコンフィギュレータが生成する自動割付け結果ヘッダファイルの名称を3
HED-4
kernel_id.h とすること。
2.2.10項番
1

カーネルとソフトウェア部品の内部識別子
確認事
項
テスト手順参照
カーネルの内部識別子は、C 言語レベルで、_kernel_または_KERNEL_で始まる名
COM6-1
称とすることを原則とする。

2.3 ITRON 仕様共通定義
2.3.1 ITRON 仕様共通データ型
項番

確

認

事

項

1

B

符号付き 8 ビット整数

2

H

符号付き 16 ビット整数

3

W

符号付き 32 ビット整数

4

UB

符号無し 8 ビット整数

5UH

符号無し 16 ビット整数

6

UW

符号無し 32 ビット整数

7

VB

データタイプが定ならない 8 ビットの値(実装毎に定義)

8

VH

データタイプが定ならない 16 ビットの値(実装毎に定義)

9

VW

データタイプが定ならない 32 ビットの値(実装毎に定義)

10

VP

データタイプの定まらないものへのポインタ

11

FP

プログラムの起動番地(ポインタ)

12

INT

16 ビット以上の符号付き整数

13

UINT

16 ビット以上の符号無し整数

4-4

テスト手順参照
HED-5
COM7-1,3
HED-6
COM7-7,9
HED-7
COM7-13,15
HED-8
COM7-4,6
HED-9
COM7-10,12
HED-10COM7-16,18
HED-11
COM7-19
HED-12
COM7-20
HED-13
COM7-21
HED-14
COM7-22
HED-15
COM7-23
HED-16
COM7-24,26
HED-17
COM7-27,29

14

BOOL

15

FN

16

ER

17

ID

18

ATR

19

STAT

20

MODE

21

PRI

22

SIZE

23

TMO

24

RELTIM

25

SYSTIM

26

VP_INT27

ER_BOOL

28

ER_ID

29

ER_UINT

HED-18
COM7-31,33
HED-19
機能コード(16 ビット以上の符号付き整数)
COM7-34,36
HED-20
エラーコード(8 ビット以上の符号付き整数)
COM7-37,39
HED-21
オブジェクトの ID 番号(16 ビット以上の符号付き整数)
COM7-40,42
HED-22
オブジェクト属性(8 ビット以上の符号無し整数)
COM7-43,45
HED-23
オブジェクトの状態(16 ビット以上の符号無し整数)
COM7-46,48
HED-24
サービスコールの動作モード(8 ビット以上の符号無し整数)
COM7-49,51
HED-25
優先度(16 ビット以上の符号付き整数)
COM7-52,54
HED-26
メモリ領域のサイズ(ポインタと同じビット幅の符号無し整数)
COM7-55,57
HED-27
タイムアウト指定(16 ビット以上の符号付き整数、時間単位は 1 ミリ秒)
COM7-58,60
HED-28相対時間(16 ビット以上の符号無し整数、時間単位は１ミリ秒)
COM7-61,63
HED-29システム時刻(16 ビット以上の符号無し整数、時間単位は１ミリ秒)
COM7-64,66
データタイプが定まらないものへのポインタまたはプロセッサに自 HED-30
COM7-67,69
然なサイズの符号付き整数 (実装毎に定義)
HED-31
エラーコードまたは真偽値(符号付き整数)
COM770,72,74,76
HED-32
エラーコードまたは ID 番号(符号付き整数、負の ID 番号は表現できない)
COM7-77,79
エラーコードまたは符号無し整数(符号付き整数、符号無し整数を HED-33
COM7-80,82
表現する場合の有効ビット数は UINT より 1 ビット短い)
真偽値(TRUE または FALSE)

4-5

2.3.2 ITRON 仕様共通定数
項番
区
分
1
NULL
2
TRUE
一
般
3
FALSE
4
E_OK
5
E_SYS
6
E_NOSPT
7
E_RSFN8
E_RSATR
9
E_PAR
10
E_ID
メイン
11
E_CTX
エラーコード
12
E_MACV
13
E_ILUSE14
E_NOMEM
15
E_OBJ
16
E_QOVR
17
E_RLWAI18
E_TMOUT
オブジェクト属性 TA_NULL
19
タイムアウト20
TMO_POL指定21
TMO_FEVR

確 認 事 項
無効ポインタ真偽
正常終了
システムエラー
未サポート機能
予約機能コード
予約属性
パラメータエラー
不正 ID 番号
コンテキストエラー
メモリアクセス違反
サービスコール不正
メモリ不足
オブジェクト状態エラー
キューイングオーバーフロー
待ち状態の強制解除
ポーリング失敗またはタイムアウト
オブジェクト属性を指定しない
ポーリング
永久待ち

0
1
0
0
-5
-9
-10
-11
-17
-18
-25
-26
-28
-33
-41
-43
-49
-50
0
0
-1

テスト手順参照
HED-34HED-35HED-36HED-37
HED-38HED-39HED-40HED-41
HED-42HED-43HED-44HED-45
HED-46
HED-47
HED-48
HED-49HED-50HED-51HED-52HED-53HED-542.3.3 ITRON 仕様共通マクロ
項番
確
認
事
項
テスト手順参照ER mercd=MERCD(ER ercd)がヘッダファイル itron.h でマクロ定義され、エ COM8-4
1
HED-55
ラーコードからメインエラーコードが取り出せること。
ER sercd=SERCD(ER ercd) がヘッダファイル itron.h でマクロ定義され、エラ COM8-5
2
HED-56
ーコードからサブエラーコードが取り出せること。
2.3.4 ITRON 仕様共通静的 API
テスト手順参照
項番
確認事
項システムコンフィギュレーションファイルから、プリプロセッサ定数式パラメータおよび一般定数式パラメータの解釈に必要なＣ言語の宣言・定数とプリプロセッサ COM41
5,6
マクロの定数などを含んだファイルをインクルードするための指定｢INCLUDE(文字列);｣ができること。
3. μITRON4.0 仕様の概念と共通定義
3.1 基本的な用語の意味
確認項目なし3.2 タスク状態とスケジューリング規則
3.2.1 タスク状態
項番
確
認
事
項
タスクの待ち タスクの待ち解除とは実行可能状態に移行させること。
1

4-6

テスト手順参照
SPC1-5

3.2.2 タスクのスケジューリング規則
項番
確
認
事
項
テスト手順参照実行できるタスクが複数ある場合には、その中で最も優先順位の高いタスクが実行
1
SPC2-7状態となり、他は実行可能状態となること。
タスク間の優先順位は、異なる優先度を持つタスク間では、高い優先度を持つタス
2
SPC2-7クの方が高い優先順位を持つこと。
同じ優先度を持つタスク間では、先に実行できる状態(実行状態または実行可能状
3
SPC2-12態)になったタスクの方が高い優先順位を持つこと。
最も高い優先順位を持つタスクが変化した場合には、ただちにディスパッチが起こ
4
SPC2-9り、実行状態のタスクが切り替わること。
ディスパッチが起こらない状態になっている場合には、実行状態のタスクの切替
5
SPC3-7は、ディスパッチが起こる状態となるまで保留されること。
優先順位の高いタスクが実行できる状態にある限り、それより優先順位の低いタス
クは全く実行されないこと。すなわち、最も高い優先順位を持つタスクが待ち状態
6
SPC4-14に入るなどの理由で実行できない状態とならない限り、他のタスクは全く実行されないこと。
実行可能状態のタスクが実行状態になった後に実行可能状態に戻った直後には、同
7
SPC2-16
じ優先度を持つタスクの中で最高の優先順位を持っている。
実行状態のタスクが待ち状態になった後に待ち解除されて実行できる状態になった
8
SPC2-19
直後には、同じ優先度を持つタスクの中で最低の優先順位となること。
3.3 割込み処理モデル
3.3.1 割込みハンドラと割込みサービスルーチン
項番
確
認
事
項
割込みハンドラの記述方法は実装毎に定義し、製品マニュアルに記載されているこ
1と。
DEF_INH と ATT_ISR の２つをサポートした場合は、その振舞いが製品マニュア
2
ルに記載されていること。
カーネルは、ある優先度より高い優先度を持つ割込みを、管理しないものとすることができる。どの優先度より高い優先度を持つものをカーネルの管理外の割込みと3するかが製品マニュアルに記載されていること。
3.3.2

テスト手順参照
UMA-7
UMA-8
UMA-9

割込みの指定方法と割込みサービスルーチンの起動確認項目なし3.4 例外処理モデル
3.4.1 例外処理の枠組み
項番
確
認
事
項
CPU 例外ハンドラは、プロセッサが検出する CPU 例外によって起動されること。
1
CPU 例外ハンドラは、CPU 例外の種類毎に、アプリケーションで登録できること。
2

4-7

テスト手順参照
SPC5-2
SPC5-S33.4.2 CPU 例外ハンドラで行える操作
例外ハンドラで行える操作
項番
確
認
事
項
テスト手順参照
CPU 例外ハンドラの記述方法は実装毎に定義し、製品マニュアルに記載されてい1
UMA-10ること。
CPU 例外ハンドラ内で呼出し可能なサービスコールは実装毎に定義し、製品マニ2
UMA-11
ュアルに記載されていること。
CPU 例外ハンドラ内で次の操作を行う方法を用意すること。また、その方法は製−−品マニュアルに記載されていること。
CPU 例外が発生したコンテキストや状態の読出しができること。具体的には、CPU 例外が発生した処理で sns_yyy を呼び出した場合の結果を、CPU 例外ハ UMA-123
ンドラ内で取り出せること。
CPU 例外が発生したタスクの ID 番号が読み出せること(例外を発生させたのが4
UMA-13
タスクである場合のみ)。
(注) CPU ロック状態で CPU 例外が発生した場合には、項番 4 の操作ができることは要求されない。
3.5 コンテキストとシステム状態
3.5.1 処理単位とコンテキスト
確認項目なし3.5.2 タスクコンテキストと非タスクコンテキスト
項番
確
認
事
項
タスクの実行されるコンテキストは、タスクコンテキストであること。
1
割込みハンドラおよび周期ハンドラが実行されるコンテキストは、非タスクコンテ
2
キストである。
非タスクコンテキストからサービスコールに渡すパラメータとして、自タスクを指定する
3
TSK_SELF を用いることはできない。渡された場合には、E_ID エラーとなること。
タスクコンテキストを実行中に CPU 例外が発生した場合、CPU 例外ハンドラが実4行されるコンテキストが製品マニュアルに記載されていること。
非タスクコンテキストを実行中に CPU 例外が発生した場合には、CPU 例外ハンド
5
ラが実行されるコンテキストは非タスクコンテキストであること。
3.5.3 処理の優先順位とサービスコールの不可分性
項番
確
認
事
項
割込みハンドラの優先順位は、ディスパッチャの優先順位よりも高いこと。
1
割込みハンドラおよび割込みサービスルーチン相互間の優先順位は、それらを起動
2
する外部割込みの優先度に対応して定めることを基本に、実装毎に定義すること。
周期ハンドラの優先順位は、isig_tim を呼び出した割込みハンドラの優先順位以下
3
で、ディスパッチャの優先順位よりも高いという範囲内で、実装毎に定義すること。
CPU 例外ハンドラの優先順位は、CPU 例外が発生した処理の優先順位と、ディス4
パッチャの優先順位のいずれよりも高いこと。
CPU 例外ハンドラと、割込みハンドラやタイムイベントハンドラとの間の優先順
5位は実装毎に定義すること。

4-8

テスト手順参照
SPC6-2
SPC6-5,17
SPC6-7
UMA-14
SPC6-10

テスト手順参照
TSK3-11
UMA-15
UMA-16
UMA-17
UMA-18

3.5.4 CPU ロック状態
項番
確
認
事
項
CPU ロック状態では、割込みハンドラ(カーネルの管理外の割込みによって起動されるものを除く)や周期ハンドラは起動されず、ディスパッチも起こらないこと。
1
すなわち、割込みが発生しても各ハンドラは起動されないこと。
−
CPU ロック状態では、以下のサービスコールを呼び出すことができること。
CPU ロック状態への移行
2
loc_cpu
CPU ロック状態への移行
3
iloc_cpu
CPU ロック状態の解除
4
unl_cpu
CPU ロック状態の解除
5
iunl_cpu
コンテキストの参照
6
sns_ctx
CPU ロック状態の参照
7
sns_loc
ディスパッチ禁止状態の参照
8
sns_dsp
ディスパッチ保留状態の参照
9
sns_dpn
割込みハンドラ内で CPU ロック解除状態にするための方法が用意されていること。
10
割込みハンドラから正しくリターンするための方法が用意されていること。
11
割込みサービスルーチンと周期ハンドラの実行開始直後は、CPU ロック解除状態
12になっていること。
CPU 例外ハンドラの起動と、ハンドラからのリターンによって、CPU ロック／ロ
13
ック解除状態が変化しないこと。
タスクの実行開始直後は、CPU ロック解除状態になっていること。
14

テスト手順参照
SPC78,37−
SPC7-10
SPC7-23
SPC7-31
SPC7-27
SPC7-12
SPC7-14
SPC7-16
SPC7-18
UMA-19
UMA-20
SPC7-42
SPC8-3
SPC95,8,13,16
SPC7-2

3.5.5 ディスパッチ禁止状態
項番
確
認
事
項
テスト手順参照
ディスパッチ禁止状態では、ディスパッチが起こらないこと。
1
SPC10-6
ディスパッチ禁止状態でも、自タスクを広義の待ち状態にする可能性がないサービ SPC102-10,11
スコールは呼び出せること。
非タスクコンテキストから呼び出せるサービスコールは、ディスパッチ禁止状態で3
SPC10-28
も制限を受けないこと。
割込みハンドラの起動と、そこからのリターンによってディスパッチ禁止／許可状 SPC104-23,42態は変化しないこと。
割込みサービスルーチンの起動と、そこからのリータンによってディスパッチ禁止 SPC105-23,42／許可状態は変化しないこと。
周期ハンドラの起動と、そこからのリータンによってディスパッチ禁止／許可状態 SPC106-33,47は変化しないこと。
タスクの実行開始直後は、ディスパッチ許可状態になっていること。
7
SPC10-2
ポーリングを行うサービスコールは、自タスクを待ち状態にする可能性がないた
8
SPC10-8め、ディスパッチ禁止状態でも呼び出すことができること。
ディスパッチ禁止状態で CPU ロック状態に移行し、その後 CPU ロックを解除して9
SPC10-19
も、ディスパッチ禁止状態は保持されていること。
CPU ロック状態でも、ディスパッチ禁止状態かディスパッチ許可状態かを参照で SPC1010-15,51
きること。
（注）
項番 4：割込みハンドラをサポートしていないシステムでは、テストを省略できる。
項番 5：割込みサービスルーチンをサポートしていないシステムでは、テストを省略できる。
3.5.6 ディスパッチ保留状態の間のタスク状態
テスト手順参照
項番
確認事
項ディスパッチ保留状態では、実行中のタスクがプリエンプトされるべき状況になっても、新たに実行すべき状態となったタスクにはディスパッチされないこと。実行すべきタスクへのディ SPC11-6
1
スパッチは、ディスパッチが起こる状態となるまで保留されること。

4-9

3.6 非タスクコンテキストからのサービスコール呼出し
3.6.1 非タスクコンテキストから呼び出せるサービスコール
項番
確
認
事
項
−
非タスクコンテキスト専用のサービスコール
iact_tsk
タスクの起動1iwup_tsk
タスクの起床2
irel_wai
待ち状態の強制解除
3
isig_sem
セマフォ資源の返却
4
iset_flg
イベントフラグのセット
5
ipsnd_dtq
データキューへの送信(ポーリング)
6
ifsnd_dtq
データキューへの強制送信
7
isig_tim
タイムティックの供給
8
iget_tid
実行状態のタスク ID の参照
9iloc_cpu
CPU ロック状態への移行
10
iunl_cpu
CPU ロック状態の解除
11−
どのコンテキストからでも呼び出せるサービスコール
コンテキストの参照
12
sns_ctx
CPU ロック状態の参照
13
sns_loc
ディスパッチ禁止状態の参照
14
sns_dsp
ディスパッチ保留状態の参照
15
sns_dpn

テスト手順参照−
TSK3-7
SYN2-10
SYN5-9SEM3-16
FLG3-9DTQ3-10
DTQ5-12SPC12-19
SYS2-3
SYS2-5
SYS2-13−
SPC12-2,11
SPC12-4,13
SPC12-6,15
SPC12-8,17

3.6.2 サービスコールの遅延実行
項番
確
認
事
項
テスト手順参照
サービスコールを遅延実行する場合にも、遅延実行することを許されないものを除いて、サー1
SPC13-15
ビスコールの実行順序がサービスコールの呼び出された順序に一致しなければならないこと。
3.6.3

呼び出せるサービスコールの追加
確認項目なし3.7 システム初期化手順
項番
確
認
事
項
ATT_INI 以外の静的 API の処理は、システムコンフィギュレーションファイル中1に記述された順序でおこなうこと。
初期化ルーチンはアプリケーションで用意され、ATT_INI を使って登録され、実行2されること。
カーネルの初期化処理を呼び出す方法は、実装毎に定義すること。
3
静的 API の処理中にエラーを検出した場合の扱いは、実装毎に定義すること。
4
カーネルの管理外の割込みを禁止するかどうかは、実装毎に定義すること。
5
初期化ルーチン内でサービスコールを呼び出せるか否か、呼び出せる場合にはどの6ようなサービスコールが呼び出せるかは、実装毎に定義すること。
初期化ルーチンは、システムコンフィギュレーションファイル中に ATT_INI の記
7
述のある順序で実行すること。
カーネルの動作開始時点で初めて割込みを許可すること。
8

テスト手順参照
SPC14-8
SPC14-3
UMA-21
UMA-22
UMA-23
UMA-24SPC14-3
SPC14-4

3.8 オブジェクトの登録とその解除
項番
確
認
事
項
テスト手順参照
ID 番号で識別されるオブジェクトについては、少なくとも 255 個のオブジェクト
1
SPC15-4が登録できること。
カーネルに登録できるオブジェクトの最大数や ID 番号の範囲は、実装毎に定義す2
UMA-25ること。
自動割付けされる ID 番号の範囲の指定方法は、実装毎に定義すること。
3
UMA-264-103.9

処理単位の記述形式
確認項目なし3.10

カーネル構成定数／マクロ
確認項目なし3.11 カーネル共通定義
3.11.1 カーネル共通定義
項番
区分
オブジェクト1
TA_HLNG属性
2
TA_TFIFO
その他のカーネ TSK_SELF
3
ル共通定義
4
TSK_NONE3.11.2
項番
1
2
4
5
6
7

確 認 事 項
高級言語用のインタフェースで処理単位で起動
タスクの待ち行列を FIFO 順に
自タスク指定該当するタスクが無い

カーネル共通構成定数
区分
TMIN_TPRI
優先度の範囲TMAX_TPRITKERNEL_MAKER
TKERNEL_PRID
バージョン情報
TKERNEL_SPVER
TKERNEL_PRVER

確 認 事 項
タスク優先度の最小値
タスク優先度の最大値
カーネルのメーカーコード
カーネルの識別番号
ITRON 仕様のバージョン番号
カーネルのバージョン番号

0x00
0x00
0
0

1
16 以上

テスト手順参照
HED-57
HED-58
HED-59HED-60

テスト手順参照
HED-61HED-62HED-63HED-64HED-65
HED-66

4. μITRON4.0 仕様の機能
4.1 タスク管理機能
No.
テスト手順参照
区分
テ ス ト 項 目
タスクの生成時
タスクの起動要求キューイング数をクリアすること。
1
TSK1-3に行うべき処理
タスクの起動時 タスクの優先度を初期化すること。
2
TSK1-16に行うべき処理 起床要求キューイング数をクリアすること。
TSK1-18
3
タスクのメインルーチンからリターンした場合にはタスクを終(Ref)
タスクの終了4
return-1
了すること。
タスクの起動要求キューイング数の最大値 １以上 HED-67
定数
5
TMAX_ACTCNT

4-11

CRE_TSK：
CRE_TSK：タスクの生成（静的 API）
No.
区
分
1
E_ID
2
E_RSATR3
E_PAR
エラーコード
4
E_PAR
5
E_PAR
6
E_OBJ

テ ス ト 項 目
不正 ID 番号
予約属性(tskatr が不正あるいは使用できない)パラメータエラー(task が不正)
パラメータエラー(itskpri が不正)
パラメータエラー(stksz が不正)オブジェクト状態エラー(対象タスクが登録済)

7

タスクの生成時に行うべき処理を行うこと。

−
8−

tskatr に TA_ACT の指定がない場合
対象タスクを未登録状態から休止状態に移行させること。
tskatr に TA_ACT の指定がある場合
対象タスクを未登録状態から実行可能状態に移行させること。

9静的 API処
理

テスト手順参照
TSK1-S4
TSK1-S6
TSK1-S8
TSK1-S10
TSK1-S12
TSK1-S14(Ref)タスク管理機能-1−
TSK1-5−
TSK1-1

10

タスクの起動時に行うべき処理を行うこと。

(Ref)タスク管理機能-2,311

拡張情報(exinf)がパラメータとして渡ること。また、起動されたタスクでは、起動情報が正しく受取れること。

TSK1-1(注)
No.3

E_PAR エラーを検出できる task がシステムに存在しない場合は、テストを省略することができる。
No.5 E_PAR エラーを検出できる stksz がシステムに存在しない場合は、テストを省略することができる。
act_tsk：
act_tsk：タスクの起動
No.
区
分
1
エラーコード
2
3
4
5

6
7

サービスコール
処理

テスト手順参照
テ ス ト 項 目
不正 ID 番号(tskid が不正あるいは使用できない)
E_ID
TSK2-2
キューイングオーバーフロー(起動要求キューイ
E_QOVRTSK2-20
ング数のオーバーフロー)
対象タスクが休止状態である場合には、tskid で指定されるタス
TSK2-12
クを、休止状態から実行可能状態に移行させること。
(Ref)タスク
タスクの起動時に行うべき処理を行うこと。
管理機能-2,3
タスクを起動する際のパラメータは、生成時に指定したタスクの拡張情報(exinf)と一致すること。また、起動されたタスクで TSK2-12
は、拡張情報が正しく受け取れること。
対象タスクが休止状態でない場合には、tskid で指定されるタスクに対する起動要求をキューイング(タスクの起動要求キューイ TSK2-24
ング数に１を加える)すること。
tskid に TSK_SELF が指定されると、自タスクを対象とすること。
TSK2-4,6

4-12

iact_tsk：
iact_tsk：タスクの起動
No.
区
分
1

2

エラーコード

3
4
5

6
7
(注)
No.2

サービスコール処理

テ ス ト 項 目
テスト手順参照
不正 ID 番号(tskid が不正あるいは使用できない)
E_ID
TSK3-3
キューイングオーバーフロー(起動要求キューイング
数のオーバーフロー)
サービスコールを遅延実行する場合で、E_QOVR エ TSK3-9
E_QOVR
ラーを返すことを実装定義で省略できる。省略する
場合は、E_OK を返すこと。(注)対象タスクが休止状態である場合には、tskid で指定されるタス
TSK3-13
クを、休止状態から実行可能状態に移行させること。
(Ref)タスク
タスクの起動時に行うべき処理を行うこと。
管理機能-2,3
タスクを起動する際のパラメータは、生成時に指定したタスクの拡張情報(exinf)と一致すること。また、起動されたタスクで TSK3-13
は、拡張情報が正しく受け取れること。
対象タスクが休止状態でない場合には、tskid で指定されるタスクに対する起動要求をキューイング(タスクの起動要求キューイ TSK3-16
ング数に１を加える)すること。
tskid に TSK̲SELF が指定された場合には、E_ID エラーを返すこと。
TSK3-5

サービスコールを遅延実行する場合で、E_QOVR エラーを省略することが製品マニュアルに記載されていれば、E_OK を返すことができる。

can_act：
can_act：タスク起動要求のキャンセル
No.
テスト手順参照
区分
テ ス ト 項 目
不正 ID 番号(tskid が不正あるいは使用できない) TSK2-10
エラーコード1
E_ID
タスクの起動要求キューイング数を０にクリアすること。
2
TSK2-8
サービスコール ０クリアする前の起動要求キューイング数を返値として actcnt
3
TSK2-16
処
理に返すこと。
tskid に TSK_SELF が指定されると、自タスクを対象とすること。
TSK2-6
4
ext_tsk：
ext_tsk：自タスクの終了
No.
テスト手順参照
区分
テ ス ト 項 目
TSK4-7
自タスクを実行状態から休止状態に移行させること。
1−
自タスクに対する起動要求がキューイングされている場合−
起動要求キューイング数が１以上の場合には、起動要求キュ2
TSK4-11
ーイング数から１を減じること。
(Ref)タスク
サービスコール
タスクの起動時に行うべき処理を行うこと。
3
管理機能-2,3
処
理実行可能状態に移行させること。
4
TSK4-9
タスクを起動する際のパラメータとして、タスクの拡張情報(exinf)を渡すこと。また、起動されたタスクでは、拡張情報 TSK4-95が正しく受け取れること。
サービスコール内でエラーが発生した場合の処理。
6
UMA-274-13

return：
return：自タスクの終了
No.
区
分
1
−
2
3
4

サービスコール処理

テ ス ト 項 目
テスト手順参照
TSK5-7
自タスクを実行状態から休止状態に移行させること。
自タスクに対する起動要求がキューイングされている場合−
起動要求キューイング数が１以上の場合には、起動要求キュTSK5-11
ーイング数から１を減じること。
タスクの起動時に行うべき処理を行い、実行可能状態に移行 (Ref)タスク
管理機能-2,3
させること。
タスクを起動する際のパラメータとして、タスクの拡張情報(exinf)を渡すこと。また、起動されたタスクでは、拡張情報 TSK5-9が正しく受け取れること。

ter_tsk：
ter_tsk：タスクの強制終了
No.
区分
テ ス ト 項 目
不正 ID 番号(tskid が不正あるいは使用できない)
1
E_ID
エラーコードサービスコール不正使用(対象タスクが自タスク)
2
E_ILUSE
オブジェクト状態エラー(対象タスクが休止状態)
3
E_OBJ
tskid で指定されるタスクを、休止状態に移行させること。
4−
対象タスクに対する起動要求がキューイングされている場合
起動要求キューイング数から１を減じること。
5
対象タスクを実行可能状態に移行させること。
6
サービスコール
処理
タスクの起動すべき処理を行うこと。
7
8

タスクを起動する際のパラメータとして、タスクの拡張情報を渡すこと。また、起動されたタスクでは、拡張情報だ正し
く受け取れること。

テスト手順参照
TSK6-2
TSK6-4
TSK6-6
TSK6-10−
TSK6-20
TSK6-18(Ref)タスク管理機能-2,3
TSK6-18

chg_pri：
chg_pri：タスク優先度の変更
No.
区分
テ ス ト 項 目
テスト手順参照
不正 ID 番号(tskid が不正あるいは使用できない) TSK7-2
1
E_ID
エラーコードTSK7-4
パラメータエラー(tskpri が不正)
2
E_PAR
オブジェクト状態エラー(対象タスクが休止状態) TSK7-6
3
E_OBJ
tskid で指定されるタスクの優先度を、tskpri で指定される値に変更すること。
TSK7-244
tskid に TSK_SELF が指定されると、自タスクを対象とすること。
5
TSK7-32
tskpri に TPRI_INI が指定されると、タスクの起動時優先度に変更すること。
TSK7-37
6
サービスコール−
対象タスクが実行できる状態である場合−
処理
タスクの優先順位を、変更後の優先度にしたがって変化させること。
TSK7-22
7
変更後の優先度と同じ優先度を持つタスクの間では、対象タ
8
TSK7-32
スクの優先順位を最低とすること。
get_pri：get_pri：タスク優先度の参照
No.
区
分
テ ス ト 項 目
不正 ID 番号(tskid が不正あるいは使用できない)
1
E_ID
エラーコードオブジェクト状態エラー(対象タスクが休止状態)
2
E_OBJ
サービスコール tskid で指定されるタスクの優先度を参照し、tskpri に返すこと。
3
処理
tskid に TSK_SELF が指定されると、自タスクを対象とすること。
4

テスト手順参照
TSK7-8
TSK7-10
TSK7-13
TSK7-16

4.2 タスク付属同期機能
No.
区
分
定
数
1
TMAX_WUPCNT

テスト手順参照
HED-68テ ス ト 項 目
タスクの起床要求キューイング数の最大値

4-14

１以上

slp_tsk：
slp_tsk：起床待ち
No.
区分
エラーコード1−
2
サービスコール−
処理
3
4
wup_tsk：
wup_tsk：タスクの起床
No.
区
分
1
2
エラーコード3
4
5
6

サービスコール
処理

7
iwup_tsk：
iwup_tsk：タスクの起床
No.
区
分
1
2
エラーコード
3

4
5
6
7
(注)
No.2

サービスコール処理

テ ス ト 項 目
待ち状態の強制解除(待ち状態の間に rel_wai を受付)
E_RLWAI
自タスクに対する起床要求がキューイングされていない場合
自タスクを起床待ち状態に移行させること。
自タスクに対する起床要求がキューイングされている場合
起床要求キューイング数から１を減じること。
自タスクを待ち状態に移行させずに、そのまま実行を継続すること。

テスト手順参照
SYN1-17−
SYN1-25−
SYN1-23
SYN1-8テ ス ト 項 目
テスト手順参照
SYN1-2不正ID
番号(tskidが不正あるいは使用できない)
E_ID
オブジェクト状態エラー(対象タスクが休止状態) SYN1-4
E_OBJ
キューイングオーバーフロー(起床要求キューイ
E_QOVRSYN1-14ング数のオーバーフロー)
tskid で指定されるタスクを、起床待ち状態から待ち解除すること。 SYN1-25
待ち解除されたタスクに対しては、待ち状態に入ったサービス
SYN1-25
コールの返値として E_OK を返すこと。
対象タスクが起床待ち状態でない場合には、タスクの起床要求
SYN1-21
キューイング数に１を加えること。
SYN1-8tskid に TSK_SELF が指定されると、自タスクを対象とすること。

テ ス ト 項 目
テスト手順参照
不正 ID 番号(tskid が不正あるいは使用できない) SYN2-6
オブジェクト状態エラー(対象タスクが休止状態)
サービスコールを遅延実行する場合で、E_OBJ
E_OBJ
SYN2-8
エラーを返すことを実装定義で省略できる。省略する場合は E_OK を返すこと。(注)キューイングオーバーフロー(起床要求キューイ
ング数のオーバーフロー)サ ー ビ ス コ ー ル を 遅 延 実 行 す る 場 合 で 、 SYN2-14
E_QOVR
E_QOVR エラーを返すことを実装定義で省略できる。省略する場合は E_OK を返すこと。(注)tskid で指定されるタスクを、起床待ち状態から待ち解除すること。 SYN2-16
待ち解除されたタスクに対しては、待ち状態に入ったサービス
SYN2-16
コールの返値として E_OK を返すこと。
対象タスクが起床待ち状態でない場合には、タスクの起床要求
SYN2-19
キューイング数に１を加えること。
tskid に TSK_SELF が指定されると、E_ID エラーを返すこと。
SYN2-4
E_ID

サービスコールを遅延実行する場合で、E_OBJ エラーを省略することが製品マニュアルに記載されていれば、E_OK を返すことができる。
No.3 サービスコールを遅延実行する場合で、E_QOVR エラーを省略することが製品マニュアルに記載されていれば、E_OK を返すことができる。

4-15

can_wup：
can_wup：タスク起床要求のキャンセル
No.
区分
テ ス ト 項 目
テスト手順参照
不正 ID 番号(tskid が不正あるいは使用できない) SYN3-2
1
E_ID
エラーコードオブジェクト状態エラー(対象タスクが休止状態) SYN3-4
2
E_OBJ
SYN3-16
タスクの起床要求キューイング数を０にクリアすること。
3
サービスコール
クリアする前の起床要求キューイング数を wupcnt に返すこと。 SYN3-14
4処理
tskid に TSK_SELF が指定されると、自タスクを対象タスクとすること。
5
SYN3-8rel_wai：
rel_wai：待ち状態の強制解除
No.
区分
テ ス ト 項 目
テスト手順参照
不正 ID 番号(tskid が不正あるいは使用できない) SYN4-2
1
E_ID
エラーコードオブジェクト状態エラー(対象タスクが待ち状態でない) SYN4-4
2
E_OBJ
対象タスクが待ち状態の時は実行可能状態に移行させること。
3
SYN4-7
サービスコール
このサービスコールにより待ち解除されたタスクに対しては、待ち状処理
4
SYN4-7態に入ったサービスコールの返値として E_RLWAI を返すこと。
irel_wai：
irel_wai：待ち状態の強制解除
No.
区
分
1
E_ID
エラーコード2
3

サービスコール
処理

4
(注)
No.2

4.3

テ ス ト 項 目
テスト手順参照
不正 ID 番号(tskid が不正あるいは使用できない) SYN5-5
オブジェクト状態エラー(対象タスクが待ち状態でない)
サービスコールを遅延実行する場合で、E_OBJ
E_OBJ
SYN5-7
エラーを返すことを実装定義で省略できる。省略する場合は、E_OK を返すこと。(注)対象タスクが待ち状態の時は実行可能状態に移行させること。
SYN5-13
このサービスコールにより待ち解除されたタスクに対しては、待ち状
SYN5-13
態に入ったサービスコールの返値として E_RLWAI を返すこと。

サービスコールを遅延実行する場合で、E_OBJ エラーを省略することが製品マニュアルに記載されていれば、E_OK を返すことができる。

タスク例外処理機能
確認項目なし4.4 同期・通信機能
4.4.1 セマフォ
No.
区
分
最大資源数
1

テ ス ト
セマフォの最大資源数の最大値

4-16

項

目
65535 以上

テスト手順参照
HED-69

CRE_SEM
CRE_SEM：
EM：セマフォの生成（静的 API）
No.
区
分
テ ス ト 項 目
テスト手順参照
SEM1-S2
不正 ID 番号(semid が不正あるいは使用できない)1
E_ID
SEM1-S4
予約属性(sematr が不正あるいは使用できない)
2
E_RSATR
エラーコードSEM1-S6
パラメータエラー(isemcnt>maxsem)
3
E_PAR
SEM1-S8
パラメータエラー(maxsem が最大資源数を越えた)
4
E_PAR
オブジェクト状態エラー(対象セマフォが登録済) SEM1-S11
5
E_OBJ
−
sematr には以下の指定ができ、オブジェクトが生成できること。
−
SEM2-29
静的 API6
TA_TFIFO
処理
isemcnt で示す初期値が正しいこと。
7
SEM2-14
SEM2-8maxsem で示す最大資源数が正しいこと。
8(注)
No.4 E_PAR エラーを検出できる maxsem がシステムに存在しない場合は、テストを省略することができる。
sig_sem：
sig_sem：セマフォ資源の返却
No.
区
分
テ ス ト 項 目
不正 ID 番号(semid が不正あるいは使用できない)
1
E_ID
エラーコードキューイングオーバーフロー(最大資源数を越える返却)
2
E_QOVR−
資源の獲得を待っているタスクがある場合
待ち行列の先頭のタスクを待ち解除すること。
3
対象セマフォの資源数は変化してはならないこと。
サービスコール
4
処
理
待ち状態に入ったサービスコールの返値として E_OK を返すこと。
5−
資源の獲得を待っているタスクがない場合
対象セマフォの資源数に１を加えること。
6

テスト手順参照
SEM2-2
SEM2-8−
SEM2-29
SEM2-31
SEM2-29−
SEM2-16

isig_sem：
sig_sem：セマフォ資源の返却
No.
区
分
1
E_ID

テスト手順参照
SEM3-14

2
−
3
4
5
−
6
(注)
No.2

エラーコードサービスコール処理

テ ス ト 項 目
不正 ID 番号(semid が不正あるいは使用できない)
キューイングオーバーフロー(最大資源数を越える返却)
サービスコールを遅延実行する場合で、E_QOVR エラ
E_QOVR
ーを返すことこを実装定義で省略できる。省略する場
合は、E_OK を返すこと。(注)
資源の獲得を待っているタスクがある場合
待ち行列の先頭のタスクを待ち解除すること。
対象セマフォの資源数は変化してはならないこと。
待ち状態に入ったサービスコールの返値として E_OK を返すこと。
資源の獲得を待っているタスクがない場合
対象セマフォの資源数に１を加えること。

SEM3-18−
SEM3-22
SEM3-25
SEM3-22−
SEM3-35

サービスコールを遅延実行する場合で、E_QOVR エラーを省略することが製品マニュアルに記載されていれば、E_OK を返すことができる。

4-17

wai_sem：
wai_sem：セマフォ資源の獲得
No.
区分
テ ス ト 項 目
不正 ID 番号(semid が不正あるいは使用できない)
1
E_ID
エラーコード待ち状態の強制解除(待ち状態の間に rel_wai を受付)
2
E_RLWAI−
対象セマフォの資源数が１以上の場合
セマフォの資源数から１を減じること。
3待ち状態とせずにサービスコールの処理を終了すること。
4
サービスコール−
対象セマフォの資源数が０の場合
処理
対象セマフォの資源数は０のまま変化してはならないこと。
5−
セマフォ属性が TA_TFIFO
自タスクを待ち行列の末尾につなぐこと。
6

テスト手順参照
SEM2-4
SEM2-37−
SEM2-10
SEM2-10−
SEM2-33−
SEM2-33

pol_sem：
pol_sem：セマフォ資源の獲得(ポーリング)
No.
区分
テ ス ト 項 目
不正 ID 番号(semid が不正あるいは使用できない)
1
E_ID
エラーコードポーリング失敗
2
E_TMOUT−
対象セマフォの資源数が１以上の場合
サービスコール
セマフォの資源数から１を減じること。
3
処
理
待ち状態とせずにサービスコールの処理を終了すること。
4

テスト手順参照
SEM2-6
SEM2-14−
SEM2-12
SEM2-124.4.2 イベントフラグ
No.
区
分

テスト手順参照

1
2

定数

FLGPTNTBIT_FLGPTN

テ ス ト 項 目
イベントフラグのビットパターン
16 ビット以上(符号無し整数)
イベントフラグのビット数
16 ビット以上

CRE_FLG：
CRE_FLG：イベントフラグの生成（静的 API）
No.
区
分
テ ス ト 項 目
不正 ID 番号(flgid が不正あるいは使用できない)
1
E_ID
予約属性(flgatr が不正あるいは使用できない)
2
E_RSATR
エラーコードパラメータエラー(iflgptn が不正)
3
E_PAR
オブジェクト状態エラー(対象イベントフラグが登録済)
4
E_OBJ
−
flgatr には以下の指定ができ、オブジェクトが生成できること。
5
TA_TFIFO
TA_TFIFO｜TA_WSGL
6
静的 API処理
TA_TFIFO｜TA_CLR
7
TA_TFIFO｜TA_WSGL｜TA_CLR
8iflgptn で示すビットパターンの初期値が正しいこと。
9
(注)
No.3

HED-70HED-71

テスト手順参照
FLG1-S2
FLG1-S4
FLG1-S6
FLG1-S9−
FLG2-26
FLG2-26
FLG3-20
FLG3-20
FLG2-73

E_PAR エラーを検出できる iflgptn がシステムに存在しない場合は、テストを省略すること
ができる。

4-18

set_flg：
set_flg：イベントフラグのセット
No.
区分
テ ス ト 項 目
テスト手順参照
FLG2-2
不正 ID 番号(flgid が不正あるいは使用できない)
1
E_ID
エラーコードFLG2-4
パラメータエラー(setptn が不正)
2
E_PAR
対象イベントフラグのビットパターンを、サービスコール呼出し前のビットパターンと setptn の値のビット毎の論理和に更新 FLG2-49
3すること。
対象イベントフラグのビットパターンが更新された結果、そのイベントフラグで待っているタスクの待ち解除条件を満たした FLG2-644
場合には、該当するタスクを待ち解除すること。
サービスコール−
待ち解除されたタスクに対しての処理−
処
理
待ち状態に入ったサービスコールの返値として E_OK を返すこと。 FLG2-64,84
5
待ち解除時のビットパターンとして、この時の(待ち解除条
6
FLG2-65,85
件を満たした)ビットパターンを返すこと。
TA_CLR が指定されている場合には、イベントフラグのビットパターンのすべてのビットをクリアし、サービスコール FLG2-87
7の処理を終了すること。
（注）
No.2 E_PAR エラーを検出できる setptn がシステムに存在しない場合は、テストを省略することができる。
iset_flg：
set_flg：イベントフラグのセット
No.
テスト手順参照
区分
テ ス ト 項 目
不正 ID 番号(flgid が不正あるいは使用できない) FLG3-5
1
E_ID
エラーコードFLG3-7
パラメータエラー(setptn が不正)
2
E_PAR
対象イベントフラグのビットパターンを、サービスコール呼出し前の3
FLG3-18
ビットパターンと setptn の値のビット毎の論理和に更新すること。
対象イベントフラグのビットパターンが更新された結果、そのイベントフラグで待っているタスクの待ち解除条件を満たした FLG3-174
場合には、該当するタスクを待ち解除すること。
−−
サービスコール 待ち解除されたタスクに対しての処理
処
理
待ち状態に入ったサービスコールの返値として E_OK を返すこと。 FLG3-17
5
待ち解除時のビットパターンとして、この時の(待ち解除条
6
FLG3-18
件を満たした)ビットパターンを返すこと。
TA_CLR が指定されている場合には、イベントフラグのビットパターンのすべてのビットをクリアし、サービスコール FLG3-23
7の処理を終了すること。
（注）
No.2 E_PAR エラーを検出できる setptn がシステムに存在しない場合は、テストを省略することができる。
clr_flg：
clr_flg：イベントフラグのクリア
No.
テスト手順参照
区分
テ ス ト 項 目
不正 ID 番号(flgid が不正あるいは使用できない) FLG2-6
1
E_ID
エラーコードFLG2-8
パラメータエラー(clrptn が不正)
2
E_PAR
サービスコール 対象イベントフラグのビットパターンを、サービスコール呼出し前の3
FLG2-37
処理
ビットパターンと clrptn の値のビット毎の論理積に更新すること。
（注）
No.2 E_PAR エラーを検出できる clrptn がシステムに存在しない場合は、テストを省略すること
ができる。

4-19

wai_flg：
wai_flg：イベントフラグ待ち
No.
区
分
1
E_ID
2
E_PAR
3
E_PAR
エラーコード
4
E_PAR
5
6
−
7
8
−
9
10
11
−
12
13
(注)
No.2

サービスコール処理

テ ス ト 項 目
不正 ID 番号(flgid が不正あるいは使用できない)パラメータエラー(waiptn が不正)
パラメータエラー(wfmode が不正)
パラメータエラー(p_flgptn が不正)サービスコール不正使用(TA_WSGL 属性が指定
E_ILUSEされたイベントフラグで待ちタスクあり)
待ち状態の強制解除(待ち状態の間に rel_wai を受付)
E_RLWAI
wfmode には、以下が指定できること。
TWF_ANDWTWF_ORW
対象イベントフラグのビットパターンが waiptn と wfmode で指定される待ち条件を満たしている場合
自タスクを待ち状態とせずにサービスコールの処理を終了すること。
flgptn には、この時の(待ち解除条件を満たした)ビットパターンを返すこと。
TA_CLR が指定されている場合には、イベントフラグのビットパターンのすべてのビットをクリアすること。
対象イベントフラグのビットパターンが waiptn と wfmode で指定される解除条件を満たしていない場合
自タスクを待ち行列につなぎ、イベントフラグ待ち状態に移行させること。
waiptn に０を指定した場合には、E_PAR エラーを返すこと。

テスト手順参照
FLG2-10
FLG2-12
FLG2-14
FLG2-16
FLG2-56
FLG2-60−
FLG2-56,69
FLG2-64,72−
FLG2-30,69
FLG2-31,70
FLG2-94−
FLG2-60
FLG2-67

E_PAR エラーを検出できる waiptn がシステムに存在しない場合は、テストを省略することができる。
No.4 E_PAR エラーを検出できる p_flgptn がシステムに存在しない場合は、テストを省略することができる。

pol_flg：
pol_flg：イベントフラグ待ち(ポーリング)
No.
テスト手順参照
区分
テ ス ト 項 目
不正 ID 番号(flgid が不正あるいは使用できない) FLG2-18
1
E_ID
FLG2-20
パラメータエラー(waiptn が不正)
2
E_PAR
FLG2-22
パラメータエラー(wfmode が不正)
3
E_PAR
エラーコードFLG2-24
パラメータエラー(p_flgptn が不正)
4
E_PAR
サービスコール不正使用(TA_WSGL 属性が指定
5
E_ILUSE
FLG2-58
されたイベントフラグで待ちタスクあり)
ポーリング失敗
6
E_TMOUTFLG2-33−
wfmode には、以下が指定できること。
−
7
TWF_ANDW
FLG2-37,77
8
TWF_ORW
FLG2-43,84
対象イベントフラグのビットパターンが waiptn と wfmode で指−−サービスコール
定される待ち条件を満たしている場合
処理
flgptn には、この時の(待ち解除条件を満たした)ビットパターンを返すこと。
9
FLG2-44
属性に TA_CLR が指定されている場合には、イベントフラ
10
FLG2-80グのビットパターンのすべてのビットをクリアすること。
waiptn に０を指定した場合には、E_PAR エラーを返すこと。
11
FLG2-39（注）
No.2 E_PAR エラーを検出できる waiptn がシステムに存在しない場合は、テストを省略することができる。
No.4 E_PAR エラーを検出できる p_flgptn がシステムに存在しない場合は、テストを省略することができる。

4-20

4.4.3 データキュー
CRE_DTQ
CRE_DTQ：
DTQ：データキューの生成（静的 API）
No.
テスト手順参照
区分
テ ス ト 項 目
不正 ID 番号(dtqid が不正あるいは使用できない) DTQ1-S2
1
E_ID
DTQ1-S4
予約属性(dtqatr が不正あるいは使用できない)
2
E_RSATR
エラーコードDTQ1-S6
パラメータエラー(dtqcnt が不正)
3
E_PAR
DTQ1-S9
オブジェクト状態エラー(対象データキューが登録済)
4
E_OBJ
−
dtqatr には以下の指定ができ、オブジェクトが生成できること。
−
静的 API5
TA_TFIFO
DTQ2-7
処理
データキュー領域に格納できるデータの個数が dtqcnt で指定できること。
6
DTQ2-10(注)No.3 E_PAR エラーを検出できる dtqcnt がシステムに存在しない場合は、テストを省略することができる。
psnd_dtq：
psnd_dtq：データキューへの送信(ポーリング)
No.
テスト手順参照
区分
テ ス ト 項 目
不正 ID 番号(dtqid が不正あるいは使用できない) DTQ2-2
1
E_ID
ポーリング失敗(対象データキューで受信を待っ
エラーコードているタスクがなく、データキュー領域に空きが DTQ2-4
2
E_TMOUT
ない場合には、E_TMOUT エラーを返すこと。)
dtqid で指定されるデータキューに、data で指定されるデータ
3
DTQ2-8を送信できること。
送信されるデータは、送信側から受信側にコピーされること。
4
DTQ2-8−
対象データキューで受信を待っているタスクがある場合−
受信待ち行列の先頭のタスクに送信するデータを渡し、その5
DTQ2-7
タスクの待ちを解除すること。
サービスコール
待ち解除されたタスクに対しては、待ち状態に入ったサービ
処理
6
DTQ2-7
スコールの返値として E_OK を返すこと。
データキューから受信したデータとして data の値を返すこと。
DTQ2-8
7−
データキューで送信されるデータ(１ワードのメッセージ)−
整数値であること。
8
DTQ2-8
送信側と受信側で共有しているメモリ上に置かれたメッセー
9
DTQ2-13
ジの先頭番地であること。

4-21

ipsnd_dtq：
psnd_dtq：データキューへの送信(ポーリング)
No.
区分
テ ス ト 項 目
テスト手順参照
DTQ3-4
不正 ID 番号(dtqid が不正あるいは使用できない)
1
E_ID
ポーリング失敗(サービスコールを遅延実行する場合
エラーコードで、E_TMOUT エラーを返すことを実装定義で省略で DTQ3-6
2
E_TMOUT
きる。省略する場合は E_OK を返すこと。)
dtqid で指定されるデータキューに、data で指定されるデータ
3
DTQ3-13を送信できること。
送信されるデータは、送信側から受信側にコピーされること。
4
DTQ3-13−
対象データキューで受信を待っているタスクがある場合−
受信待ち行列の先頭のタスクに送信するデータを渡し、その5
DTQ3-12
タスクの待ちを解除すること。
サービスコール
待ち解除されたタスクに対しては、待ち状態に入ったサービ
6
DTQ3-12
処理
スコールの返値として E_OK を返すこと。
データキューから受信したデータとして VP_INT data の値
7
DTQ3-12を返すこと。
−
データキューで送信されるデータ(１ワードのメッセージ)−
整数値であること。
8
DTQ3-13
送信側と受信側で共有しているメモリ上に置かれたメッセー
9
DTQ3-16
ジの先頭番地であること。
(注)
No.2 サービスコールを遅延実行する場合で、E_TMOUT エラーを省略することが製品マニュアルに記載されていれば、E_OK を返すことができる。
fsnd_dtq：
fsnd_dtq：データキューへの強制送信
No.
区
分
1
E_ID
エラーコード2
E_ILUSE
−
3
4
5
−
6
7

サービスコール処理

テ ス ト 項 目
不正 ID 番号(dtqid が不正あるいは使用できない)
サービスコール不正使用(対象データキューのデータキュー領域の容量が０)
対象データキューで受信を待っているタスクがある場合
受信待ち行列の先頭のタスクに送信するデータを渡し、そのタスクの待ちを解除すること。
待ち解除されたタスクに対しては、待ち状態に入ったサービ
スコールの返値として E_OK を返すこと。
データキューから受信したデータとして data の値を返すこと。
受信を待っているタスクがない場合送信するデータをデータキューの末尾に入れること。
データキュー領域に空きがない場合には、データキューの先頭のデータを抹消し、データキュー領域に必要な領域を確保すること。

4-22

テスト手順参照
DTQ4-2
DTQ4-4−DTQ4-14
DTQ4-14
DTQ4-15−
DTQ4-25
DTQ4-11

ifsnd_dtq：
fsnd_dtq：データキューへの強制送信
No.
区
分
1
E_ID
エラーコード2
E_ILUSE
−
3
4
5
−
6
7

サービスコール処理

テ ス ト 項 目
不正 ID 番号(dtqid が不正あるいは使用できない)
サービスコール不正使用(対象データキューのデータキュー領域の容量が０)
対象データキューで受信を待っているタスクがある場合
受信待ち行列の先頭のタスクに送信するデータを渡し、そのタスクの待ちを解除すること。
待ち解除されたタスクに対しては、待ち状態に入ったサービ
スコールの返値として E_OK を返すこと。
データキューから受信したデータとして VP_INT data の値を返すこと。
受信を待っているタスクがない場合送信するデータをデータキューの末尾に入れること。
データキュー領域に空きがない場合には、データキューの先頭のデータを抹消し、データキュー領域に必要な領域を確保すること。

テスト手順参照
DTQ5-4
DTQ5-6−
DTQ5-18
DTQ5-18
DTQ5-19−
DTQ5-29
DTQ5-23

rcv_dtq：
rcv_dtq：データキューからの受信
No.
区分
テ ス ト 項 目
テスト手順参照
不正 ID 番号(dtqid が不正あるいは使用できない) DTQ6-2
1
E_ID
エラーコードDTQ6-4
パラメータエラー(p_data が不正)
2
E_PAR
待ち状態の強制解除(待ち状態の間に rel_wai を受付) DTQ6-37
3
E_RLWAI−
対象データキューにデータが入っている場合−
DTQ6-9先頭のデータを取り出し、data に返すこと。
4−
データが入っていない場合−
サービスコール
自タスクを受信待ち行列につなぎ、データキューからの受信
処 理
5
DTQ6-13待ち状態に移行させること。
他のタスクがすでに受信待ち行列につながっている場合に6
DTQ6-18
は、自タスクを受信待ち行列の末尾につなぐこと。
（注）
No.2 E_PAR エラーを検出できる p_data がシステムに存在しない場合は、テストを省略することができる。
prcv_dtq：
prcv_dtq：データキューからの受信(ポーリング)
No.
テスト手順参照
区分
テ ス ト 項 目
不正 ID 番号(dtqid が不正あるいは使用できない) DTQ7-2
1
E_ID
エラーコードDTQ7-5
パラメータエラー(p_data が不正)
2
E_PAR
DTQ7-7
ポーリング失敗
3
E_TMOUT
サービスコール 対象データキューにデータが入っている場合−−
処 理
先頭のデータを取り出し、data に返すこと。
4
DTQ7-13（注）No.2 E_PAR エラーを検出できる p_data がシステムに存在しない場合は、テストを省略すること
ができる。

4-23

4.7 時間管理機能
4.7.1 システム時刻管理
No.
区
分
1
2
3
4
5

テスト手順参照
テ ス ト 項 目
アプリケーションが定められた周期で isig_tim を呼出し、シス
CYC2-10
テム時刻が更新されること。
時刻の更新
システム時刻更新機能がカーネル内部にある場合は、isig_tim を呼UMAび出さなくてもシステム時刻が更新されること。ただし、システム
28,29
時刻更新方法が製品マニュアルに記載されていること。
システム時刻に依存して行う処理 周期ハンドラの起動
CYC2-29
HED-72
TIC_NUME タイムティックの周期の分子
定数
タイムティックの周期の分母
TIC_DENO
HED-73

isig_tim：
isig_tim：タイムティックの供給
No.
テスト手順参照
区分
テ ス ト 項 目
システム時刻を更新できること。
1
CYC2-10
サービスコール
システム時刻を更新する機構をカーネル内部に持つ場合には、
処理2
UMA-28
このサービスコールをサポートする必要はない。
4.7.2 周期ハンドラ
No.
区
分
1

拡張情報

2

停止状態

テ ス ト 項 目
テスト手順参照
周期ハンドラを起動すべき時刻になると、その周期ハンドラの拡張情
CYC2-29報(exinf)をパラメータとして、周期ハンドラを起動すること。
周期ハンドラを起動すべき時刻になっても周期ハンドラを起動
CYC2-9
せず、次に起動すべき時刻の決定のみを行うこと。

CRE_CYC：
CRE_CYC：周期ハンドラの生成（静的 API）
No.
区
分
テ ス ト 項 目
テスト手順参照
CYC1-S2
予約属性(cycatr が不正あるいは使用できない)
1
E_RSATRCYC1-S4
パラメータエラー(cychdr が不正)
2
E_PAR
エラーコードCYC1-S6
パラメータエラー(cyctim が 0)
3
E_PAR
CYC1-S8
パラメータエラー(cycphs が不正)
4
E_PAR
−
TA_STA 指定の場合−
周期ハンドラを生成した後に、周期ハンドラを動作している
5
CYC2-10状態とすること。
静的 API−TA_STA 指定なしの場合−
処理
周期ハンドラを動作していない状態とすること。
6
CYC2-9周期ハンドラを最初に起動すべき時刻は、これらのサービスコールが呼び出された時刻(静的 API の場合にはシステム初期化の CYC2-107時刻)に、指定された起動位相を加えた時刻とすること。
(注)
No.2 E_PAR エラーを検出できる cychdr がシステムに存在しない場合は、テストを省略することができる。
sta_cyc
sta_cyc：_cyc：周期ハンドラの動作開始
No.
テスト手順参照
区分
テ ス ト 項 目
CYC2-3
不正 ID 番号 (cycid が不正あるいは使用できない)
エラーコード1
E_ID
cycid で指定される周期ハンドラを、動作している状態に移行さ
2
CYC2-19
せること。
サービスコール
対象周期ハンドラに、周期ハンドラ属性に TA_PHS が指定されてい処
理
ないで動作している状態の周期ハンドラが指定された場合には、周期 CYC2-24
3
ハンドラを次に起動すべき時刻の再設定のみを行うこと。

4-24

stp_cyc：
stp_cyc：周期ハンドラの動作停止
No.
区分
テ ス ト 項 目
テスト手順参照
CYC2-5
不正 ID 番号 (cycid が不正あるいは使用できない)
エラーコード1
E_ID
cycid で指定される周期ハンドラを、動作していない状態に移行
2
CYC2-15
サービスコール させること。
処理
動作していない状態の周期ハンドラが指定された場合には、何3CYC2-7もしないこと。
4.8

システム状態管理機能

get_tid：
get_tid：実行状態のタスク ID の参照
No.
区
分
テ ス ト 項 目
サービスコール
実行状態のタスクの ID 番号を参照し、tskid に返すこと。
1
処理

テスト手順参照
SYS1-3

iget_tid：
get_tid：実行状態のタスク ID の参照
No.
区
分
テ ス ト 項 目
サービスコール
実行状態のタスクのID
番号を参照し、tskid に返すこと。
1
処理
実行状態のタスクがない時は、tskid に TSK_NONE を返すこと。
2

テスト手順参照
SYS2-3
SYS2-28

loc_cpu：
loc_cpu：CPU ロック状態への移行
No.
区分
テ ス ト 項 目
サービスコール CPU ロック状態に移行すること。
1処理
CPU ロック状態で呼び出された場合には何もしないこと。
2

テスト手順参照
SYS1-9SYS1-15

iloc_cpu：
loc_cpu：CPU ロック状態への移行
No.
区分
テ ス ト 項 目
サービスコールCPU
ロック状態に移行すること。
1処理
CPU ロック状態で呼び出された場合には何もしないこと。
2

テスト手順参照
SYS2-7
SYS2-11

unl_cpu：
unl_cpu：CPU ロック状態の解除
No.
区
分
テ ス ト 項 目
サービスコール CPU ロック解除状態に移行すること。
1処理
CPU ロック解除状態で呼び出された場合には何もしないこと。
2

テスト手順参照
SYS1-19
SYS1-23

iunl_cpu：
unl_cpu：CPU ロック状態の解除
No.
区
分
テ ス ト 項 目
サービスコール CPU ロック状態解除に移行すること。
1処理
CPU ロック解除状態で呼び出された場合には何もしないこと。
2

テスト手順参照
SYS2-15
SYS2-19

dis_dspdis_dsp：
dsp：ディスパッチの禁止
No.
区分
テ ス ト 項 目
テスト手順参照
ディスパッチ禁止状態に移行すること。
1
SYS1-29
サービスコール
ディスパッチ禁止状態で呼び出された場合には何もしないこ処理2
SYS1-35と。
ena_dsp：ena_dsp：ディスパッチの許可
No.
区分
テ ス ト 項 目
テスト手順参照
ディスパッチ許可状態に移行すること。
1
SYS1-39
サービスコール
ディスパッチ許可状態で呼び出された場合には何もしないこ処理2
SYS1-43と。

4-25

sns_ctx：
sns_ctx：コンテキストの参照
No.
区分
テ ス ト 項 目
サービスコール タスクコンテキストから呼び出された場合に FALSE を返すこと。
1
処理
非タスクコンテキストから呼び出された場合に TRUE を返すこと。
2

テスト手順参照
SYS1-25
SYS2-21

sns_loc：
sns_loc：CPU ロック状態の参照
No.
区
分
テ ス ト 項 目
サービスコール システムが、CPU ロック状態の場合に TRUE を返すこと。
1
処
理
システムが、CPU ロック解除状態の場合に FALSE を返すこと。
2

テスト手順参照
SYS1-9SYS1-19

sns_dsp：sns_dsp：ディスパッチ禁止状態の参照
No.
区
分
テ ス ト 項 目
サービスコール システムが、ディスパッチ禁止状態の場合に TRUE を返すこと。
1
処
理
システムが、ディスパッチ許可状態の場合に FALSE を返すこと。
2

テスト手順参照
SYS1-29
SYS1-39

sns_dpnsns_dpn：ディスパッチ保留状態の参照
No.
区
分
テ ス ト 項 目
システムが、以下に示すディスパッチ保留状態の場合には−TRUE を返すこと。
ディスパッチャよりも優先順位の高い処理が実行されている間
1
サービスコール
処理
CPU ロック状態の間
2
ディスパッチ禁止状態の間
3システムが、ディスパッチ保留状態でない場合に FALSE を返すこと。
4
4.9 割込み管理機能
割込み管理機能
No.
区
分
1
データ型
2
3

記述形式

4

拡張情報

5

CPU ロック解除

6

リターン

テスト手順参照−
SYS2-30
SYS1-11
SYS1-31
SYS1-5テ ス ト 項 目
テスト手順参照
割込みハンドラ番号
HED-74
INHNO
割込み番号
INTNO
HED-75
製品マニュアル記載の通りに割込みハンドラを記述し、期待す
UMA-30
る動作を行うこと。
割込みサービスルーチンを起動する際、その割込みサービスル
ISR1-2ーチンの拡張情報(exinf)をパラメータとして渡すこと。
割込みハンドラ内で CPU ロック解除状態にする方法が、製品マ
UMA-31
ニュアルに明示されていること。
CPU ロック解除した後に、割込みハンドラから正しくリターン
UMA-32するための方法が製品マニュアルに明示されていること。

DEF_INH：
DEF_INH：割込みハンドラの定義（静的 API）
No.
区
分
テ ス ト 項 目
テスト手順参照
INH1-S2
予約属性(inhatrが不正あるいは使用できない)
1
E_RSATR
エラーコードINH1-S4
パラメータエラー(inhno が不正)
2
E_PAR
INH1-S6
パラメータエラー(inthdr が不正)
3
E_PAR
inhno で指定される割込みハンドラ番号に対して、定義情報に基静的 API4
INH1-2
づいて割込みハンドラを定義できること。
処理
inhno の具体的な意味が実装で定義されていること。
5
UMA-30(注)No.3 E_PAR エラーを検出できる inthdr がシステムに存在しない場合は、テストを省略すること
ができる。

4-26

ATT_I
ATT_ISR_ISR：
SR：割込みサービスルーチンの追加（静的 API）
No.
区
分
テ ス ト 項 目
テスト手順参照
予約属性(isratr が不正あるいは使用できない)
1
E_RSATR
ISR1-S2
エラーコードパラメータエラー(intno が不正)
2
E_PAR
ISR1-S4
パラメータエラー(isr が不正)
3
E_PAR
ISR1-S6
静的 API
割込みサービスルーチンを起動する時に、パラメータとして
4
ISR1-2処理
exinf を渡すこと。
(注)
No.3 E_PAR エラーを検出できる isr がシステムに存在しない場合は、テストを省略することができる。
4.11 システム構成管理機能
No.
テスト手順参照
区分
テ ス ト 項 目
1
データ型
CPU 例外ハンドラ番号
EXCNO
HED-76
CPU 例外ハンド 製品マニュアル記載の通りに CPU 例外ハンドラを記述し、期待2
UMA-34ラの記述形式する動作を行うこと。
初期化ルーチンを起動する際には、その初期化ルーチンの拡張
拡張情報3
INI1-2
情報(exinf)をパラメータとして渡すこと。
DEF_
DEF_EXC：EXC：CPU 例外ハンドラの定義（静的 API）
No.
区
分
テ ス ト 項 目
テスト手順参照
EXC1-S2
予約属性(excatr が不正あるいは使用できない)
1
E_RSATR
エラーコードEXC1-S4
パラメータエラー(excno が不正)
2
E_PAR
EXC1-S6
パラメータエラー(exchdr が不正)
3
E_PAR
excno の具体的な意味は実装定義であるが、一般的な実装では、
4
UMA-36プロセッサで区別される例外の種類に対応する。。
静的 API
すでに CPU 例外ハンドラが定義されている CPU 例外ハンドラ処
理
番号に対して、再度 CPU 例外ハンドラを定義した場合には、以 EXC1-2
5前の定義を解除し、新しい定義に置き換えること。
(注)
No.3 E_PAR エラーを検出できる exchdr がシステムに存在しない場合は、テストを省略することができる。
ATT_INI：
ATT_INI：初期化ルーチンの追加（静的 API）
No.
区
分
テ ス ト 項 目
テスト手順参照静的 API
追加された初期化ルーチンは、システム初期化時に、静的 API
1
INI1-1
処理の処理の一環として実行すること。
5. 付属規定
5.1 μITRON4.0 仕様準拠の条件
確認項目なし5.2 自動車制御用プロファイル
5.2.1 制約タスク
No.
テスト手順参照
区分
テ ス ト 項 目
タスクのメインルーチンからのリターンによってのみ、タスク
タスクの終了1
RST-17を終了することができること。
タスク属性に TA_RSTR を指定してタスクを生成した場合に、
タスク属性
2
RST-6
そのタスクは制約タスクとなる。

4-27

5.2.2 自動車制御用プロファイルに含まれる機能
No.
区
分
テ ス ト 項 目
制約タスクから ext_tsk サービスコールを呼び出した1
制約タスクから ter_tsk サービスコールを呼び出した2
制約タスクから chg_pri サービスコールを呼び出した
3
エラーコードE_NOSPT 制約タスクから slp_tsk サービスコールを呼び出した
4
制約タスクから wai_sem サービスコールを呼び出した
5
制約タスクから wai_flg サービスコールを呼び出した
6
制約タスクから rcv_dtq サービスコールを呼び出した
7

4-28

テスト手順参照
RST-4
RST-6
RST-8
RST-10
RST-12
RST-14
RST-16

第5章
第１節
1.1

自動車制御用プロファイルのテスト手順
プログラムによる確認の見方

テストに必要なシステム条件
自動車制御用プロファイルのテスト手順を実施する場合のシステム条件を以下に示す。
(1) ソフトウェアから何らかの CPU 例外が発生できること。
(2) ソフトウェアから何らか割込みが発生できること。
(3) 1msec 周期で isig_tim サービスコールを呼び出し、タイマを更新すること。

1.2

静的 API のテストを行う場合
以下に、静的 API のテストを行う場合のテスト手順の見方を、タスク管理機能のテスト手順
その１で説明する。また、｢4.1 タスク管理機能｣などタイトルの前の番号は、μITRON4.0
仕様書に記載されてあるものと一致させた。
TSK1：タスク管理機能のテスト手順 その１
No
S1
S2
S3
S4
S5
S6
S7
S8
S9
S10
S11
S12
S13
S14

テ ス ト 手 順 内 容
CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(ERR_TASK_ID,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
E_ID を検出できること
CRE_TSK(TASK_ID3,{ERR_TSKATR,TASK1,ITSKPRI_1,STKSZ,NULL})E_RSATR を検出できること
CRE_TSK(TASK_ID3,{TA_HLNG,EXINF_1,ERR_TASK,ITSKPRI_3,STKSZ,NULL})
E_PAR を検出できること
CRE_TSK(TASK_ID3,{TA_HLNG,EXINF_1,TASK1,ERR_ITSKPRI,STKSZ,NULL})
E_PAR を検出できること
CRE_TSK(TASK_ID3,{TA_HLNG,EXINF_1,TASK3,ITSKPRI_3,ERR_STKSZ,NULL})
E_PAR を検出できること
CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
E_OBJ を検出すること

テスト項目参照

CRE_TSK-1
CRE_TSK-2
CRE_TSK-3
CRE_TSK-4
CRE_TSK-5
CRE_TSK-6(1) No.
静的 API の記述順序を示す。
(2) テスト手順内容
システムコンフィギュレーションファイルに記述する内容である。
｢TASK_ID｣等は、μITRON 検定仕様書で使用する定数一覧でデータ型とその値を定義している。
網掛けされてあるものは、実装定義でエラーの検出を省略できることを示す。ただし、これらのエラーコードの検出を省略する場合は、省略する旨が製品マニュアルに記載されていること。
No.S4 でエラーを検出するとコンフィギュレータが停止するシステムの場合は、No.S4 のテストが完了したら、No.S3 と No.S4 をエディタ等で削除し、再度コンフィギュレータを実行する。
エラーを検出して停止したら当該行を削除する作業を最後まで繰り返す。
(3) テスト項目参照
テスト手順で確認すべき事項が、テスト項目のどの部分に記載されているかを示す。

5-1

1.3

静的 API 以外のテストを行う場合
以下に、タスク管理機能のテスト手順 その２を例にテスト手順の見方を説明する。
TSK2：タスク管理機能のテスト手順 その２No

テ ス ト 手 順 内 容

S1
S2
−
1
2
3
4
5

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK1,ITSKPRI_2,STKSZ,NULL})<TASK_ID<TASK_ID<TASK_ID1:DORMANT>_ID1:DORMANT><TASK_ID2:READY>_ID2:READY>
ercd = act_tsk(ERR_TASK_ID)
MERCD(ercd) ==E_ID
ercd = act_tsk(TSK_SELF)
MERCD(ercd) == E_OK
act_cnt = can_act(TSK_SELF)

6

actcnt == 1

7
8
9
10
11
12
13
14
15

act_cnt = can_act(TSK_SELF)
actcnt == 0
act_cnt = can_act(ERR_TASK_ID)
actcnt == E_ID
ercd = act_tsk(TASK_ID1)

exinf == EXINF_1
ercd = act_tsk(TASK_ID2)
MERCD(ercd) == E_OK
actcnt = can_act(TASK_ID2)

テスト
項目参照

−
act_tsk_1
act_tsk-7
act_tsk-7
can_act-4
can_act-2
can_act-1
act_tsk-3,5(1) No.
プログラムの実行順序を示す。必ずこの順序で実行されていることを確認しなければならない。
番号の前にＳが付加されているものは、静的 API の記述順序を示す。
番号のみの場合は、タスクやハンドラの実行順序であることを示す。したがって、タスクやハンドラは、必ず昇順で実行されることを確認すること。
｢−｣は、補足的説明を加えている行を示し、プログラム化を行う必要はない。
(2) テスト手順内容
静的 API でテスト環境を整え、No.1 から順次実行していく。また、No.1 で定数として使用している｢ERR_TASK_ID｣は、μITRON 検定仕様書で使用する定数一覧でデータ型とその値を定義している。さらに、No.5 で変数と使用している｢actcnt｣は、μITRON 検定仕様書で使用する変数一覧でデータ型を定義している。
ercd == E_OK など、イタリック体で記述している行では、値を比較し必ず一致しなければならないことを示す。
テスト項目と同様に、エラーコードに網掛けされてあるものは、実装定義でエラーの検出を省略できることを示す。ただし、これらのエラーコードの検出を省略する場合は、省略する旨が製品マニュアルに記載されていること。したがって、製品マニュアルに省略する旨が記載されている場合に限り、当該テストを省略できる。
No.12 で示すように、記述位置が変わっている場合は、状態が遷移しなければならないことを示す。
カーネル構成定数によって結果が異なる場合がある。
例えば、
TMAX_ACTCNT == 1 ：actcnt == 1などである。
TMAX_ACTCNT ＞ 1 ：actcnt == 2
定義している値によって、どちらかを選択すること。
静的 API 記述の次の行の<TASK<TASK_ID<TASK_ID1:DORMANT>_ID1:DORMANT>等、太字で記述しているものはタスクやハ
1:DORMANT>
ンドラの初期状態を示している。
(3) テスト項目参照
テスト手順で確認すべき事項が、テスト項目のどの部分に記載されているかを示す。

5-2

1.4

タスク・ハンドラの記述形式
テスト手順は、テスト項目確認のための具体的手段を記載している。テストするためのプロ
グラムがより自然に書けるよう、C 言語を意識した記載とした。
タスクおよびハンドラは、μITRON4.0 仕様書の規定の沿って、以下の通り記述する。
(1)タスクの C 言語による記述形式
void task(VP_INT exinf){
タスク本体
ext_tsk( )}(2)タスクの C 言語による記述形式(return で終了する場合)
void task(VP_INT exinf){
タスク本体
return}(3)タスク例外処理ルーチンの C 言語による記述形式
void texrtn(TEXPTN texptn, VP_INT exinf){
タスク例外処理ルーチン本体}(4)周期ハンドラの C 言語による記述形式
void cychdr(VP_INT exinf){
周期ハンドラ本体}(5)割込みサービスルーチンの C 言語による記述形式
void isr(VP_INT exinf){
割込みサービスルーチン本体}(6)初期化ルーチンの C 言語による記述形式
void inirtn(VP_INT exinf){
初期化ルーチン本体
}

5-3

1.5

自動車制御用プロファイルのテスト手順で使用する定数一覧
自動車制御用プロファイルのテスト手順では、以下に示す定数を定義しテストを実施すること。
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID

VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INTFLGPTNFLGPTN
UINT
UINT
UINT
UINT

ID
TASK_ID1TASK_ID1_1
TASK_ID1_2
TASK_ID2TASK_ID2_1
TASK_ID2_2
TASK_ID3TASK_ID4TASK_ID5~TASK_ID16
コンフィギュレータで
SEM_ID1~SEM_ID255
ID の自動割付けを行う
FLG_ID1
FLG_ID2
FLG_ID3
DTQ_ID1
DTQ_ID2
DTQ_ID3
DTQ_ID4CYC_ID1
CYC_ID2
拡 張 情 報EXINF_1(VP_INT)0x00000001
EXINF_1_1(VP_INT)0x00000011
EXINF_1_2(VP_INT)0x00000012
EXINF_2(VP_INT)0x00000002
EXINF_2_1(VP_INT)0x00000021
EXINF_2_2(VP_INT)0x00000022
EXINF_3(VP_INT)0x00000003
EXINF_4(VP_INT)0x00000004
EXINF_CYC1(VP_INT)0x00000001
EXINF_CYC2(VP_INT)0x00000002
初 期 値
IFLGPTN_0
0x0000IFLGPTN_1
0x0001ISEMCNT_00
ISEMCNT_1
1
ISEMCNT_2
2
ISEMCNT_FFFE
0xfffe

FP
FP
FP
FP
FP
FP
FP
FP
FP
FP
FP
FP
FP
FP
FP
FP
FP
FP
INHNO
INHNO
EXCNO
INTNO
PRI
PRI
ATR
ATR
ATR
ATR
SIZE

5-4

起 動 番 地TASK1TASK_ID1 起動番地
TASK1_1
TASK_ID1_1 起動番地
TASK1_2
TASK_ID1_2 起動番地
TASK2
TASK_ID2 起動番地
TASK2_1
TASK_ID2_1 起動番地
TASK2_2
TASK_ID2_2 起動番地
TASK3
TASK_ID3 起動番地
TASK4
TASK_ID4 起動番地
TASK5〜TASK16TASK_ID5〜TASK_ID16 起動番地
INTHDR_1
割込みハンドラ起動番地
ISR_ADR_00
ISR_1
割込みサービスルーチン起動番地
EXCHDR_1
CPU 例外ハンドラ起動番地
EXCHDR_2
CPU 例外ハンドラ起動番地
INIRTN_1
初期化ルーチン起動番地
INIRTN_2
初期化ルーチン起動番地
CYCHDR_1
周期ハンドラ起動番地
CYCHDR_2
周期ハンドラ起動番地
INHNO
何らかの割込みハンドラを実装毎に定義する
INHNO_1
実装で定義
EXCNO_1
実装で定義
INTNO_1
実装で定義
優 先 度
ITSKPRI_1〜ITSKPRI_16 0x0001〜0x0010
TSKPRI_3
0x0003属性
INHATR
実装毎に値を定義する
INHATR_1
実装毎に値を定義する
EXCATR
実装毎に値を定義する
INIATR
実装毎に値を定義する
サ イ ズ
STKSZ
0x0100RELTIMRELTIMRELTIMRELTIMRELTIM
UINT
UINT
UINT
FLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTNFLGPTN
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
VP_INT
UW

周期ハンドラ
0
10
55
0
5
最 大 値
MAXSEM_1
1
MAXSEM_2
2
MAXSEM_FFFF
0xffff
フラグパターン
SETPTN_1
0x0001
CLRPTN_0000
0x0000
CLRPTN_1
0x0001SETPTN_0001
0x0001SETPTN_0002
0x0002
SETPTN_0005
0x0005
SETPTN_0055
0x0055
SETPTN_0500
0x0500SETPTN_0505
0x0505
SETPTN_5500
0x5500SETPTN_1111
0x1111SETPTN_5555
0x5555
SETPTN_8000
0x8000SETPTN_AAAA
0xAAAA
WAIPTN_0000
0x0000
WAIPTN_1
0x0001WAIPTN_0001
0x0001WAIPTN_0002
0x0002
WAIPTN_0050
0x0050
WAIPTN_0055
0x0055
WAIPTN_0505
0x0505
WAIPTN_8000
0x8000
WAIPTN_AAAA
0xAAAAFLGPTN_0055
0x0055FLGPTN_5555
0x5555
そ の 他
DATA_00(VP_INT)0x00000000
DATA_01(VP_INT)0x00000001
DATA_05(VP_INT)0x00000005
DATA_11(VP_INT)0x00000011
DATA_22(VP_INT)0x00000022
DATA_33(VP_INT)0x00000033
DATA_55(VP_INT)0x00000055
DATA_77(VP_INT)0x00000077
DATA_88(VP_INT)0x00000088
DATA_99(VP_INT)0x00000099
DATA_AA(VP_INT)0x000000AAMEMORY
共有メモリアドレスCYCTIM_0
CYCTIM_10
CYCTIM_55
CYCPHS_0
CYCPHS_5

UINT
UINT
UINT
FP
ID
ATR
PRI
PRI
SIZE
INHNO
ATR
ATR
INHNO
EXCNO
ATR
ATR
ID
UINT
ID
ATR
FLGPTNFLGPTNFLGPTN
MODE
ID
ATR
UINT
ID
ATR
RELTIM
FP
FP
FP

5-5

カウンタ
0x00000000
0x00000001
0x00000002
エラー定数
ERR_TASK
E_PAR エラーを返すアドレスを実装毎に定義する
ERR_TASK_ID-1
ERR_TSKATR
0xff
ERR_ITSKPRI-1
ERR_TSKPRI-2
ERR_STKSZ
E_PAR エラーを返す値を実装毎に定義する
ERR_INHNO
E_PAR エラーを返す値を実装毎に定義する
ERR_INHATR
E_PAR エラーを返す値を実装毎に定義する
ERR_ISRATR
2
ERR_INTNO
未サポート割込み番号
ERR_EXCNO
E_PAR エラーを返す値を実装毎に定義する
ERR_EXCATR
E_PAR エラーを返す値を実装毎に定義する
ERR_SEMATR
0x55
ERR_SEM_ID-2
MAXSEM_OVER
E_PAR エラーを返す値を実装毎に定義する
ERR_FLG_ID-3
ERR_FLGATR
0xaa
ERR_SETPTN
0xffffffff
ERR_CLRPTN
0xffffffff
ERR_WAIPTN
0xffffffff
ERR_WFMODE
0x02
ERR_DTQID-2
ERR_DTQATR
0xaa
ERR_DTQCNT
0xffffffff
ERR_CYCID
0
ERR_CYCATR
0xdd
ERR_CYCPHS
E_PAR エラーを返す値を実装毎に定義する
ERR_INTHDR
E_PAR エラーを返す値を実装毎に定義する
ERR_EXCHDR
E_PAR エラーを返す値を実装毎に定義する
ERR_CYCHDR
E_PAR エラーを返す値を実装毎に定義する
DTQCNT_0
DTQCNT_1
DTQCNT_2

1.6

自動車制御用プロファイルのテスト手順で使用する変数一覧
自動車制御用プロファイルのテスト手順では、以下に示す変数を定義しテストを実施すること。
型
ER
ER_UINTPRIFLGPTN
UW
B
UB
VB
VP
UINT
ER
STAT
SIZE
VP_INT
ER_UINT

変数名
ercd
actcnt*p_tskpri
flgptncyc_work1
b1
ub1
vb1
vp1
uint1
er1
stat1
size1
vp_int1
er_uint1

型
VP_INTPRI
ER_UNITVP_INT
UW
H
UH
VH
FP
BOOL
ID
MODE
TMO
ER_BOOL

変数名
exinf
tskpriwupcnt*p_data
cyc_work2
h1
uh1
vh1
fp1
bool1
id1
mode1
tmo1
er_bool1

5-6

型
BOOL
ID
FLGPTN
VP_INT
UW
W
UW
VW
INT
FN
ATR
PRI
RELTIM
ER_ID

変数名
state
*p_tskid*p_flgptn
data
work
w1
uw1
vw1
int1
fn1
atr1
pri1
reltim1
er_id1

第 5章

第２節

プログラムによる確認の手順

COM1：ITRON仕様共通規定のテスト手順
その1
COM1
No

１

テ

ス

ト

手

順

内

容

#include <kernel.h>#include <kernel.h>B c;main( ){
B a=1,b=2;

テスト
項目参照

APIの構成要素-5

c = a + b;}
※ 上記ファイルをコンパイルして、エラーが発生しないことを確認する。
COM2：ITRON仕様共通規定のテスト手順
その2
COM2
No
S1
S2
S3
S4
S5
S6
S7
S8
S9
S10
S11
S12
S13
S14
S15
S16
−
1
2

〜
15
16

テ

ス

ト

手

順

内

容

CRE_TSK(TASK_ID16,{TA_HLNG|TA_ACT,EXINF_16,TASK16,ITSKPRI_16,STKSZ,NULL})
CRE_TSK(TASK_ID15,{TA_HLNG|TA_ACT,EXINF_15,TASK15,ITSKPRI_15,STKSZ,NULL})
CRE_TSK(TASK_ID14,{TA_HLNG|TA_ACT,EXINF_14,TASK14,ITSKPRI_14,STKSZ,NULL})
CRE_TSK(TASK_ID13,{TA_HLNG|TA_ACT,EXINF_13,TASK13,ITSKPRI_13,STKSZ,NULL})
CRE_TSK(TASK_ID12,{TA_HLNG|TA_ACT,EXINF_12,TASK12,ITSKPRI_12,STKSZ,NULL})
CRE_TSK(TASK_ID11,{TA_HLNG|TA_ACT,EXINF_11,TASK11,ITSKPRI_11,STKSZ,NULL})
CRE_TSK(TASK_ID10,{TA_HLNG|TA_ACT,EXINF_10,TASK10,ITSKPRI_10,STKSZ,NULL})
CRE_TSK(TASK_ID9,{TA_HLNG|TA_ACT,EXINF_9,TASK9,ITSKPRI_9,STKSZ,NULL})
CRE_TSK(TASK_ID8,{TA_HLNG|TA_ACT,EXINF_8,TASK8,ITSKPRI_8,STKSZ,NULL})
CRE_TSK(TASK_ID7,{TA_HLNG|TA_ACT,EXINF_7,TASK7,ITSKPRI_7,STKSZ,NULL})
CRE_TSK(TASK_ID6,{TA_HLNG|TA_ACT,EXINF_6,TASK6,ITSKPRI_6,STKSZ,NULL})
CRE_TSK(TASK_ID5,{TA_HLNG|TA_ACT,EXINF_5,TASK5,ITSKPRI_5,STKSZ,NULL})
CRE_TSK(TASK_ID4,{TA_HLNG|TA_ACT,EXINF_4,TASK4,ITSKPRI_4,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG|TA_ACT,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})<TASK_ID<TASK_ID2
TASK_ID15: READY>READY>_ID2〜TASK_ID15:<TASK_ID16<TASK_ID<TASK_ID1:READY>_ID1:READY><TASK_ID16:_ID16: READY>TASK_ID2 ・・・・・ TASK_ID15
ext_tsk( )ext_tsk( )
・
・
・
・
・
ext_tsk( )ext_tsk( )

テスト
項目参照

−

優先度-1

COM3：
COM3：ITRON仕様共通規定のテスト手順 その３
No

テ

ス

ト

手

順

内

容

S1
S2
−
1

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG,EXINF_2,TASK1,ITSKPRI_2,STKSZ,NULL})<TASK_ID<TASK_ID<TASK_ID1:READY>_ID1:READY><TASK_ID2:_ID2:DORMANT
2:DORMANT>DORMANT>
ercd = get_tid(ERR_ADDR)

2

MERCD(ercd) == E_MACV

テスト
項目参照

−
サービスコールの返値とエラーコード-3

3
ext_tsk( )(注)No.2 E_MACVエラーを検出できるERR_ADDR番地がシステムにない場合は、テストを省略することができる。

5-7

COM4：
COM4：ITRON仕様共通規定のテスト手順 その４
No

１

２

テ

ス

ト

手

順

内

容

以下の機能を持つプログラムを作成し、それをソフトウェア部品のコンフィギュレータとして、カーネルのコンフィギュレーション手順に組み込む。
(1) プログラムに渡されたファイルをそのまま表示する機能(2) プログラムに渡されたファイルに、｢CRE_TSK｣で始まる行があれば、その直前に｢#define TA_HLNG 0x12345678｣を追加してファイルとして出力する機能
以下のシステムコンフィギュレーションファイルを入力して、カーネルのコンフィギュレーション手順を実行する。
(システムコンフィギュレーションファイルの内容)
INCLUDE(“<kernel.h>”);INCLUDE(“\”task1.h\””);#defineEXINF_1
0x00000001#defineITSKPRI_1 0x0001#define
STKSZ
0x0100
CRE_TSK(TASK_ID1,{TA_HLNG|0x00,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL});

テスト
項目参照

静的APIの文法とパラメータ-1,2,4,5

ただし、以下の内容のヘッダファイル｢task1.h｣を用意しておくこと。
(task1.hの内容)
externvoid
TASK1( );３４システムコンフィギュレー
ションファイル-1,2

プリプロセッサからエラーメッセージが出力されないこと。
ソフトウェア部品のコンフィギュレータが、以下の内容を表示すること。
(コンフィギュレータによる表示内容)
INCLUDE(“<kernel.h>”);INCLUDE(“\”task1.h\””);

システムコンフィギュレー
ションファイル-2

CRE_TSK(TASK_ID1,{TA_HLNG|0x00,0x00000001,TASK1,0x0001,0x0100,NULL});
なお、この他に#で始まる行が含まれていてもよい。
56

システムコンフィギュレー
ションファイル-1,2,5
ITRON仕様共通性的API-1

カーネルのコンフィギュレータからエラーメッセージが出力されないこと。
カーネルのコンフィギュレータが、以下の内容のカーネル構成・初期化ファイルを生成し、それが正しくコンパイルできること。
(カーネル構成・初期化ファイルの内容)#include <kernel.h>#include “task1.h”
タスクの初期化データ

7

カーネルのコンフィギュレータが、以下の内容のID自動割付け結果ヘッダファイル｢kernel_id.h｣を生成すること。
(Id自動割付け結果ヘッダファイル｢kernel_id.h｣の内容)#defineTASK_ID1

1

システムコンフィギュレー
ションファイル-3
ITRON仕様共通性的API-1

APIの構成要素-4
システムコンフィギュレー
ションファイル-3
静的APIの文法とパラメータ-6

COM5：
COM5：ITRON仕様共通規定のテスト手順 その５
No

１

2

3

テ

ス

ト

手

順

内

容

システムコンフィギュレーションファイルの内容
INCLUDE(“<kernel.h>”);INCLUDE(“\”task1.h\””);#define EXINF_1
0x00000001#define ITSKPRI_1 0x0001#define STKSZ
0x0100
ABC_DEF(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL}) ;静的APIの名称が異なるので、カーネルのコンフィギュレータがエラーを報告すること。
システムコンフィギュレーションファイルの内容
INCLUDE(“<kernel.h>”);INCLUDE(“\”task1.h\””);#define EXINF_1
0x00000001#define ITSKPRI_1 0x0001#define STKSZ
0x0100
CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL};
静的APIの文法が異なるので、カーネルのコンフィギュレータがエラーを報告すること。
システムコンフィギュレーションファイルの内容
INCLUDE(“<kernel.h>”);INCLUDE(“\”task1.h\””);#define EXINF_1
0x00000001#define ITSKPRI_1 0x0001#define STKSZ
0x0100
CRE_TSK(TASK_ID1,{TA_HLNG,NULL}) ;静的APIのパラメータ数が少ないので、カーネルのコンフィギュレータがエラーを報告すること。
ただし、上記記述を許可するようにコンフィギュレータが拡張されていた場合は、テストを省略することができる。

5-8

テスト
項目参照

システムコンフィギュレー
ションファイル-4
静的APIの文法とパラメータ-7

システムコンフィギュレー
ションファイル-4
静的APIの文法とパラメータ-7

システムコンフィギュレー
ションファイル-4
静的APIの文法とパラメータ-7

4

システムコンフィギュレーションファイルの内容
INCLUDE(“<kernel.h>”);INCLUDE(“\”task1.h\””);#define EXINF_1
0x00000001#define ITSKPRI_1 0x0001#define STKSZ
0x0100

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,NULL,NULL});

システムコンフィギュレー
ションファイル-4
静的APIの文法とパラメータ-7

静的APIのパラメータ数が多いので、カーネルのコンフィギュレータがエラーを報告すること。
ただし、上記記述を許可するようにコンフィギュレータが拡張されていた場合は、テストを省略することができる。
COM6：
COM6：ITRON仕様共通規定のテスト手順 その６
No
１

テ

ス

ト

手

順

内

容

アプリケーションプログラムとリンクしてカーネルを用いる場合、カーネルオブジェクトのシンボルをダンプし、C言語レベルで内部識
別子が _kernel_ または _KERNEL_ で始まる名称であること。

テスト
項目参照
カーネルとソフト
ウェア内部識別子-1

COM7：
COM7：ITRON仕様共通規定のテスト手順 その７
No
S1
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

テ

ス

ト

手

順

内

容

テスト
項目参照

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})<TASK_ID1:REDAY>

1 == sizeof(B)b1 = -1
b1 < 01 == sizeof(UB)
ub1 = -1
ub1 > 02 == sizeof(H)h1 = -1
h1 < 02 == sizeof(UH)uh1 = -1
uh1 > 04 == sizeof(W)w1 = -1
w1 < 04 == sizeof(UW)
uw1 = -1
uw1 > 01 == sizeof(VB)
2 == sizeof(VH)
4 == sizeof(VW)
sizeof(void *) == sizeof(VP)sizeof(void *) == sizeof(FP)2 ≦ sizeof(INT)
int1 = -1
int1 < 0
2 ≦ sizeof(UINT)
uint1 = -1
uint1 > 0
bool1 = TRUE
bool1 == TRUE
bool1 = FALSE
bool1 == FALSE
2 ≦ sizeof(FN)
fn1 = -1
fn1 < 01 ≦ sizeof(ER)er1 = -1
er1 < 02 ≦ sizeof(ID)id1 = -1
id1 < 01 ≦ sizeof(ATR)
atr1 = -1
atr1 > 0
2 ≦ sizeof(STAT)
stat1 = -1
stat1 > 0
1 ≦ sizeof(MODE)
mode1 = -1
mode1 > 0−
ITRON仕様共通データ型-1
ITRON仕様共通データ型-1
ITRON仕様共通データ型-4
ITRON仕様共通データ型-4
ITRON仕様共通データ型-2
ITRON仕様共通データ型-2
ITRON仕様共通データ型-5
ITRON仕様共通データ型-5
ITRON仕様共通データ型-3
ITRON仕様共通データ型-3
ITRON仕様共通データ型-6
ITRON仕様共通データ型-6
ITRON仕様共通データ型-7
ITRON仕様共通データ型-8
ITRON仕様共通データ型-9
ITRON仕様共通データ型-10
ITRON仕様共通データ型-11
ITRON仕様共通データ型-12
ITRON仕様共通データ型-12
ITRON仕様共通データ型-13
ITRON仕様共通データ型-13
ITRON仕様共通データ型-14
ITRON仕様共通データ型-14
ITRON仕様共通データ型-15
ITRON仕様共通データ型-15
ITRON仕様共通データ型-16
ITRON仕様共通データ型-16
ITRON仕様共通データ型-17
ITRON仕様共通データ型-17
ITRON仕様共通データ型-18
ITRON仕様共通データ型-18
ITRON仕様共通データ型-19
ITRON仕様共通データ型-19
ITRON仕様共通データ型-20
ITRON仕様共通データ型-20

5-9

52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83

2 ≦ sizeof(PRI)
pri1 = -1
pri1 < 0sizeof(SIZE) == sizeof(void *)size1 = -1
size1 > 0
2 ≦ sizeof(TMO)
tmo1 = -1
tmo1 < 0
2 ≦ sizeof(RELTIM)
reltim1 = -1
reltim1 > 0
2 ≦ sizeof(SYSTIM)
systim1 = -1
systim1 > 0
sizeof(VP_INT) ≧ sizeof(INT) && sizeof(VP_INT) ≧ sizeof(VP)
vp_int1 = -1
vp_int1 < 0
1 ≦ sizeof(ER_BOOL)
er_bool1 = TRUE
er_bool1 == TRUE
er_bool1 = FALSE
er_bool1 == FALSE
er_bool1 = -1
er_bool1 < 0
2 ≦ sizeof(ER_ID)
er_id1 = -1
er_id1 < 0
2 ≦ sizeof(ER_UINT)
er_uint1 = -1
er_uint1 < 0
ext_tsk( )ITRON仕様共通データ型-21
ITRON仕様共通データ型-21
ITRON仕様共通データ型-22
ITRON仕様共通データ型-22
ITRON仕様共通データ型-23
ITRON仕様共通データ型-23
ITRON仕様共通データ型-24
ITRON仕様共通データ型-24
ITRON仕様共通データ型-25
ITRON仕様共通データ型-25
ITRON仕様共通データ型-26
ITRON仕様共通データ型-26
ITRON仕様共通データ型-27
ITRON仕様共通データ型-27
ITRON仕様共通データ型-27
ITRON仕様共通データ型-27
ITRON仕様共通データ型-28
ITRON仕様共通データ型-28
ITRON仕様共通データ型-29
ITRON仕様共通データ型-29

COM8：
COM8：ITRON仕様共通規定のテスト手順 その８
No
S1
S2

テ

ス

ト

手

順

内

容

テスト
項目参照

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})CRE_SEM(SEM_ID1,{TA_TFIFO,ISEMCNT_0,MAXSEM_FFFF})<TASK_ID1:READY>−
1

ercd = pol_sem(SEM_ID1)

2(ER)(B)ercd == E_TMOUT

3

ercd >> 8 < 04
5
6

MERCD(ercd) == (ER)(B)ercd
SERCD(ercd) == ercd >> 8
ext_tsk( )−サービスコールの返値とエ
ラーコード-2
サービスコールの返値とエ
ラーコード-2
ITRON仕様共通マクロ-1
ITRON仕様共通マクロ-2

SPC1：
SPC1：μITRON4.0仕様の概念と共通のテスト手順 その1
No
S1
S3
S4
−
1
2
3
4
5
6
7
8

テ

ス

ト

手

順

内

容

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG|TA_ACT,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})CRE_SEM(SEM_ID1,{TA_TFIFO,ISEMCNT_0,MAXSEM_1})<TASK_ID<TASK_ID<TASK_ID1:DORMANT>_ID1:DORMANT><TASK_ID3:_ID3: READY>
ercd = act_tsk(TASK_ID1)
ercd = wai_sem(SEM_ID1)
MERCD(ercd) == E_OK
ercd = sig_sem(SEM_ID1)
MERCD(ercd) == E_OK
ext_tsk( )MERCD(ercd) == E_OK
ext_tsk( )

5-10

テスト
項目参照

−

タスク状態-1

SPC2：
SPC2：μITRON4.0仕様の概念と共通のテスト手順 その2
No
S1
S2
S3
S4
S5
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

テ

ス

ト

手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID2_1,{TA_HLNG,EXINF_2,TASK2_1,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID2_2,{TA_HLNG,EXINF_2,TASK2_2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG|TA_ACT,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})<TASK_ID<TASK_ID<TASK_ID<TASK_ID<TASK_ID1:DORMANT>_ID1:DORMANT><TASK_ID2:_ID2: DORMANT><TASK_ID2_1:_ID2_1: DORMANTDORMANT><TASK_ID2_2:_ID2_2: DORMANTDORMANT><TASK_ID<TASK_ID3:READY>_ID3:READY>
ercd = act_tsk(TASK_ID2)−

ercd = act_tsk(TASK_ID2_1)
ercd = E_OK
ercd = act_tsk(TASK_ID2_2)
ercd = E_OK
ercd = act_tsk(TASK_ID1)

exinf == EXINF_1
ercd = slp_tsk( )タスクのスケジューリング規則-1,2

MERCD(ercd) == E_OK
ercd = slp_tsk( )タスクのスケジューリング規則-４
ercd = wup_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = wup_tsk(TASK_ID1)

タスクのスケジューリング規則-３

MERCD(ercd) == E_OK
ext_tsk( )MERCD(ercd) == E_OK
ext_tsk( )タスクのスケジューリング規則-７
ext_tsk( )MERCD(ercd) == E_OK
ext_tsk( )タスクのスケジューリング規則-8

MERCD(ercd) == E_OK
ext_tsk( )SPC3：
SPC3：μITRON4.0仕様の概念と共通のテスト手順 その3
No
S1
S2
−
1
2
3
4
5
6
7
8

テ

ス

ト

手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})<TASK_ID<TASK_ID<TASK_ID1:DORMANT>_ID1:DORMANT><TASK_ID2:_ID2: READY>
ercd = dis_dsp( )MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID1)
MERCD(ercd) == E_OK
ercd = ena_dsp( )ext_tsk( )MERCD(ercd) == E_OK
ext_tsk( )−タスクのスケジューリング規則-5

SPC4：
SPC4：μITRON4.0仕様の概念と共通のテスト手順 その4
テスト
項目参照

No

テ

S1
S2
S3
S4
S5
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14

CRE_TSK(TASK_ID4,{TA_HLNG|TA_ACT,EXINF_4,TASK4,ITSKPRI_4,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG|TA_ACT,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})
CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
DEF_INH(INHNO_1,{INHATR,INTHDR_1})<TASK_ID<TASK_ID<TASK_ID<TASK_ID<TASK_ID1:READY>_ID1:READY><TASK_ID2:READY>_ID2:READY><TASK_ID3:READY>_ID3:READY><TASK_ID4:READY>_ID4:READY>
１回目
２回目
ext_tsk( )<INTHDR_1の割込み発生>

ス

ト

手

順

内

容

<INTHDR_1:割込みハンドラ<INTHDR_1:割込みハンドラ>
割込みハンドラ>−

ercd = iact_tsk(TASK_ID1)
MERCD(ercd) == E_OK
returnext_tsk( )ercd = slp_tsk( )ercd = wup_tsk(TASK_ID2)

MERCD(ercd) == E_OK
ext_tsk( )MERCD(ercd) == E_OK
ext_tsk( )ext_tsk( )5-11

タスクのスケジューリング規則-6

SPC5：
SPC5：μITRON4.0仕様の概念と共通のテスト手順 その5
No
S1
S2
S3
−
1
2
3

テ

ス

ト

手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})DEF_EXC(EXCNO_1,{EXCATR,EXCHDR_1})
DEF_EXC(EXCNO_2,{EXCATR,EXCHDR_2})<TASK_ID<TASK_ID1:READY>_ID1:READY><EXCHDR_1:CPU例外ハンドラ<EXCHDR_1:CPU例外ハンドラ>
例外ハンドラ>EXCNO_1のCPU例外を発生させる
returnext_tsk( )例外処理の枠組み-2−
例外処理の枠組み-1

SPC6：
SPC6：μITRON4.0仕様の概念と共通のテスト手順 その6
No

テ

ス

ト

手

順

内

S1
S2
S3
S4
−
1

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
DEF_INH(INHNO_1,{INHATR,INTHDR_1})
CRE_CYC(CYC_ID1,{TA_HLNG,EXINF_2,CYCHDR_1,CYCTIM_10,CYCPHS_5})
DEF_EXC(EXCNO_1,EXCATR,EXCHDR_1)<INHNO_1:割込みハンドラ<EXCHDR_1:CPU例外ハンドラ<TASK_ID<INHNO_1:割込みハンドラ>
割込みハンドラ><EXCHDR_1:CPU例外ハンドラ>
例外ハンドラ><TASK_ID1:READY>_ID1:READY>
state = sns_ctx( )2state == FALSE

34

INHNO_1の割込みを発生させる<CYC_ID1:周期ハンドラ<CYC_ID1:周期ハンドラ>
周期ハンドラ>−タスクコンテキストと非タスクコンテキスト-1

state = sns_ctx( )タスクコンテキストと非タスクコンテキスト-２

5state == TRUE

6

ercd = iact_tsk(TSK_SELF)

7

MERCD(ercd) == E_ID

89EXCNO_1のCPU例外発生を発生させる

タスクコンテキストと非タスクコンテキスト-３
state = sns_ctx( )10state == TRUE

11
12
13

returnercd = sta_cyc(CYC_ID1)

14

MERCD(ercd) == E_OK

151620msecのソフトウェアディレー

タスクコンテキストと非タスクコンテキスト-５

returnstate = sns_ctx( )state == TRUE

17
18
19
20
21

テスト
項目参照

容

タスクコンテキストと非タスクコンテキスト-２

returnercd = stp_cyc(CYC_ID1)
MERCD(ercd) == E_OK
ext_tsk( )SPC7：
SPC7：μITRON4.0仕様の概念と共通のテスト手順 その7
No
S1
S2
S3
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

テ

ス

ト

手

順

内

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
DEF_INH(INHNO_1,{INHATR,INTHDR_1})
CRE_CYC(CYC_ID1,{TA_HLNG,EXINF_2,CYCHDR_1,CYCTIM_10,CYCPHS_5})<INHNO_1:<TASK_ID
INHNO_1:割込みハンドラ>
割込みハンドラ><TASK_ID1:READY>_ID1:READY>
state = sns_loc( )state == FALSE
ercd = loc_cpu( )MERCD(ercd) == E_OK
state = sns_loc( )state == TRUE
INHNO_1の割込みを発生させる
CPUロック状態なので、割込みハンドラは起動されない
ercd = loc_cpu( )MERCD(ercd) == E_OK
state = sns_ctx( )state == FALSE
state = sns_loc( )state == TRUE
state = sns_dsp( )state == FALSE
state = sns_dpn( )state == TRUE
ercd = unl_cpu( )ercd = iloc_cpu( )MERCD(ercd) == E_OK
ercd = iloc_cpu( )MERCD(ercd) == E_OK

5-12

テスト
項目参照

容

<CYC_ID1:CYC_ID1:周期起動ハンドラ>
周期起動ハンドラ>−
CPUロック状態-14

CPUロック状態-1
CPUロック状態-2
CPUロック状態-6
CPUロック状態-7
CPUロック状態-8
CPUロック状態-9

CPUロック状態-3

24state = sns_loc( )25state == TRUE
26
ercd = iunl_cpu( )27MERCD(ercd) == E_OK
28
state = sns_loc( )29state == FALSE
30
return31 MERCD(ercd) == E_OK
32 ercd = sta_cyc(CYC_ID1)
33 MERCD(ercd) == E_OK
34 ercd = loc_cpu( )35 MERCD(ercd) == E_OK
36 50msec以上のソフトウェアディレーを入れる
37 CPUロック状態なので周期ハンドラは起動されない
38 ercd = unl_cpu( )39 MERCD(ercd) == E_OK
40 50msecのソフトウェアディレーを入れる
41
state = sns_loc( )state == FALSE
42
43
return44 ercd = stp_cyc(CYC_ID1)
45 MERCD(ercd) == E_OK
46 ext_tsk( )（注）S2 DEF_INHをサポートしていないシステムでは、以下のように置換し、SPC7のテストを実施すること。
S2 ATT_ISR({TA_HLNG,EXINF_1,INTNO_1,ISR_1})

CPUロック状態-5

CPUロック状態-4

CPUロック状態-1

CPUロック状態-12

SPC8：
SPC8：μITRON4.0仕様の概念と共通のテスト手順 その8
No

テ

ス

ト

手

順

内

容

S1 CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})S2 ATT_ISR({TA_HLNG,EXINF_1,INTNO_1,ISR_1})−<INTNO_1:<TASK_ID<TASK_ID1:READY>INTNO_1:割込みサービスルーチン>
割込みサービスルーチン>_ID1:READY>INTNO_1の割込み番号に対応する割込みを発生させる
1
2state = sns_loc( )3MERCD(ercd) == FALSE
4
return5ext_tsk( )（注）
ATT_ISRをシステムがサポートしていない場合は、SPC8のテストを省略することができる。

テスト
項目参照

−

CPUロック状態-12

SPC9：
SPC9：μITRON4.0仕様の概念と共通のテスト手順 その9
No
S1
S2
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

テ

ス

ト

手

順

内

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})DEF_EXC(EXCNO_1,{EXCATR,EXCHDR_1})<EXCNO_1:
EXCNO_1:CPU例外ハンドラ
CPU例外ハンドラ>
例外ハンドラ><TASK_ID<TASK_ID1:READY>_ID1:READY>
１回目
２回目
ercd = loc_cpu( )MERCD(ercd) == E_OK
EXCNO_1のCPU例外を発生させる
state = sns_loc( )state == TRUE
returnstate = sns_loc( )state == TRUE
ercd = unl_cpu( )MERCD(ercd) == E_OK
EXCNO_1のCPU例外を発生させる
state = sns_loc( )state == FALSE
returnstate = sns_loc( )state == FALSE
ext_tsk( )

5-13

テスト
項目参照

−

CPUロック状態-13

CPUロック状態-13

CPUロック状態-13

CPUロック状態-13

SPC10：
SPC10：μITRON4.0仕様の概念と共通のテスト手順 その10
No
S1
S2
S3
S4
S5
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

テ

ス

ト 手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
DEF_INH(INHNO_1,{INHATR,INTHDR_1})
CRE_CYC(CYC_ID1,{TA_HLNG,EXINF_2,CYCHDR_1,CYCTIM_10,CYCPHS_5})
CRE_SEM(SEM_ID1,{TA_TFIFO,ISEMCNT_1,MAXSEM_2})<INHNO_1:割込みハンドラ＞<INHNO_1:割込みハンドラ＞<TASK_ID1:DORMANT><TASK_ID2:READY>
１回目
２回目
state = sns_dsp( )state == FALSE
ercd = dis_dsp( )MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID1)
MERCD(ercd) == E_OK
ercd = pol_sem(SEM_ID1)
MERCD(ercd) == E_OK
ercd = get_tid(&tskid)
MERCD(ercd) == E_OK
tskid == TASK_ID2
ercd = loc_cpu( )MERCD(ercd) == E_OK
state = sns_dsp( )state == TRUE
ercd = unl_cpu( )MERCD(ercd) == E_OK
state = sns_dsp( )state == TRUE
INTNO_1の割込み発生
returnstate = sns_dsp( )state == TRUE
ercd = sta_cyc(CYC_ID1)
MERCD(ercd) == E_OK
ソフトウェアで20msec以上のディレーを作成−
ディスパッチ禁止状態-7

ディスパッチ禁止状態-1
ディスパッチ禁止状態-8
ディスパッチ禁止状態-2
ディスパッチ禁止状態-2

ディスパッチ禁止状態-10

ディスパッチ禁止状態-9

ディスパッチ禁止状態-4

ercd =
iact_tsk(TASK_ID1)
MERCD(ercd) == E_OK
return

27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

<CYC_ID1:周期起動ハンドラ<CYC_ID1:周期起動ハンドラ>
周期起動ハンドラ>
１回目
２回目

ディスパッチ禁止状態-3

ercd = stp_cyc(CYC_ID1)
MERCD(ercd) == E_OK
state = sns_dsp( )state == TRUE
ercd = ena_dsp( )ディスパッチ禁止状態-6

actcnt = can_act(TSK_SELF)
actcnt == 1
ext_tsk( )MERCD(ercd) == E_OK
INTNO_1の割込み発生
returnstate = sns_dsp( )state = FALSE
ercd = sta_cyc(CYC_ID1)
MERCD(ercd) == E_OK
20msecのソフトウェアディレー
state = sns_dsp( )state == FALSE
ercd = loc_cpu( )MERCD(ercd) == E_OK
state = sns_dsp( )state == FALSE
ercd = unl_cpu( )MERCD(ercd) == E_OK
ext_tsk( )ディスパッチ禁止状態-4
returnディスパッチ禁止状態-6

ディスパッチ禁止状態-10(注)S3

DEF_INHをサポートしていないシステムでは、以下のように置換し、SPC10のテストを実施すること。
S3
ATT_ISR({TA_HLNG,EXINF_1,INTNO_1,ISR_1})
なお、DEF_INHとATT_ISRの両方をサポートしているシステムでは、SPC10記載のテストとATT_ISRに置換したテストの２通りを実施すること。

5-14

SPC11：SPC11：μITRON4.0仕様の概念と共通のテスト手順 その11
No
S1
S2
S3
−
1
2
3
4
5

テ

ス

ト

手

順

内

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
DEF_INH(INHNO_1,{INHATR,INTHDR_1})<TASK_ID<TASK_ID<TASK_ID1:DORMANT>_ID1:DORMANT><TASK_ID2:_ID2:READY
2:READY>
READY><INHNO_1:割込みハンドラ<INHNO_1:割込みハンドラ>
割込みハンドラ>INHNO_1の割込み発生
ercd = iact_tsk(TASK_ID1)
MERCD(ercd) == E_OK
ercd = iget_tid(&tskid)
MERCD(ercd) == E_OK

tskid == TASK_ID2

6
7
8
9

テスト
項目参照

容

−

ディスパッチ保留状態の間のタスク状態-1

returnext_tsk( )ext_tsk( )SPC12：SPC12：μITRON4.0仕様の概念と共通のテスト手順 その12
No

テ

ス

ト

手

順

内

容

S1
S2
−
1

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
DEF_INH(INHNO_1,{INHATR,INTHDR_1})<TASK_ID<TASK_ID1:READY>_ID1:READY><INHNO_1:<INHNO_1:割込みハンドラ>
割込みハンドラ>state = sns_ctx( )2state == FALSE

3state = sns_loc( )4state == FALSE

5state = sns_dsp( )6state == FALSE

7state = sns_dpn( )8state == FALSE

910

INHNO_1の割込み発生

テスト
項目参照

−
非タスクコンテキストから呼び出せるサービスコール−12
非タスクコンテキストから呼び出せるサービスコール−13
非タスクコンテキストから呼び出せるサービスコール−14
非タスクコンテキストから呼び出せるサービスコール−15

state = sns_ctx( )11state == TRUE

12

state = sns_loc( )13state == FALSE

14state = sns_dsp( )15state == FALSE

16

state = sns_dpn( )17state == TRUE

18

ercd = isig_tim( )19

MERCD(ercd) == E_OK

20
return21 ext_tsk( )（注）No.17 isig_timサービスコールをサポートしていないシステムでは、テストを省略できる。

5-15

非タスクコンテキストから呼び出せるサービスコール−12
非タスクコンテキストから呼び出せるサービスコール−13
非タスクコンテキストから呼び出せるサービスコール−14
非タスクコンテキストから呼び出せるサービスコール−15
非タスクコンテキストから呼び出せるサービスコール−8

SPC13：
SPC13：μITRON4.0仕様の概念と共通のテスト手順 その13
No
S1
S2
S3
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

テ

ス

ト

手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG,EXINF_2,TASK2,ITSKPRI_1,STKSZ,NULL})CRE_SEM(SEM_ID1,{TA_TFIFO,ISEMCNT_1,MAXSEM_FFFF})<TASK_ID<TASK_ID2<TASK_ID1:READY>_ID1:READY><TASK_ID2:DORMAN_ID2:DORMANT:DORMANT><INHNO_1:割込みハンドラ<INHNO_1:割込みハンドラ>
割込みハンドラ>
ercd = wai_sem(SEM_ID1)
MERCD(ercd) == E_OK
INHNO_1の割込み発生
ercd = iact_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = isig_sem(SEM_ID1)
MERCD(ercd) == E_OK
ercd = isig_sem(SEM_ID1)
MERCD(ercd) == E_OK
returnercd = wai_sem(SEM_ID1)
MERCD(ercd) == E_OK
ext_tsk( )ercd = wai_sem(SEM_ID1)
MERCD(ercd) == E_OK
ext_tsk( )−サービスコールの遅延実行−１

SPC14：SPC14：μITRON4.0仕様の概念と共通のテスト手順 その14
No

テ

S1
S2
S3
S4
S5

ATT_INI({INIATR,EXINF_1,INIRTN_1})
ATT_INI({INIATR,EXINF_2,INIRTN_2})
CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG,EXINF_2,TASK2,ITSKPRI_1,STKSZ,NULL})
DEF_INH(INHNO_1,{INHATR,INTHDR_1})<INIRTN_1:初期化ルーチン＞<INIRTN_2:初期化ルーチン＞<INIRTN_1:初期化ルーチン＞<INIRTN_2:初期化ルーチン＞<INHNO_1:割込みハンドラ＞<TASK_ID1:READY＞<INHNO_1:割込みハンドラ＞ <TASK_ID1:READY＞
カーネルの動作開始前に実行
カーネルの動作開始前に実行
INHNO_1の割込み発生
returnreturnercd = iact_tsk(TASK_ID2)
MERCD(ercd) == E_OK
returnext_tsk( )

−
1
2
3
4
5
6
7
8

ス

ト

手

順

内

テスト
項目参照

容

<TASK_ID2:DORMANT＞<TASK_ID2:DORMANT＞−

システム初期化手順-2,7
システム初期化手順-8

ext_tsk( )システム初期化手順-1

SPC15：SPC15：μITRON4.0仕様の概念と共通のテスト手順 その15
No
S1
S2
S3
・
S255

テ

ス

ト

手

順

内

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})CRE_SEM(SEM_ID1,{TA_TFIFO,ISEMCNT_1,MAXSEM_2})
CRE_SEM(SEM_ID2,{TA_TFIFO,ISEMCNT_1,MAXSEM_2})
・
CRE_SEM(SEM_ID254,{TA_TFIFO,ISEMCNT_1,MAXSEM_2})
オブジェクトのID番号とオブジェクト番号-1−

S256 CRE_SEM(SEM_ID255,{TA_TFIFO,ISEMCNT_1,MAXSEM_2})
−
1
2
3
4
5

<TASK_ID<TASK_ID1:READY>_ID1:READY>
ercd = pol_sem(SEM_ID1)
MERCD(ercd) == E_OK
ercd = pol_sem(SEM_ID255)
MERCD(ercd) == E_OK
ext_tsk( )TSK1：
TSK1：タスク管理機能のテスト手順
No
S1
S2
S3
S4
S5
S6
S7
S8
S9
S10
S11
S12
S13
S14

テスト
項目参照

オブジェクトの登録とその削除-1

その1
テ

ス

ト

手

順

内

容

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(ERR_TASK_ID,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
E_IDを検出できること
CRE_TSK(TASK_ID3,{ERR_TSKATR,TASK1,ITSKPRI_1,STKSZ,NULL})E_RSATRを検出できること
CRE_TSK(TASK_ID3,{TA_HLNG,EXINF_1,ERR_TASK,ITSKPRI_3,STKSZ,NULL})
E_PARを検出できること
CRE_TSK(TASK_ID3,{TA_HLNG,EXINF_1,TASK1,ERR_ITSKPRI,STKSZ,NULL})
E_PARを検出できること
CRE_TSK(TASK_ID3,{TA_HLNG,EXINF_1,TASK3,ITSKPRI_3,ERR_STKSZ,NULL})
E_PARを検出できること
CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
E_OBJを検出すること

5-16

テスト
項目参照

CRE_TSK-1
CRE_TSK-2
CRE_TSK-3
CRE_TSK-4
CRE_TSK-5
CRE_TSK-6−<TASK_ID<TASK_ID2:_ID2: READY>
１回目
exinf == EXINF_2
actcnt = can_act(TSK_SELF)
actcnt == 0
ercd = act_tsk(TASK_ID1)<TASK_ID<TASK_ID1:DORMANT>_ID1:DORMANT>

２回目

1
2
3
4
5
ercd = chg_pri(TASK_ID2,TSKPRI_3)
6
MERCD(ercd) == E_OK
7ercd = wup_tsk(TASK_ID2)
8
MERCD(ercd) == E_OK
9ercd = ter_tsk(TASK_ID2)
10 MERCD(ercd) == E_OK
11 ercd = act_tsk(TASK_ID2)
12 MERCD(ercd) == E_OK
13 ext_tsk( )14ercd = get_pri(TSK_SELF,p_tskpri)
15
MERCD(ercd) == E_OK
tskpri == ITSKPRI_2
1617
wupcnt = can_wup(TSK_SELF)
wupcnt == 01819
ext_tsk( )
(注)
No.S8
E_PARエラーを検出できるERR_TASKがシステムに存在しない場合は、テストを省略することができる。
No.S12
E_PARエラーを検出できるERR_STKSZがシステムに存在しない場合は、テストを省略することができる。
TSK2：
TSK2：タスク管理機能のテスト手順

テ

ス

ト

手

順

内

容

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})<TASK_ID<TASK_ID<TASK_ID1:DORMANT>_ID1:DORMANT><TASK_ID2:READY>_ID2:READY>
ercd = act_tsk(ERR_TASK_ID)
MERCD(ercd) ==E_ID
ercd = act_tsk(TSK_SELF)
MERCD(ercd) == E_OK
actcnt = can_act(TSK_SELF)

6

actcnt == 1

7
8
9
10
11
12
13
14
15
16
17
18
19

actcnt = can_act(TSK_SELF)
actcnt == 0
actcnt = can_act(ERR_TASK_ID)
actcnt == E_ID
ercd = act_tsk(TASK_ID1)

20
21
22
23

exinf == EXINF_1
ercd = act_tsk(TASK_ID2)
MERCD(ercd) == E_OK
actcnt = can_act(TASK_ID2)
actcnt == 1
ercd = act_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID2)
TMAX_ACTCNT = 1：MERCD(ercd) == E_QOVR
TMAX_ACTCNT > 1：MERCD(ercd) == E_OK
ext_tsk( )CRE_TSK-8

タスク管理機能-2
タスク管理機能-3

テスト
項目参照

−
act_tsk-1
act_tsk-7
act_tsk-7
can_act-4
can_act-2
can_act-1

can_act-3

act_tsk-2

24
25

act_tsk-6

その3

No

テ

ス

ト

手

順

内

容

S1
S2
S3
−
1
2
3
4
5
6

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
DEF_INH(INHNO,{INHATR,INTHDR_1})<TASK_ID<TASK_ID1:DORMANT><TASK_ID<TASK_ID2:READY><INTHDR_1:割込みハンドラ_ID1:DORMANT>_ID2:READY><INTHDR_1:割込みハンドラ>
割込みハンドラ>INTHDR_1の割込みを発生させる
ercd = iact_tsk(ERR_TASK_ID)
MERCD(ercd) == E_ID
ercd = iact_tsk(TSK_SELF)
MERCD(ercd) == E_ID
ercd = iact_tsk(TASK_ID2)

7

MERCD(ercd) == E_OK

8ercd = iact_tsk(TASK_ID2)
TMAX_ACTCNT = 1 ：MERCD(ercd) == E_QOVR
TMAX_ACTCNT > 1 ：MERCD(ercd) == E_OK

9

タスク管理機能-1

act_tsk-3,5

MERCD(ercd) == E_OK
actcnt = can_act(TSK_SELF)
TMAX_ACTCNT = 1：actcnt == 1
TMAX_ACTCNT > 1：actcnt == 2
ext_tsk( )TSK3：
TSK3：タスク管理機能のテスト手順

CRE_TSK-9,11

その2

No
S1
S2
−
1
2
3
4
5

−

テスト
項目参照

−

iact_tsk-1
iact_tsk-7
非タスクコンテキストから呼び出せるサービスコール-1
iact_tsk-2

5-17

10

ercd = iact_tsk(TASK_ID1)

11

MERCD(ercd) == E_OK

12
13
14
15

return

処理の優先順位とサービス
コールの不可分性-1

exinf == EXINF_1
ext_tsk( )iact_tsk-3,5
actcnt == can_act(TSK_SELF)
TMAX_ACTCNT = 1：actcnt == 1
TMAX_ACTCNT > 1：actcnt == 2
ext_tsk( )16iact_tsk-6

17(注)
No.S3 DEF_INHサービスコールをサポートしていないシステムでは、ATT_ISRサービスコールに置換に、テストを実施すること。
N0.9
E_QOVRエラーの検出を省略することが製品マニュアルに記載されている場合：MERCD(ercd) == E_OK または E_QOVR
TSK4：
TSK4：タスク管理機能のテスト手順

その4

No
S1
S2
−
1
2
3
4
5
6
7
8
9
10
11
12

テ

1
2
3
4
5
6
7
8
9
10
11
12

テ

S1
S2
S3
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

順 内

容

ス

ト

手

順

内

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})<TASK_ID2:DORMANT><TASK_ID1:READY>
１回目
２回目
ercd = act_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID2)
MERCD(ercd) == E_OK
returnercd =
get_pri(TASK_ID1,p_tskpri)
MERCD(ercd) == E_OBJ
returnexinf == EXINF_2
actcnt = can_act(TSK_SELF)
actcnt == 0
returnTSK6：
TSK6：タスク管理機能のテスト手順
No

手

テスト
項目参照

−

ext_tsk-1
ext_tsk-4,5
ext_tsk-2

その5

No

−

ト

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL}<TASK_ID2:DORMANT><TASK_ID1:READY>
１回目
２回目
ercd = act_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ext_tsk( )ercd =
get_pri(TASK_ID1,p_tskpri)
MERCD(ercd) == E_OBJ
ext_tsk( )exinf == EXINF_2
actcnt = can_act(TSK_SELF)
actcnt == 0
ext_tsk( )TSK5：
TSK5：タスク管理機能のテスト手順

S1
S2

ス

テスト
項目参照

−

return-1
return-4
return-2

その6
テ

ス

ト

手

順

内

容

CRE_TSK(TASK_ID1_1,{TA_HLNG|TA_ACT,EXINF_1_1,TASK1_1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID1_2,{TA_HLNG,EXINF_1_2,TASK1_2,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})<TASK_ID1_1:READY><TASK_ID1_2:DORMANT><TASK_ID2:READY>
ercd = ter_tsk(ERR_TASK_ID)
このタスクへの状態遷移はない。
MERCD(ercd) == E_ID
ercd = ter_tsk(TASK_ID1_1)
MERCD(ercd) == E_ILUSE
ercd = ter_tsk(TASK_ID1_2)
MERCD(ercd) == E_OBJ
ercd = ter_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = get_pri(TASK_ID2,p_tskpri)
MERCD(ercd) == E_OBJ
ercd = act_tsk(TASK_ID1_2)
MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID1_2)
MERCD(ercd) == E_OK
ercd = ter_tsk(TASK_ID1_2)
MERCD(ercd) == E_OK

5-18

テスト
項目参照

−
ter_tsk-1
ter_tsk-2
ter_tsk-3

ter_tsk-4

17
18
19
20
21

ext_tsk( )exinf == EXINF_1_2
ercd = can_act(TSK_SELF)
actcnt == 0
ext_tsk( )TSK7：
TSK7：タスク管理機能のテスト手順

ter_tsk-5

その7

No
S1
S2
S3
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

ter_tsk-6,8

テ

ス

ト

手

順

内

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})<TASK_ID1:READY><TASK_ID2:READY><TASK_ID3:DORMANT>
ercd = chg_pri(ERR_TASK_ID,TSKPRI_1)
MERCD(ercd) == E_ID
ercd = chg_pri(TASK_ID2,ERR_TSKPRI)
MERCD(ercd) == E_PAR
ercd = chg_pri(TASK_ID3,TSKPRI_1)
MERCD(ercd) == E_OBJ
ercd = get_pri(ERR_TASK_ID,p_tskpri)
MERCD(ercd) == E_ID
ercd = get_pri(TASK_ID3,p_tskpri)
MERCD(ercd) == E_OBJ
ercd = get_pri(TASK_ID2,p_tskpri)
MERCD(ercd) == E_OK
tskpri == ITSKPRI_2
ercd = get_pri(TSK_SELF,p_tskpri)
MERCD(ercd) == E_OK
tskpri == ITSKPRI_1
ercd = act_tsk(TASK_ID3)
MERCD(ercd) == E_OK
ercd = chg_pri(TASK_ID2,TSKPRI_3)
MERCD(ercd) == E_OK
ercd = chg_pri(TSK_SELF,TSKPRI_3)
ercd = get_pri(TASK_ID2,p_tskpri)
MERCD(ercd) == E_OK
tskpri == TSKPRI_3
ercd = chg_pri(TASK_ID2,TPRI_INI)
ercd = get_pri(TSK_SELF,p_tskpri)
MERCD(ercd) == E_OK
tskpri == ITSKPRI_2
ext_tsk( )MERCD(ercd) == E_OK
ext_tsk( )MERCD(ercd) == E_OK
ercd = chg_pri(TSK_SELF,TPRI_INI)MERCD(ercd) == E_OK
ercd = get_pri(TSK_SELF,p_tskpri)
MERCD(ercd) == E_OK
tskpri == ITSKPRI_1
ext_tsk( )

テスト
項目参照

−
chg_pri-1
chg_pri-2
chg_pri-3
get_pri-1
get_pri-2

get_pri-3

get_pri-4

chg_pri-7
chg_pri-4

chg_pri-5,8chg_pri-6

SYN1：
SYN1：タスク付属同期機能のテスト手順 その1
No

テ

ス

ト

手

順

内

容

S1
S2
−
1
2
3
4
5
6
7

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})<TASK_ID1:READY><TASK_ID2:DORMANT>
ercd = wup_tsk(ERR_TASK_ID)
MERCD(ercd) == E_ID
ercd = wup_tsk(TASK_ID2)
ercd = E_OBJ
ercd = wup_tsk(TSK_SELF)
MERCD(ercd) == E_OK
ercd = slp_tsk( )8MERCD(ercd) == E_OK

9
10
11
12
13

ercd = act_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = wup_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = wup_tsk(TASK_ID2)
TMAX_WUPCNT = 1：MERCD(ercd) == E_QOVR
TMAX_WUPCNT > 1：MERCD(ercd) == E_OK
ercd = slp_tsk( )

14
15
16
17
18
19

テスト
項目参照

−
wup_tsk-1
wup_tsk-2

slp_tsk-4
wup_tsk-7

wup_tsk-3
ercd = rel_wai(TASK_ID1)

MERCD(ercd) == E_RLWAI
ercd = slp_tsk( )slp_tsk-1

MERCD(ercd) == E_OK

5-19

20
21
22

ercd = slp_tsk( )MERCD(ercd) == E_OK
wupcnt = can_wup(TSK_SELF)
TMAX_WUPCNT = 1：wupcnt == 0
TMAX_WUPCNT > 1：wupcnt == 1
ercd = wup_tsk(TASK_ID1)

23
24
25

MERCD(ercd) == E_OK

26
27
28

ext_tsk( )wup_tsk-6
slp_tsk-3
slp_tsk-2
wup_tsk-4,5

MERCD(ercd) == E_OK
ext_tsk( )SYN2：
SYN2：タスク付属同期機能のテスト手順 その2
No
S1
S2
S3
S4
−
1
2
3
4

テ

ス

ト

手

順

内

6
7
8
9

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})
DEF_INH(INHNO,{INHATR,INTHDR_1})<TASK_ID1:READY><TASK_ID2:READY><INTHDR_1:割込みハンドラ<INTHDR_1:割込みハンドラ>
割込みハンドラ>
ercd = slp_tsk( )INTHDR_1の割込み発生
ercd = iwup_tsk(TSK_SELF)
MERCD(ercd) == E_ID
ercd =
iwup_tsk(ERR_TASK_ID)
MERCD(ercd) == E_ID
ercd = iwup_tsk(TASK_ID3)
MERCD(ercd) == E_OBJ (注)ercd = iwup_tsk(TASK_ID1)

10

MERCD(ercd) == E_OK

11
12
13

ercd = iwup_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = iwup_tsk(TASK_ID2)
TMAX_WUPCNT == 1：
MERCD(ercd) == E_QOVR (注)TMAX_WUPCNT > 1：
MERCD(ercd) == E_OK
return

5

14

テスト
項目参照

容

<TASK_ID3:DORMANT>

No
S1
S2
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

iwup_tsk-7

iwup_tsk-1
iwup_tsk-2
非タスクコンテキストから呼び出せるサービスコール-２

iwup_tsk-3

15
16
MERCD(ercd) == E_OK
17
ext_tsk( )18ercd = slp_tsk( )19MERCD(ercd) == E_OK
20
ext_tsk( )このタスクへの状態遷移はない
21
(注)
No.6
E_OBJエラーの検出を省略することが製品マニュアルに記載されている場合 ：MERCD(ercd) == E_OK
No.12 E_QOVRエラーの検出を省略することが製品マニュアルに記載されている場合：MERCD(ercd) == E_OK
SYN3：
SYN3：タスク付属同期機能のテスト手順−

iwup_tsk-4,5

iwup_tsk-6

その3
テ

ス

ト

手

順

内

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})<TASK_ID1:READY><TASK_ID2:DORMANT>
ercd = can_wup(ERR_TASK_ID)
MERCD(ercd) == E_ID
ercd = can_wup(TASK_ID2)
MERCD(ercd) == E_OBJ
ercd = wup_tsk(TSK_SELF)
MERCD(ercd) == E_OK
wupcnt = can_wup(TSK_SELF)
wupcnt == 1
ercd = act_tsk(TASK_ID2)
MERCD(ercd) == E_OK
ercd = wup_tsk(TASK_ID2)
MERCD(ercd) == E_OK
wupcnt = can_wup(TASK_ID2)
wupcnt == 1
wupcnt = can_wup(TASK_ID2)
wupcnt == 0
ext_tsk( )ext_tsk( )

5-20

テスト
項目参照

−
can_wup-1
can_wup-2

can_wup-5

can_wup-4
can_wup-3

SYN4：
SYN4：タスク付属同期機能のテスト手順 その4
テ

No
S1
S2
−
1
2
3
4
5
6
7
8
9
10

ス

ト

手

順

内

容

テスト
項目参照

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})<TASK_ID1:READY><TASK_ID2:READY>
ercd = rel_wai(ERR_TASK_ID)
MERCD(ercd) == E_ID
ercd = rel_wai(TASK_ID2)
MERCD(ercd) == E_OBJ
ercd = slp_tsk( )ercd = rel_wai(TASK_ID1)
MERCD(ercd) == E_RLWAI
ext_tsk( )MERCD(ercd) == E_OK
ext_tsk( )−rel_wai-1
rel_wai-2

rel_wai-3,4

SYN5：
SYN5：タスク付属同期機能のテスト手順 その5
No

テ

S1
S2
S3
S4
−
1
2
3
4
5
6
7
8

ercd = irel_wai(ERR_TASK_ID)
MERCD(ercd) == E_ID
ercd = irel_wai(TASK_ID3)
MERCD(ercd) == E_OBJ (注)ercd = irel_wai(TASK_ID1)

9

MERCD(ercd) == E_OK

ス

ト

手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG|TA_ACT,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})
DEF_INH(INHNO,{INHATR,INTHDR_1}) 【何らかの割込みを発生できるシステムとすること】<TASK_ID1:READY><TASK_ID2:READY><INTHDR_1:割込みハンドラ<INTHDR_1:割込みハンドラ>
割込みハンドラ>
ercd = slp_tsk( )ercd = slp_tsk( )<TASK_ID3:READY>INTHDR_1の割込みを発生
irel_wai-1
irel_wai-2
非タスクコンテキストから呼び出せるサービスコール-３

10 ercd = irel_wai(TASK_ID2)
11 MERCD(ercd) == E_OK
12 return13
MERCD(ercd) == E_RLWAI
14
ext_tsk( )15
MERCD(ercd) == E_RLWAI
16
ext_tsk( )17ext_tsk( )(注)No.7 E_OBJエラーの検出を省略することが製品マニュアルに記載されている場合：MERCD(ercd) == E_OK
SEM1：
SEM1：セマフォ機能のテスト手順

テ

ス

ト

手

順

内

テスト
項目参照

容

S1 CRE_SEM(ERR_SEM_ID,{TA_TFIFO,ISEMCNT_1,MAXSEM_FFFF})
S2 E_IDを検出すること
S3 CRE_SEM(SEM_ID3,{ERR_SEMATR,ISEMCNT_1,MAXSEM_FFFF})
S4 E_RSATRを検出すること
S5 CRE_SEM(SEM_ID3,{TA_TPRI,ISEMCNT_2,MAXSEM_1})
S6 E_PARを検出すること
S7 CRE_SEM(SEM_ID3,{TA_TPRI,ISEMCNT_2,MAXSEM_OVER})
S8 E_PARを検出すること
S9 CRE_SEM(SEM_ID1,{TA_TFIFO,ISEMCNT_1,MAXSEM_FFFF})
S10 CRE_SEM(SEM_ID1,{TA_TFIFO,ISEMCNT_1,MAXSEM_FFFF})
S11 E_OBJを検出すること
(注)
No.S8
E_PARエラーを検出できるMAXSEM_OVERがシステムに存在しない場合は、テストを省略することができる。
SEM2：
SEM2：セマフォ機能のテスト手順

S1
S2
S3
S4
S5
S6
−
1
2
3
4
5

irel_wai-3,4

その1

No

No

−

CRE_SEM-1
CRE_SEM-2
CRE_SEM-3
CRE_SEM-4

CRE_SEM-5

その2
テ

ス

ト

手

順

内

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})
CRE_TSK(TASK_ID4,{TA_HLNG|TA_ACT,EXINF_4,TASK4,ITSKPRI_4,STKSZ,NULL})CRE_SEM(SEM_ID1,{TA_TFIFO,ISEMCNT_2,MAXSEM_2})
CRE_SEM(SEM_ID2,{TA_TFIFO,ISEMCNT_FFFE,MAXSEM_FFFF})<TASK_ID1:DORMANT><TASK_ID2:DORMANT><TASK_ID3:DORMANT><TASK_ID1:DORMANT>

5-21

テスト
項目参照

容

<TASK_ID4:READY>
ercd = sig_sem(ERR_SEM_ID)
MERCD(ercd) == E_ID
ercd = wai_sem(ERR_SEM_ID)
MERCD(ercd) == E_ID
ercd = pol_sem(ERR_SEM_ID)−
sig_sem-1
wai_sem-1

67

MERCD(ercd) == E_ID
ercd = sig_sem(SEM_ID1)

8

MERCD(ercd) == E_QOVR

9
10
11
12
13

ercd = wai_sem(SEM_ID1)
MERCD(ercd) == E_OK
ercd = pol_sem(SEM_ID1)
MERCD(ercd) == E_OK
ercd = pol_sem(SEM_ID1)

14

MERCD(ercd) == E_TMOUT

15
16
17
18
19
20
21
22
23
24
25
26
27
28

ercd = sig_sem(SEM_ID1)
MERCD(ercd) == E_OK
ercd = pol_sem(SEM_ID1)
MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID3)

pol_sem-1
CRE_SEM-8
sig_sem-2
wai_sem-3,4pol_sem-3,4
CRE_SEM-7
pol_sem-2
sig_sem-6

ercd = wai_sem(SEM_ID1)

MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID2)
ercd = wai_sem(SEM_ID1)

MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID1)
ercd = wai_sem(SEM_ID1)

MERCD(ercd) == E_OK
ercd = sig_sem(SEM_ID1)

29

MERCD(ercd) == E_OK

30
31
32
33
34
35
36
37
38
39
40
41
42

ext_tsk( )CRE_SEM-6
sig_sem-3,5

MERCD(ercd) == E_OK
ercd = sig_sem(SEM_ID1)
MERCD(ercd) == E_OK
ext_tsk( )sig_sem-4
wai_sem-5,6

MERCD(ercd) == E_OK
ercd = rel_wai(TASK_ID1)
MERCD(ercd) == E_RLWAI
ext_tsk( )wai_sem-2

MERCD(ercd) == E_OK
ercd = sig_sem(SEM_ID2)
MERCD(ercd) == E_OK
ext_tsk( )SEM3：
SEM3：セマフォ機能のテスト手順

その3
テスト
項目参照

No

テ

S1
S2
S3
S4
S5
S6
S7
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2_1,{TA_HLNG,EXINF_2_1,TASK2_1,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID2_2,{TA_HLNG,EXINF_2_2,TASK2_2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG|TA_ACT,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})CRE_SEM(SEM_ID1,{TA_TFIFO,ISEMCNT_1,MAXSEM_2})
CRE_SEM(SEM_ID2,{TA_TFIFO,ISEMCNT_1,MAXSEM_1})
DEF_INH(INHNO,{INHATR,INTHDR_1} 【何らかの割込みを発生できるシステムとすること】<TASK_ID1:DORMANT> <TASK_ID2_1:DORMANT> <TASK_ID2_2:DORMANT><TASK_ID3:READY>
ercd = pol_sem(SEM_ID2)
MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID2_1)
ercd = wai_sem(SEM_ID2)
MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID2_2)
ercd = wai_sem(SEM_ID2)
MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID1)
ercd = wai_sem(SEM_ID2)
MERCD(ercd) == E_OK
INTHDR_1の割込み発生

ス

ト

手

順

内

容

<INTHDT_1:割込みハンドラ<INTHDT_1:割込みハンドラ>
割込みハンドラ>−

ercd = isig_sem(ERR_SEM_ID)
MERCD(ercd) == E_ID
ercd = isig_sem(SEM_ID1)

isig_sem-1

16

MERCD(ercd) == E_OK

非タスクコンテキストから呼び出せるサービスコール-4

17
18
19
20
21
22
23
24
25
26

ercd = isig_sem(SEM_ID1)
MERCD(ercd) == E_QOVR (注)ercd = isig_sem(SEM_ID2)
MERCD(ercd) == E_OK
returnMERCD(ercd) == E_OK
ext_tsk( )isig_sem-2

isig_sem-3,5
ercd = sig_sem(SEM_ID2)

MERCD(ercd) == E_OK
ext_tsk( )5-22isig_sem-4

27
MERCD(ercd) == E_OK
28
ercd = sig_sem(SEM_ID2)
29 MERCD(ercd) == E_OK
30 ext_tsk( )31
MERCD(ercd) == E_OK
32
ercd = pol_sem(SEM_ID1)
33
MERCD(ercd) == E_OK
34
ercd = pol_sem(SEM_ID1)
35
MERCD(ercd) == E_OK
isig_sem-6
36
ercd = pol_sem(SEM_ID1)
37
MERCD(ercd) == E_TMOUT
38
ext_tsk( )(注)No.18 サービスコールを遅延実行する場合には、E_QOVRエラーを返すことを省略できる。省略する場合は、製品マニュアルにその旨が記載されていて、E_OKを返すこと。
FLG1：
FLG1：イベントフラグ機能のテスト手順

その1

No

テ

ス ト

手

順

内

容

S1 CRE_FLG(ERR_FLG_ID,{TA_TFIFO,IFLGPTN_1})
S2 E_IDを検出できること
S3 CRE_FLG(FLG_ID1,{ERR_FLGATR,IFLGPTN_1})
S4 E_RSATRを検出できること
S5 CRE_FLG(FLG_ID1,{TA_TFIFO,ERR_IFLGPTN})
S6 E_PARを検出できること
S7 CRE_FLG(FLG_ID1,{TA_FIFO,IFLGPTN_1})
S8 CRE_FLG(FLG_ID1,{TA_FIFO,IFLGPTN_1})
S9 E_OBJを検出できること(注)
No.S6 E_PARエラーを検出できるERR_IFLGPTNがシステムに存在しない場合は、テストを省略することができる。

テスト
項目参照
CRE_FLG-1
CRE_FLG-2
CRE_FLG-3

CRE_FLG-4

FLG2：
FLG2：イベントフラグ機能のテスト手順 その2
No
S1
S2
S3
S4
S5
−
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

テ

ス

ト 手

順

内

容

CRE_TSK(TASK_ID1,{TA_HLNG,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_FLG(FLG_ID1,{TA_TFIFO|TA_WSGL,IFLGPTN_0})
CRE_FLG(FLG_ID2,{TA_TFIFO|TA_WSGL,IFLGPTN_0})
CRE_FLG(FLG_ID3,{TA_TFIFO|TA_WSGL|TA_CLR,IFLGPTN_1})<TASK_ID1:DORMANT><TASK_ID2:READY>
ercd = set_flg(ERR_FLG_ID,SETPTN_1)
MERCD(ercd) == E_ID
ercd = set_flg(FLG_ID1,ERR_SETPTN)MERCD(ercd) == E_PAR
ercd = clr_flg(ERR_FLG_ID,CLRPTN_1)
MERCD(ercd) == E_ID
ercd = clr_flg(FLG_ID1,ERR_CLRPTN)MERCD(ercd) == E_PAR
ercd = wai_flg(ERR_FLG_ID,WAIPTN_1,TWF_ANDW,p_flgptn)
MERCD(ercd) == E_ID
ercd = wai_flg(FLG_ID1,ERR_WAIPTN,TWF_ORW,p_flgptn)
MERCD(ercd) == E_PAR
ercd = wai_flg(FLG_ID1,WAIPTN_1,ERR_WFMODE,p_flgptn)
MERCD(ercd) == E_PAR
ercd = wai_flg(FLG_ID1,WAIPTN_1,TWF_ANDW,ERR_pointer)
MERCD(ercd) == E_PAR
ercd = pol_flg(ERR_FLG_ID,WAIPTN_1,TWF_ANDW,p_flgptn)
MERCD(ercd) == E_ID
ercd = pol_flg(FLG_ID1,ERR_WAIPTN,TWF_ORW,p_flgptn)
MERCD(ercd) == E_PAR
ercd = pol_flg(FLG_ID1,WAIPTN_1,ERR_WFMODE,p_flgptn)
MERCD(ercd) == E_PAR
ercd = pol_flg(FLG_ID1,WAIPTN_1,TWF_ANDW,ERR_pointer)
MERCD(ercd) == E_PAR
ercd = set_flg(FLG_ID1,SETPTN_5555)
MERCD(ercd) == E_OK
ercd = set_flg(FLG_ID2,SETPTN_AAAA)MERCD(ercd) == E_OK
ercd = wai_flg(FLG_ID2,WAIPTN_0002,TWF_ORW,p_flgptn)
MERCD(ercd) == E_OK
flgptn == SETPTN_AAAA
ercd = pol_flg(FLG_ID2,WAIPTN_0001,TWF_ORW,p_flgptn)
MERCD(ercd) == E_TMOUT
ercd = clr_flg(FLG_ID1,CLRPTN_0000)
MERCD(ercd) == E_OK
ercd = pol_flg(FLG_ID1,WAIPTN_0001,TWF_ANDW,p_flgptn)

37

MERCD(ercd) == E_TMOUT

38

ercd = pol_flg(FLG_ID1,WAIPTN_0000,TWF_ANDW,p_flgptn)

5-23

テスト
項目参照

−
set_flg-1
set_flg-2
clr_flg-1
clr_flg-2
wai_flg-1
wai_flg-2
wai_flg-3
wai_flg-4
pol_flg-1
pol_flg-2
pol_flg-3
pol_flg-4
CRE_FLG-5,6

wai_flg-9
wai_flg-10
pol_flg-6

pol_flg-７
clr_flg-3

39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

MERCD(ercd) == E_PAR
ercd = set_flg(FLG_ID1,SETPTN_0055)
MERCD(ercd) == E_OK
ercd = pol_flg(FLG_ID1,WAIPTN_0050,TWF_ORW,p_flgptn)
MERCD(ercd) == E_OK
flgptn == FLGPTN_0055
ercd = set_flg(FLG_ID1,SETPTN_5500)
MERCD(ercd) == E_OK
ercd = pol_flg(FLG_ID1,WAIPTN_0055,TWF_ORW,p_flgptn)
MERCD(ercd) == E_OK
flgptn == FLGPTN_5555
ercd = clr_flg(FLG_ID1,CLRPTN_0000)
MERCD(ercd) == E_OK
ercd = act_tsk(TASK_ID1)

pol_flg-11

pol_flg-8
pol_flg-9

set_flg-3

ercd = wai_flg(FLG_ID1,WAIPTN_0001,TWF_ANDW,p_flgptn)

MERCD(ercd) == E_OK
ercd = wai_flg(FLG_ID1,WAIPTN_0002,TWF_ANDW,p_flgptn)
MERCD(ercd) == E_ILUSE
ercd = pol_flg(FLG_ID1,WAIPTN_0002,TWF_ORW,p_flgptn)
MERCD(ercd) == E_ILUSE
ercd = rel_wai(TASK_ID1)
MERCD(ercd) == E_RLWAI
ercd = wai_flg(FLG_ID1,WAIPTN_0001,TWF_ORW,p_flgptn)

wai_flg-5,7
pol_flg-5
wai_flg-6,12

MERCD(ercd) == E_OK
ercd = set_flg(FLG_ID1,SETPTN_1111)

64

MERCD(ercd) == E_OK

65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83

flgptn == SETPTN_1111
ercd = wai_flg(FLG_ID1,WAIPTN_0000,TWF_ANDW,p_flgptn)
MERCD(ercd) == E_PAR
ercd = wai_flg(FLG_ID2,WAIPTN_AAAA,TWF_ANDW,p_flgptn)
MERCD(ercd) == E_OK
flgptn == SETPTN_AAAA
ercd = wai_flg(FLG_ID3,WAIPTN_0001,TWF_ORW,p_flgptn)
MERCD(ercd) == E_OK
flgptn == SETPTN_0001
ercd = set_flg(FLG_ID3,SETPTN_0002)
MERCD(ercd) == E_OK
ercd = pol_flg(FLG_ID3,WAIPTN_0002,TWF_ANDW,p_flgptn)
MERCD(ercd) == E_OK
flgptn == SETPTN_0002
ercd = pol_flg(FLG_ID3,WAIPTN_0002,TWF_ANDW,p_flgptn)
MERCD(ercd) == E_TMOUT
ercd = wai_flg(FLG_ID3,WAIPTN_8000,TWF_ORW,p_flgptn)

84

MERCD(ercd) == E_OK

set_flg-4,5
wai_flg-8
set_flg-6
wai_flg-13
wai_flg-7,9
wai_flg-10
wai_flg-8
CRE_FLG-9

pol_flg-7

pol_flg-10

MERCD(ercd) == E_OK
ercd = set_flg(FLG_ID3,SETPTN_8000)

85 flgptn == SETPTN_8000
86 ercd = pol_flg(FLG_ID3,WAIPTN_8000,TWF_ORW,p_flgptn)
87 MERCD(ercd) == E_TMOUT
88 ercd = set_flg(FLG_ID3,SETPTN_5555)
89 MERCD(ercd) == E_OK
90 ercd = wai_flg(FLG_ID3,WAIPTN_5555,TWF_ORW,p_flgptn)
91 MERCD(ercd) == E_OK
92 flgptn == SETPTN_5555
93 ercd = pol_flg(FLG_ID3,WAIPTN_5555,TWF_ORW,p_flgptn)
94 MERCD(ercd) == E_TMOUT
95 ext_tsk( )96
MERCD(ercd) == E_OK
97
ext_tsk( )(注)
No.4
E_PARエラーを検出できるERR_SETPTNがシステムに存在しない場合は、テストを省略することができる。
No.8
E_PARエラーを検出できるERR_CLRPTNがシステムに存在しない場合は、テストを省略することができる。
No.12 E_PARエラーを検出できるERR_WAIPTNがシステムに存在しない場合は、テストを省略することができる。
No.16 E_PARエラーを検出できるERR_pointerがシステムに存在しない場合は、テストを省略することができる。
No.20 E_PARエラーを検出できるERR_WAIPTNがシステムに存在しない場合は、テストを省略することができる。
No.24 E_PARエラーを検出できるERR_pointerがシステムに存在しない場合は、テストを省略することができる。

5-24

set_flg-5
pol_flg-8
set_flg-6
set_flg-7

wai_flg-11

FLG3：
FLG3：イベントフラグ機能のテスト手順 その3
No
S1
S2
S3
S4
S5
S6
−
1
2

テ

ス

ト 手

テスト
項目参照

容

<TASK_ID3:READY>−INTHDR_1の割込みを発生させる
ercd = iset_flg(ERR_FLG_ID,SETPTN_0001)
MERCD(ercd) == E_ID
ercd = iset_flg(FLG_ID2,ERR_SETPTN)MERCD(ercd) == E_PAR
ercd = iset_flg(FLG_ID2,SETPTN_0500)

9

MERCD(ercd) == E_OK

10
11
12
13
14
15
16
17
18
19
20
21

ercd = iset_flg(FLG_ID1,SETPTN_0500)
MERCD(ercd) == E_OK
ercd = iset_flg(FLG_ID2,SETPTN_0005)
MERCD(ercd) == E_OK
ercd = iset_flg(FLG_ID1,SETPTN_0005)
MERCD(ercd) == E_OK
returniset_flg-1
iset_flg-2
非タスクコンテキストから呼び出せるサービスコール-5

MERCD(ercd) == E_OK
flgptn == SETPTN_0500
ext_tsk( )iset_flg-4,5
iset_flg-3,6

MERCD(ercd) == E_OK
flgptn == SETPTN_0505
ercd = pol_flg(FLG_ID1,WAIPTN_0001,
TWF_ORW,p_flgptn)
MERCD(ercd) == E_TMOUT
ext_tsk( )22

CRE_FLG-7,8

iset_flg-7

E_PARエラーを検出できるERR_SETPTNがシステムに存在しない場合は、テストを省略することができる。

DTQ1：
DTQ1：データキュー機能のテスト手順
No内

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG|TA_ACT,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})
DEF_INT(INHNO,{INHATR,INTHDR_1})
CRE_FLG(FLG_ID1,{TA_TFIFO|TA_WSGL|TA_CLR,IFLGPTN_0})
CRE_FLG(FLG_ID2,{TA_TFIFO|TA_WSGL,IFLGPTN_0})<TASK_ID1:READY><TASK_ID2:READY><INTHDR_1:割込みハンドラ<INTHDR_1:割込みハンドラ>
割込みハンドラ>
ercd = wai_flg(FLG_ID2,WAIPTN_0505,
TWF_ORW,p_flgptn)
ercd = wai_flg(FLG_ID1,WAIPTN_0505,
TWF_ANDW,p_flgptn)

3
4
5
6
7
8

23
24
(注)
No.7

順

その1
テ

ス

ト

手

順

内

容

S1 CRE_DTQ(ERR_DTQID,{TA_TFIFO,DTQCNT_1,NULL})S2 E_IDエラーを検出できること。
S3 CRE_DTQ(DTQ_ID1,{ERR_DTQATR,DTQCNT_1,NULL})
S4 E_RSATRエラーを検出できること。
S5 CRE_DTQ(DTQ_ID1,{TA_FIFO,ERR_DTQCNT,NULL})S6 E_PARエラーを検出できること。
S7 CRE_DTQ(DTQ_ID1,{TA_TFIFO,DTQCNT_1,NULL})
S8 CRE_DTQ(DTQ_ID1,{TA_TFIFO,DTQCNT_1,NULL})
S9 E_OBJエラーを検出できること。
(注)
No.S6 E_PARエラーを検出できるERR_DTQCNTがシステムに存在しない場合は、テストを省略することができる。

5-25

テスト
項目参照
CRE_DTQ-1
CRE_DTQ-2
CRE_DTQ-3

CRE_DTQ-4

DTQ2：
DTQ2：データキュー機能のテスト手順

その2

No

テ

ス

ト

手

順

内

テスト
項目参照

容

S1
S2
S3
−
1
2
3
4
5
6

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_DTQ(DTQ_ID1,{TA_TFIFO,DTQCNT_0,NULL})<TASK_ID1:READY><TASK_ID2:READY>
ercd = psnd_dtq(ERR_DTQID,DATA_55)
MERCD(ercd) == E_ID
ercd = psnd_dtq(DTQ_ID1,DATA_55)
MERCD(ercd) == E_TMOUT
ercd = rcv_dtq(DTQ_ID1,p_data)
ercd = psnd_dtq(DTQ_ID1,DATA_AA)

7

MERCD(ercd) == E_OK

8
9
10
11
12
13
14
15
16

data == DATA_AA
ercd = rcv_dtq(DTQ_ID1,p_data)
MERCD(ercd) == E_OK
data == MEMORY
ext_tsk( )CRE_DTQ-6

MERCD(ercd) == E_OK
ext_tsk( )
その3
テ

ス

ト

手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
DEF_INH(INHNO_1,{INHATR_1,INTHDR_1})
CRE_DTQ(DTQ_ID1,{TA_TFIFO,DTQCNT_0,NULL})
CRE_DTQ(DTQ_ID2,{TA_TFIFO,DTQCNT_2,NULL})<TASK_ID1:READY><TASK_ID2:READY>
ercd = rcv_dtq(DTQ_ID2,p_data)<INTHDR_1の割込み発生><INTHDR_1:割込みハンドラ<INTHDR_1:割込みハンドラ>
割込みハンドラ>

ercd = ipsnd_dtq(ERR_DTQID,DATA55)
MERCD(ercd) == E_ID
ercd = ipsnd_dtq(DTQ_ID1,DATA_AA)
MERCD(ercd) == E_TMOUT (注)ercd = ipsnd_dtq(DTQ_ID2,DATA_88)
MERCD(ercd) == E_OK
ercd = ipsnd_dtq(DTQ_ID2,MEMORY)

10MERCD(ercd) == E_OK

11

return12

MERCD(ercd) == E_OK

13data == DATA_88

DTQ4：
DTQ4：データキュー機能のテスト手順−

ipsnd_dtq-1
ipsnd_dtq-2

非タスクコンテキストから呼び出せるサービスコール-6
ipsnd_dtq5,6,7
ipsnd_dtq3,4,8

14 ercd = rcv_dtq(DTQ_ID2,p_data)
15 MERCD(ercd) == E_OK
16 data == MEMORY
17 ext_tsk( )18ext_tsk( )(注)No.6 E_TMOUTエラーの検出を省略することが製品マニュアルに記載されている場合：MERCD(ercd) == E_OK

S1
S2
S3
S4
S5
−
1
2
3
4
5
6
7
8
9
10
11
12

psnd_dtq-2

psnd_dtq-9

NoNo

psnd_dtq-1

CRE_DTQ-5
psnd_dtq-5,6
psnd_dtq-3,4,7,8

MERCD(ercd) == E_OK
ercd = psnd_dtq(DTQ_ID1,MEMORY)

DTQ3：
DTQ3：データキュー機能のテスト手順

S1
S2
S3
S4
S5
−
1
2
3
4
5
6
7
8
9

−

ipsnd_dtq-9

その4
テ

ス

ト

手

順

内

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_DTQ(DTQ_ID1,{TA_TFIFO,DTQCNT_0,NULL})
CRE_DTQ(DTQ_ID2,{TA_TFIFO,DTQCNT_1,NULL})
CRE_DTQ(DTQ_ID3,{TA_TFIFO,DTQCNT_2,NULL})<TASK_ID1:READY><TASK_ID2:READY>
ercd = fsnd_dtq(ERR_DTQID,DATA_00)
MERCD(ercd) == E_ID
ercd = fsnd_dtq(DTQ_ID1,DATA_00)
MERCD(ercd) == E_ILUSE
ercd = fsnd_dtq(DTQ_ID2,DATA_11)
MERCD(ercd) == E_OK
ercd = fsnd_dtq(DTQ_ID2,DATA_22)
MERCD(ercd) == E_OK
ercd = prcv_dtq(DTQ_ID2,p_data)
MERCD(ercd) == E_OK
data == DATA_22
ercd = rcv_dtq(DTQ_ID2,p_data)

5-26

テスト
項目参照

−
fsnd_dtq-1
fsnd_dtq-2

fsnd_dtq-7

13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

ercd = fsnd_dtq(DTQ_ID2,DATA_33)

MERCD(ercd) == E_OK
data == DATA_33
ercd = fsnd_dtq(DTQ_ID3,DATA_44)
MERCD(ercd) == E_OK
ercd = fsnd_dtq(DTQ_ID3,DATA_55)
MERCD(ercd) == E_OK
ercd = rcv_dtq(DTQ_ID3,p_data)
MERCD(ercd) == E_OK
data == DATA_44
ercd = rcv_dtq(DTQ_ID3,p_data)
MERCD(ercd) == E_OK
data == DATA_55
ercd = fsnd_dtq(DTQ_ID2,DATA_66)
MERCD(ercd) == E_OK
ercd = rcv_dtq(DTQ_ID2,p_data)
MERCD(ercd) == E_OK
data == DATA_66
ext_tsk( )fsnd_dtq-6

MERCD(ercd) == E_OK
ext_tsk( )DTQ5：
DTQ5：データキュー機能のテスト手順

その5

No
S1
S2
S3
S4
S5
S6
S7
−
1
2
3
4
5
6
7
8
9
10
11

fsnd_dtq-3,4
fsnd_dtq-5

テ

ス

ト

手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_DTQ(DTQ_ID1,{TA_TFIFO,DTQCNT_0,NULL})
CRE_DTQ(DTQ_ID2,{TA_TFIFO,DTQCNT_1,NULL})
CRE_DTQ(DTQ_ID3,{TA_TFIFO,DTQCNT_1,NULL})
CRE_DTQ(DTQ_ID4,{TA_TFIFO,DTQCNT_2,NULL})
DEF_INH(INHNO_1,{INHATR_1,INTHDR_1})<TASK_ID1:READY><TASK_ID2:READY>
ercd = rcv_dtq(DTQ_ID2,p_data)<INTHDR_1の割込み発生><INTHDR_1:割込みハンドラ<INTHDR_1:割込みハンドラ>
割込みハンドラ>

ercd = ifsnd_dtq(ERR_DTQID,DATA_77)
MERCD(ercd) == E_ID
ercd = ifsnd_dtq(DTQ_ID1,DATA_77)
MERCD(ercd) == E_ILUSE
ercd = ifsnd_dtq(DTQ_ID2,DATA_88)
MERCD(ercd) == E_OK
ercd = ifsnd_dtq(DTQ_ID3,DATA_99)
MERCD(ercd) == E_OK
ercd = ifsnd_dtq(DTQ_ID3,DATA_AA)

12

MERCD(ercd) == E_OK

13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

ercd = ifsnd_dtq(DTQ_ID4,DATA_11)
MERCD(ercd) == E_OK
ercd = ifsnd_dtq(DTQ_ID4,DATA_22)
MERCD(ercd) == E_OK
returnMERCD(ercd) == E_OK
data == DATA_88
ext_tsk( )

No
S1
S2
S3
S4
S5
−
1
2
3
4
5

ifsnd_dtq-1
ifsnd_dtq-2

非タスクコンテキストから呼び出せるサービスコール-7

ifsnd_dtq-3,4
ifsnd_dtq-5
ercd = prcv_dtq(DTQ_ID3,p_data)
MERCD(ercd) == E_OK
data == DATA_AA
ercd = prcv_dtq(DTQ_ID4,p_data)
MERCD(ercd) == E_OK
data == DATA_11
ercd = prcv_dtq(DTQ_ID4,p_data)
MERCD(ercd) == E_OK
data == DATA_22
ext_tsk( )DTQ6：
DTQ6：データキュー機能のテスト手順−

ifsnd_dtq-7

ifsnd_dtq-6

その6
テ

ス

ト

手

順

内

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
CRE_TSK(TASK_ID3,{TA_HLNG|TA_ACT,EXINF_3,TASK3,ITSKPRI_3,STKSZ,NULL})
CRE_DTQ(DTQ_ID1,{TA_TFIFO,DTQCNT_1,NULL})
CRE_DTQ(DTQ_ID2,{TA_TFIFO,DTQCNT_0,NULL})<TASK_ID1:READY><TASK_ID2:READY>
ercd = rcv_dtq(ERR_DTQID,p_data)
MERCD(ercd) == E_ID
ercd = rcv_dtq(DTQ_ID1,ERR_pointer)
MERCD(ercd) == E_PAR
ercd = psnd_dtq(DTQ_ID1,DATA_01)

5-27

テスト
項目参照

容

<TASK_ID3:READY>−
rcv_dtq-1
rcv_dtq-2

6 MERCD(ercd) == E_OK
7 ercd = rcv_dtq(DTQ_ID1,p_data)
8 MERCD(ercd) == E_OK
9 data == DATA_01
10 ercd = rcv_dtq(DTQ_ID1,p_data)
11
ercd = rcv_dtq(DTQ_ID1,p_data)
12
ercd = psnd_dtq(DTQ_ID1,DATA_05)
13 MERCD(ercd) == E_OK
14 data == DATA_05
15 ercd = rel_wai(TASK_ID2)
16 MERCD(ercd) == E_OK
17 ext_tsk( )18
MERCD(ercd) == E_RLWAI
19
ext_tsk( )20
MERCD(ercd) == E_OK
21
ext_tsk( )(注)No.4 E_PARエラーを検出できるERR_pointerがシステムに存在しない場合は、テストを省略することができる。
DTQ7：
DTQ7：データキュー機能のテスト手順

テ

ス

ト 手

順

内

容

S1 CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
S2 CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT,EXINF_2,TASK2,ITSKPRI_2,STKSZ,NULL})
S3 CRE_DTQ(DTQ_ID1,{TA_TFIFO,DTQCNT_0,NULL})<TASK_ID1:READY><TASK_ID2:READY>−
1 ercd = prcv_dtq(ERR_DTQID,p_data)
2 MERCD(ercd) == E_ID
3 p_dataにE_PARエラーを検出する値を設定
4 ercd = prcv_dtq(DTQ_ID1,p_data)
5 MERCD(ercd) == E_PAR
6 ercd = prcv_dtq(DTQ_ID1,p_data)
7 MERCD(ercd) == E_TMOUT
8 ercd = psnd_dtq(DTQ_ID1,DATA_99)
9 MERCD(ercd) == E_OK
10 ext_tsk( )11ercd = prcv_dtq(DTQ_ID1,p_data)
12
MERCD(ercd) == E_OK
13data == DATA_99
14
ext_tsk( )(注)No.5 E_PARエラーを検出できるp_dataがシステムに存在しない場合は、テストを省略することができる。

テ

ス

ト 手

順

内

容

S1 CRE_CYC(CYC_ID1,{ERR_CYCATR,EXINF_CYC1,CYCHDR_1,CYCTIM_10,CYCPHS_5})
S2 E_RSATRエラーを検出できること
S3 CRE_CYC(CYC_ID1,{TA_HLNG,EXINF_CYC1,ERR_CYCHDR,CYCTIM_10,CYCPHS_5})
S4 E_PARエラーを検出できること
S5 CRE_CYC(CYC_ID1,{TA_HLNG|TA_STA,EXINF_CYC1,CYCHDR_1,CYCTIM_0,CYCPHS_5})
S6 E_PARエラーを検出できること
S7 CRE_CYC(CYC_ID1,{TA_HLNG|TA_STA,EXINF_CYC1,CYCHDR_1,CYCTIM_0,ERR_CYCPHS})S8 E_PARエラーを検出できること(注)
No.S4 E_PARエラーを検出できるERR_CYCHDRがシステムに存在しない場合は、テストを省略することができる。

No

rcv_dtq-3,6

テスト
項目参照

−
prcv_dtq-1

prcv_dtq-2
prcv_dtq-3

prcv_dtq-4

その1

No

CYC2：
CYC2：周期ハンドラ機能のテスト手順

rcv_dtq-5

その7

No

CYC1：
CYC1：周期ハンドラ機能のテスト手順

rcv_dtq-4

テスト
項目参照
CRE_CYC-1
CRE_CYC-2
CRE_CYC-3
CRE_CYC-4

その2
テ

ス

ト 手

順

内

容

S1
S2
S3
−
1
2
3
4
5
6
7
8

CRE_CYC(CYC_ID1,{TA_HLNG|TA_STA,EXINF_CYC1,CYCHDR_1,CYCTIM_10,CYCPHS_5})
CRE_CYC(CYC_ID2,{TA_HLNG,EXINF_CYC2,CYCHDR_2,CYCTIM_55,CYCPHS_0})
CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})<CYCHDR_1:周期ハンドラ<CYCHDR_2:周期ハンドラ<TASK_ID1:READY><CYCHDR_1:周期ハンドラ>
周期ハンドラ><CYCHDR_2:周期ハンドラ>
周期ハンドラ><TASK_ID1:READY>
共通変数cyc_work1,cyc_work2を0クリア
ercd = sta_cyc(ERR_CYCID)MERCD(ercd) == E_ID
ercd = stp_cyc(ERR_CYCID)MERCD(ercd) == E_ID
ercd = stp_cyc(CYC_ID2)
MERCD(ercd) == E_OK
100msec以上のソフトウェアディレーを実行

9

cyc_work2 == 010cyc_work1 ≧ 9

11

ercd = stp_cyc(CYC_ID1)

テスト
項目参照

−

sta_cyc-1
stp_cyc-1
stp_cyc-3
周期ハンドラ-2
CRE_CYC-6
システム時刻管理-1
isig_tim-1
CRE_CYC-5,7

5-28

12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

MERCD(ercd) == E_OK
work = cyc_work1(カウンタのセーブ)
100msec以上のソフトウェアディレーを実行
cyc_work1 == work
ercd = sta_cyc(CYC_ID2)
MERCD(ercd) == E_OK
100msec以上のソフトウェアディレーを実行
cyc_work2 == 1
ercd = sta_cyc(CYC_ID2)
MERCD(ercd) == E_OK
50msec以上のソフトウェアディレーを実行
MERCD(ercd) == E_OK
cyc_work2 == 1
ercd = stp_cyc(CYC_ID2)
MERCD(ercd) == E_OK
ext_tsk( )stp_cyc-2

sta_cyc-2

sta_cyc-3<CYCTIM_10周期に起動される＞

29

exinf == EXINF_CYC1

30
31
32
33
34
35

cyc_work1 ++return

システム時刻管理-3
周期ハンドラ-1< CYCTIM_55周期に起動される＞
exinf == EXINF_CYC2
cyc_work2 ++returnSYS1：SYS1：システム状態管理機能のテスト手順 その1
No

テ

ス

ト

手

順

内

容

S1
−
1
2
3
4
5
6
7
8

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})<TASK_ID1:READY>
ercd = get_tid(&tskid)
MERCD(ercd) == E_OK
tskid == TASK_ID1
state = sns_dpn( )state == FALSE
ercd = loc_cpu( )MERCD(ercd) == E_OK
state = sns_loc( )9state == TRUE

10
11
12
13
14
15
16
17
18

state = sns_dpn( )state == TRUE
ercd = loc_cpu( )MERCD(ercd) == E_OK
state = sns_loc( )state == TRUE
ercd = unl_cpu( )MERCD(ercd) == E_OK
state = sns_loc( )19state == FALSE

20
21
22
23
24
25
26
27
28

ercd = unl_cpu( )MERCD(ercd) == E_OK
state = sns_loc( )state == FALSE
state = sns_ctx( )state == FALSE
ercd = dis_dsp( )MERCD(ercd) == E_OK
state = sns_dsp( )29state == TRUE

30
31
32
33
34
35
36
37
38

state = sns_dpn( )state == TRUE
ercd = dis_dsp( )MERCD(ercd) == E_OK
state = sns_dsp( )state == TRUE
ercd = ena_dsp( )MERCD(ercd) == E_OK
state = sns_dsp( )39state == FALSE

40
41
42
43
44

ercd = ena_dsp( )MERCD(ercd) == E_OK
state = sns_dsp( )state == FALSE
ext_tsk( )

テスト
項目参照
−

get_tid-1
sns_dpn-4

loc_cpu-1
sns_loc-1
sns_dpn-2

loc_cpu-2

unl_cpu-1
sns_loc-2

unl_cpu-2
sns_ctx-1

dis_dsp-1
sns_dsp-1
sns_dpn-3

dis_dsp-2

ena_dsp-1
sns_dsp-2

ena_dsp-2

5-29

SYS2：
SYS2：システム状態管理機能のテスト手順 その2
No
S1
S2
−
1
2

テ

ス

ト

手

順

内

テスト
項目参照

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
DEF_INH(INHNO,{INHATR,INTHDR_1})<INTHDR_1:割込みハンドラ<TASK_ID1:READY><INTHDR_1:割込みハンドラ>
割込みハンドラ>
<１回目>
<２回目>
INTHDR_1の割込み発生
ercd = iget_tid(&tskid)

3

tskid== TASK_ID1

4

ercd = iloc_cpu( )5MERCD(ercd) == E_OK

6
7
8
9
10
11
12

state = sns_loc( )state == TRUE
ercd = iloc_cpu( )MERCD(ercd) == E_OK
state = sns_loc( )state == TRUE
ercd = iunl_cpu( )13MERCD(ercd) == E_OK

14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

state = sns_loc( )state == FALSE
ercd = iunl_cpu( )MERCD(ercd) == E_OK
state = sns_loc( )state == FALSE
state = sns_ctx( )state == TRUE
return−

非タスクコンテキストから呼び出せるサービスコール-9
iget_tid-1
非タスクコンテキストから呼び出せるサービスコール-10
iloc_cpu-1

iloc_cpu-2
非タスクコンテキストから呼び出せるサービスコール-11
iunl_cpu-1

iunl_cpu-2
sns_ctx-2

10msec後に割込み発生
ext_tsk( )ercd = iget_tid(&tskid)
tskid == TSK_NONE
state = sns_dpn( )state = TRUE
returnINH1：
INH1：割込み管理機能のテスト手順

iget_tid-2
sns_dpn-1

その1

No

テ

S1
S2
S3
S4
S5
S6

DEF_INH(INHNO_1,{ERR_INHATR,INTHDR_1})
E_RSATRエラーを検出できること。
DEF_INH(ERR_INHNO,{INHATR,INTHDR_1})
E_PARエラーを検出できること。
DEF_INH(INHNO_1,{INHATR,ERR_INTHDR})
E_PARエラーを検出できること。

S7

DEF_INH(INHNO_1,{INHATR,INTHDR_1})

ス

ト

手

順

内

容

テスト
項目参照
DEF_INH-1
DEF_INH-2
DEF_INH-3
静的APIの文法とパラメータ-３

S8 CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})<TASK_ID1:READY>−<INTHDR_1:割込みハンドラ<INTHDR_1:割込みハンドラ>
割込みハンドラ>
1 INHNO_1の割込み発生
2
return３ ext_tsk( )(注)No.S6 E_PARエラーを検出できるERR_INTHDRがシステムに存在しない場合は、テストを省略することができる。

5-30−
DEF_INH-4

ISR1：
ISR1：割込みサービスルーチンのテスト手順 その1
No
S1
S2
S3
S4
S5
S6
S7
S8
−
1

テ

ス

ト

手

順

内

容

ATT_ISR(ERR_ISRATR,{EXINF_1,INTNO_1,ISR_1})
E_RSATRエラーを検出できること。
ATT_ISR(TA_HLNG,{EXINF_1,ERR_INTNO,ISR_1})
E_PARエラーを検出できること。
ATT_ISR({TA_HLNG,EXINF_1,INTNO_1,ISR_ADR_0})
E_PARエラーを検出できること。
ATT_ISR({TA_HLNG,EXINF_1,INTNO_1,ISR_1})
CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})<TASK_ID1:READY><ISR_1:割込みサービスルーチン<ISR_1:割込みサービスルーチン>
割込みサービスルーチン>
INTNO_1の割込み番号に対応する割込み発生

exinf == EXINF_1

2

テスト
項目参照
ATT_ISR-1
ATT_ISR-2
ATT_ISR-3

割込み管理機能-4
ATT_ISR-4

3
return4 ext_tsk( )(注)No.S6 E_PARエラーを検出できるISR_ADR_0がシステムに存在しない場合は、テストを省略することができる。
EXC1：
EXC1：CPU例外ハンドラのテスト手順

その1

No

テ

ス

ト

手

順

内

容

S1 DEF_EXC(EXCNO_1,{ERR_EXCATR,EXCHDR_1})
S2 E_RSATRエラーを検出できること。
S3 DEF_EXC(ERR_EXCNO,{EXCATR,EXCHDR_1})
S4 E_PARエラーを検出できること。
S5 DEF_EXC(EXCNO_1,{EXCATR,ERR_EXCHDR})
S6 E_PARエラーを検出できること。
S7 DEF_EXC(EXCNO_1,{EXCATR,EXCHDR_1})
S8 DEF_EXC(EXCNO_1,{EXCATR,EXCHDR_2})
S9 CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})<TASK_ID1:READY>−<EXCHDR_2:CPU例外ハンドラ<EXCHDR_2:CPU例外ハンドラ>
例外ハンドラ>1 EXCHDR_2の割込み発生
2
return３ ext_tsk( )(注)No.S6 E_PARエラーを検出できるERR_EXCHDRがシステムに存在しない場合は、テストを省略することができる。
INI1：
INI1：初期化ルーチンのテスト手順
No
S1
S2
−
1
2
3
4
5

テスト
項目参照
DEF_EXC-1
DEF_EXC-2
DEF_EXC-3−
DEF_EXC-5

その1
テ

ス

ト 手

順

内

容

ATT_INI({TA_HLNG,EXINF_1,INIRTN_1})
CRE_TSK(TASK_ID1,{TA_HLNG|TA_ACT,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})<TASK_ID1:READY><INIRTN_1:初期化ルーチン<INIRTN_1:初期化ルーチン>
初期化ルーチン>TASK_ID1より先に初期化ルーチンが実行される
exinf == EXINF_1
returnext_tsk( )

5-31

テスト
項目参照

−
ATT_INI-1
システム構成管理機能-3

RST：制約タスクのテスト手順
RST
No
S1
S2
S3
S4
S5
−
1
2
3

その１
テ

ス

ト 手

順

内

容

CRE_TSK(TASK_ID1,{TA_HLNG|TA_RSTR,EXINF_1,TASK1,ITSKPRI_1,STKSZ,NULL})
CRE_TSK(TASK_ID2,{TA_HLNG|TA_ACT|TA_RSTR,EXINF_2,TASK1,ITSKPRI_2,STKSZ,NULL})CRE_SEM(SEM_ID1,{TA_FIFO,ISEMCNT_1,MAXSEM_FFFF})
CRE_FLG(FLG_ID1,{TA_FIFO,IFLGPTN_1})
CRE_DTQ(DTQ_ID1,{TA_TFIFO,DTQCNT_1,NULL})<TASK_ID<TASK_ID<TASK_ID1:_ID1:DORMANT
1:DORMANT>DORMANT><TASK_ID2:READY>_ID2:READY>
ercd = act_tsk(TASK_ID1)
MERCD(ercd) ==E_OK
ercd = ext_tsk( )4MERCD(ercd) ==E_NOSPT

5

ercd = ter_tsk(TASK_ID2)

6

MERCD(ercd) ==E_NOSPT

7

ercd = chg_pri(TSK_SELF,TPRI_INI)

8

MERCD(ercd) ==E_NOSPT

9ercd = slp_tsk( )10

MERCD(ercd) ==E_NOSPT

11

ercd = wai_sem(SEM_ID1)

12

MERCD(ercd) ==E_NOSPT

13

ercd = wai_flg(FLG_ID1,WAIPTN_0002,TWF_ORW,p_flgptn)

14

MERCD(ercd) ==E_NOSPT

15

ercd = rcv_dtq(DTQ_ID1,p_data)

16

MERCD(ercd) ==E_NOSPT

17
18

returnreturn

5-32

テスト
項目参照

−

自動車制御用プロファ
イルに含まれる機能-1
制約タスク-2
自動車制御用プロファ
イルに含まれる機能-2
自動車制御用プロファ
イルに含まれる機能-3
自動車制御用プロファ
イルに含まれる機能-4
自動車制御用プロファ
イルに含まれる機能-5
自動車制御用プロファ
イルに含まれる機能-6
自動車制御用プロファ
イルに含まれる機能-7
制約タスク-1

第 5章

第３節

製品マニュアルによる確認の見方

以下に、製品マニュアル確認の見方を説明する。
UMA
No.

区

分

1
APIの構成要素
2
3
4
56

サービスコールの返値とエラーコード
静的APIの文法とパラ
メータ
サービスコール
定数

テ
ス
ト
項
目
すべてのサービスコールの名称、パラメータとリターンパラメータの種類・順序・名称・データ型がμITRON4.0仕様書通りに記載されていること。ただし、実装が独自に拡張しているサービスコールは除く。
静的APIの名称、パラメータとリターンパラメータの種類・順序・名称・データ型がμITRON4.0仕様書通りに記載されていること。ただし、実装が独自に拡張している静的
APIは除く。
サブエラーコードをサポートする場合は、その意味が記載されていること。
静的APIの処理中にエラーが発生した場合の扱いが記載されていること。
実装が独自に用意するサービスコールの名称が記載されていること。
実装が独自に定義するメインエラーコードの名称とその内容が記載されていること。

テスト項目参照
APIの構成要素-1
サービスコールの返値とエラーコード-1
APIの構成要素-2
サービスコールの返値とエラーコード-2
静的APIの文法とパラメータ-8
サービスコール-1
定数-1(1) No.
製品マニュアルの確認番号を示す。
(2) 区分
製品マニュアルの確認で、確認項目を内容毎に分類したものである。
(3) テスト項目
μITRON4.0仕様書に記載されている内容であり、テスト手順(プログラム)では確認できない項目である。したがって、検定を受けるカーネルメーカが作成する製品マニュアルに、振舞いや意味が明確に記載されていることを確認する。
(4) テスト項目参照
製品マニュアルで確認すべき事項が、テスト項目のどの部分に記載されているかを示す。
なお、No.3で示すように、カーネルが当該機能をサポートしていない場合は、検定項目から除くことを明記している。

5-33

第４節
UMA：
No.
1

2
3
4
5
6
7

8

9
10
11
12
13
14

15

16

17

18
19

製品マニュアルによる確認の手順

区

分

テ
ス
ト
項
目
テスト項目参照
自動車制御用プロファイルに含まれるサービスコールの名称、パ APIの構成要素-1
ラメータとリターンパラメータの種類・順序・名称・データ型が サービスコールの返値とエラーコード-1
μITRON4.0仕様書通りに記載されていること。
APIの構成要素
自動車制御用プロファイルに含まれる静的APIの名称、パラメー
APIの構成タの種類・順序・名称・データ型がμITRON4.0仕様書通りに記要素-2載されていること。
サービスコールの返 サブエラーコードをサポートする場合は、その意味が記載されて サービスコールの返値とエラーコード いること。
値とエラーコード-2
静的APIの文法と 静的APIの処理中にエラーが発生した場合の扱いが記載されてい 静的APIの文法と
パラメータ
ること。
パラメータ-8
サービスコール-1
実装が独自に用意するサービスコールと静的APIの名称がサービスコール
静的API-1
μITRON4.0仕様書通りに記載されていること。
実装が独自に定義するメインエラーコードの名称とその内容が
定数
定数-1μITRON4.0仕様書通りに記載されていること。
割込みハンドラの記述方法（カーネルが用意する出入口処理やア 割込み処理ハンド
プリケーションが登録する割込みハンドラで行うべき処理）が記 ラと割込みサービ
載されていること。
スルーチン-1
割込み処理ハンド
DEF_INTとATT_ISRの両方をサポートした場合の振舞いが記載
割込み処理モデル
ラと割込みサービ
されていること。
スルーチン-2
割込み処理ハンド
どの優先度より高い優先度を持つものをカーネルの管理外の割
ラと割込みサービ込みにするかが、製品マニュアルに記載されていること。
スルーチン-3
CPU例外ハンドラ
CPU例外ハンドラの記述方法が記載されていること。
で行える操作-1
CPU例外ハンドラ内で呼出し可能なサービスコールが記載され CPU例外ハンドラ
CPU例外ハンド ていること。
で行える操作-２
ラで行える操作 CPU例外が発生したコンテキストや状態の読出し方法が記載さ CPU例外ハンドラ
れていること。
で行える操作-３
CPU例外が発生したタスクのID番号の読出し方法が記載されて CPU例外ハンドラいること。
で行える操作-４
タスクコンテキ タスクコンテキストを実行中にCPU例外が発生した場合、CPU タスクコンテキス
ストと非タスク 例外ハンドラが実行されるコンテキストが製品マニュアルに記 トと非タスクコン
コンテキスト
テキスト-4載されていること。
処理の優先順位と割込みハンドラおよび割込みサービスルーチン相互間の優先順
サービスコールの位の関係が記載されていること。
不可分性-2
処理の優先順位と周期ハンドラの優先順位と、isig_timを呼び出した割込みハンド
サービスコールの処理の優先順位 ラの優先順位との関係が記載されていること。
不可分性-３とサービスコー
CPU例外ハンドラの優先順位が、CPU例外が発生した処理の優 処理の優先順位とルの不可分性
先順位と、ディスパッチャの優先順位のいずれよりも高いことが サービスコールの製品マニュアルに記載されていること。
不可分性-4
処理の優先順位とCPU例外ハンドラと、割込みハンドラやタイムイベントハンドラ
サービスコールのとの間の優先順位が記載されていること。
不可分性-5
割込みハンドラ内でCPUロック解除状態にするための方法が記 CPUロック
CPUロック状態
状態-10
載されていること。

5-34

20

割込みハンドラから正しくリターンするための方法が記載されていること。

21

カーネルの初期化処理を呼び出す方法が記載されていること。

22

静的APIの処理中にエラーを検出した場合の扱いが記載されていること。
カーネルの管理外の割込みを禁止するかどうかが記載されていること。
初期化ルーチン内でサービスコールを呼び出せるか否か、呼び出せる場合にはどのようなサービスコールが呼び出せるか記載されていること。

23

システム
初期化手順

24

25
オブジェクトの登録とその削除
26
27
28

ext_tskシステム
時刻管理

カーネルに登録できるオブジェクトの最大数やID番号の範囲の指定方法が記載されていること。
自動割付けされるID番号の範囲の指定方法が記載されていること。
エラーが発生した場合の処理が記載されていること。
システム時刻更新機能がカーネル内部にある場合は、システム時
刻更新方法が記載されていること。

29

記載通りに実行するとシステム時刻が正しく更新されること。

30

割込みハンドラの記述方法が記載されていて、正しく動作すること。
割込みハンドラ内でCPUロック解除状態にする方法が記載されていること。
CPUロックを解除した後に、割込みハンドラからリターンする方法が記載されていること。
inhnoの具体的な意味が記載されていること。
CPU例外ハンドラの記述方法が記載されていて、正しく動作すること。
excnoの具体的な意味が記載されていること。

31

割込み管理機能

32
33
34
35

DEF_INH
システム構成管理機能
DEF_EXC

5-35

CPUロック状態-11
システム初期化手順-3
システム初期化手順-4
システム初期化手順-5
システム初期化手順-6
オブジェクトの登録とその削除-２
オブジェクトの登録とその削除-3
ext_tsk-6
システム
時刻管理-2
isig_tim-2
システム
時刻管理-2
割込み管理
機能-3
割込み管理
機能-５
割込み管理
機能-６
DEF_INH-5
システム構成管理機能-2
DEF_EXC-4

第５節

ヘッダファイルによる確認の見方

以下に、μITRON4.0仕様で定義するヘッダファイルの内容確認の見方について説明する。
HED：
No.
1

区
分
APIの構成要素

2
3

ヘッダファイル

4−
5
6
7

ITRON仕様共通データ型（itron.h）

34
35
36

ITRON仕様
共通定数（itron.h）

テ
ス
ト
項
目
“kernel.h”から“itron.h”をインクルードしていること。
ITRON仕様共通定義で規定されるデータ型、定数、マクロの定義などを含むヘッダファイルの名称が、μITRON4.0仕様書と一致していること。
カーネル仕様で定められるサービスコールの宣言と、データ型、定数、マクロの定義などを含むヘッダファイルの名称が、μITRON4.0仕様書と一致していること。
カーネルのコンフィギュレータが生成する自動割付け結果ヘッダファイルの名称を kernel_id.h とすること。
型
整数／ポインタ／構造体
整数
B
整数
H
整数
W

〜
NULL
TRUE
FALSE

0で定義されていること
1で定義されていること
0で定義されていること

テスト手順参照
APIの構成要素-3
ヘッダファイル-1
サービスコールの返値とエラーコード-1
ヘッダファイル-2
ヘッダファイル-3−
ITRON仕様共通データ型-1
ITRON仕様共通データ型-2
ITRON仕様共通データ型-3〜
ITRON仕様共通定数-1
ITRON仕様共通定数-2
ITRON仕様共通定数-3(1) No.
ヘッダファイルの確認番号を示す。
(2) 区分
ヘッダファイルの確認で、確認項目をμITRON4.0仕様書の内容に添って分類したものである。
(3) テスト項目
μITRON4.0仕様書に記載されている内容であり、テスト手順(プログラム)では確認できない項目である。したがって、検定を受けるカーネルメーカは、μITRON4.0仕様書が規定するヘッダ
ファイルの名称、および当該ヘッダファイル内で記述すべき内容が明確に記載されていることを確認する。
データ型や定数についても、μITRON4.0仕様書が規定している通りに定義されていることを確認する。なお、検定対象のカーネルがTA_NULLをサポートしていなければ、省略することが可能である。
網掛けされてあるエラーコードは、実装依存や実装定義でエラーの検出を省略できることを示す。
ただし、これらのエラーコードの検出を省略する場合は、省略する旨が製品マニュアルに記載されていること。
(4) テスト項目参照
ヘッダファイルで確認すべき事項が、テスト項目のどの部分に記載されているかを示す。

5-36

第６節

ヘッダファイルによる確認の手順

HED：
No.
区
分
APIの構成要素
1
2
3

ヘッダファイル

4
−
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

ITRON仕様共通データ型（itron.h）

ITRON仕様共通
定数（itron.h）

テ
ス
ト
項
目
テスト項目参照
APIの構成要素-3“kernel.h”から“itron.h”をインクルードしていること。
ITRON仕様共通定義で規定されるデータ型、定数、マクロの定義なヘッダファイル-1
どを含むヘッダファイルの名称が、“itron.h”であること。
カーネル仕様で定められるサービスコールの宣言と、データ サービスコールの返値と型、定数、マクロの定義などを含むヘッダファイルの名称が、 エラーコード-1
ヘッダファイル-2“kernel.h”であること。
カーネルのコンフィギュレータが生成する自動割付け結果ヘ
ヘッダファイル-3
ッダファイルの名称を kernel_id.h とすること。
型
整数／ポインタ／構造体−
ITRON仕様共通データ型-1
整数
B
ITRON仕様共通データ型-2
整数
H
ITRON仕様共通データ型-3
整数W
ITRON仕様共通データ型-4
整数UB
ITRON仕様共通データ型-5
整数UH
ITRON仕様共通データ型-6
整数UW
ITRON仕様共通データ型-7
定義されていることVB
ITRON仕様共通データ型-8
定義されていること
VH
ITRON仕様共通データ型-9定義されていること
VW
ITRON仕様共通データ型-10
ポインタ
VP
ITRON仕様共通データ型-11
ポインタ
FP
ITRON仕様共通データ型-12
整数
INT
ITRON仕様共通データ型-13
整数
UINT
ITRON仕様共通データ型-14
整数
BOOL
ITRON仕様共通データ型-15
整数
FN
ITRON仕様共通データ型-16
整数
ER
ITRON仕様共通データ型-17
整数ID
ITRON仕様共通データ型-18
整数
ATR
ITRON仕様共通データ型-19
整数
STAT
ITRON仕様共通データ型-20
整数
MODE
ITRON仕様共通データ型-21
整数
PRI
ITRON仕様共通データ型-22
整数
SIZE
ITRON仕様共通データ型-23
整数
TMO
ITRON仕様共通データ型-24
整数
RELTIM
ITRON仕様共通データ型-25
整数
SYSTIM
ITRON仕様共通データ型-26
整数またはポインタ
VP_INTITRON仕様共通データ型-27
整数
ER_BOOLITRON仕様共通データ型-28
整数
ER_ID
ITRON仕様共通データ型-29
整数
ER_UINTITRON仕様共通定数-10で定義されていること
NULL
ITRON仕様共通定数-21で定義されていること
TRUE
ITRON仕様共通定数-30で定義されていること
FALSE
0で定義されていること
ITRON仕様共通定数-4
E_OK-5で定義されていること
ITRON仕様共通定数-5E_SYS-9で定義されていること
ITRON仕様共通定数-6
E_NOSPT-10で定義されていること
ITRON仕様共通定数-7
E_RSFN-11で定義されていること
ITRON仕様共通定数-8
E_RSATR

5-37

42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76

ITRON仕様
共通マクロ
カーネル
共通定義

カーネル共通構成定数

タスク管理機能
タスク付属
同期機能
セマフォ

-17で定義されていること
E_PAR-18で定義されていること
E_ID-25で定義されていること
E_CTX-26で定義されていること
E_MACV-28で定義されていること
E_ILUSE-33で定義されていること
E_NOMEM-41で定義されていること
E_OBJ-43で定義されていること
E_QOVR-49で定義されていること
E_RLWAI-50で定義されていること
E_TMOUT0で定義されていること
TA_NULL0で定義されていること
TMO_POL-1で定義されていること
TMO_FEVR
itron.h にMERCDマクロが定義されていること。
itron.h にSERCDマクロが定義されていること。
0x00 で定義されていること
TA_HLNG0x00 で定義されていること
TA_TFIFO
0 で定義されていること
TSK_SELF
0 で定義されていること
TSK_NONE
TMIN_TPRI 1 で定義されていること
TMAX_TPRI 16以上 で定義されていること
TKERNEL_MAKER カーネルのメーカーコード
TKERNEL_PRID カーネルの識別番号
TKERNEL_SPVER ITRON仕様のバージョン番号
TKERNEL_PRVER カーネルのバージョン番号
TMAX_ACTCNT 1以上で定義されていること
TMAX_WUPCNTTMAX_MAXSEMFLGPRN
イベントフラグ
TBIT_FLGPTN
システム
TIC_NUME
時刻管理
TIC_DENO
INHNO
割込み管理機能
INTNO
システム構成管理機能 EXCNOITRON仕様共通定数-9
ITRON仕様共通定数-10
ITRON仕様共通定数-11
ITRON仕様共通定数-12
ITRON仕様共通定数-13
ITRON仕様共通定数-14
ITRON仕様共通定数-15
ITRON仕様共通定数-16
ITRON仕様共通定数-17
ITRON仕様共通定数-18
ITRON仕様共通定数-19
ITRON仕様共通定数-20
ITRON仕様共通定数-21
ITRON仕様共通マクロ-1
ITRON仕様共通マクロ-2
カーネル共通定義-1
カーネル共通定義-2
カーネル共通定義-3
カーネル共通定義-4
カーネル共通構成定数-1
カーネル共通構成定数-2
カーネル共通構成定数-3
カーネル共通構成定数-4
カーネル共通構成定数-5
カーネル共通構成定数-6
タスク管理機能-51以上で定義されていること

タスク付属同期機能-165535以上で定義されていること
16ビット以上で定義されていること
16ビット以上で定義されていること
実装毎に定義されていること
実装毎に定義されていること
実装毎に定義されていること
実装毎に定義されていること
実装毎に定義されていること

セマフォ-1
イベントフラグ-1
イベントフラグ-2
システム時刻管理-4
システム時刻管理-5
割込み管理機能-1
割込み管理機能-2
システム構成管理機能-1

5-38