μITRON 3.0仕様: インプリメント依存部分のチェックシートの回答方法に関するQ&A 【質問-1】 Ques-2111: の get_tid [レベルS] は [レベルE] の誤りではないか? 【回答-1】 「μITRON 3.0 標準ハンドブック」のp.367のレベル分類表では get_tid が [レ ベルE] になっているが、これや誤植であり、get_tid は [レベルS] である。な お、p.88 の get_tid の説明や、レファレンス、索引などでは [レベルS] とな っている。 【質問-2】 Ques-2052 の「ter_tsk をタスク独立部から発行できるか?」の設問であるが、 RUN状態だったタスクを指定するとE_OBJとなり、他の状態のタスクを指定すると 正常に実行できる。この場合、どのように回答すれば良いか? 【回答-2】 この場合、RUN状態のタスクに対して ter_tsk を発行できないのは、実装上の制 約によるものであり、意味的なもの(タスク独立部から待ち状態に入るシステム コールを発行するとエラーになる等)ではない。対象タスクがある状態の時に実 行できても、別の状態の時(この場合はRUN状態の時)に正常に実行できないので あれば、結局アプリケーションからは使えない。したがって、この設問の回答は [b]発行不可 である。また、タスク独立部から発行できない(場合がある)のだか らE_CTXのエラーを返すべきであるが、対象タスクがRUN状態でなければ実行でき てしまうので、Ques-8131 においてE_CTXのエラーチェックを省略していると回 答する必要がある。 実装方法を考えるとご質問のような仕様になることはあり得るが、チェックシー トはあくまでもアプリケーションプログラマ向けのものであるから、アプリケー ションから使える機能かどうかが回答の基準となる。対象タスクがRUN状態かど うかは各タスクの実行状況に応じて動的に変化するものであり、アプリケーショ ン内のタスク独立部がこの状態(対象タスクがRUN状態であること)を避けながら ter_tsk を発行するのは容易ではない。この点が、次の質問の状況とは大きく異 なっている。この意味で、タスク独立部からのシステムコール発行は不可とする べきである。 【質問-3】 Ques-2122 の「ref_tsk をタスク独立部から発行できるか?」の設問であるが、 タスク独立部から tskid=0 で発行してもエラーにはならず、その時にRUN状態だ ったタスクの情報を返す。この場合、どのように回答すれば良いか? 【回答-3】 tskid=0(自タスクの指定,タスク独立部からはエラー) に関するエラーチェック を省略しているだけで、システムコールの主な機能は実現されている。そのため、 回答は [a]発行可 でよい。ただし、Ques-8131 においてエラーチェックの省略 に関する説明が必要である。 【質問-4】 Ques-2131 の「sus_tsk をタスク部から発行できるか?」の設問であるが、自タ スクを指定してもエラーにはならず、特殊な動作をする。この場合、どのように 回答すれば良いか? 【回答-4】 システムコールの主な機能は実現されているが、自タスク指定のエラーチェック を省略していると解釈できる。したがって、回答は [a]発行可 であるが、Ques- 8131 でエラーチェックの省略に関して説明する必要がある。ただし、μITRON 3. 0 の正しい(移植性を考慮した)アプリケーションであれば、sus_tskで自タスク の指定をすることはないので、その場合の詳細な動作を説明する必要はない。 【質問-5】 Ques-2671, Ques-2681 の「dis_int, ena_int をタスク部から発行できるか?」 の設問であるが、このシステムコールの代わりにCPUのcli,sti命令を実行するこ とによって、同等の機能を実現している。この場合、どのように回答すれば良い か? 【回答-5】 アプリケーションプログラムの中で dis_int, ena_int を書けないのであれば、 [b]発行不可 という回答になる。