
No.3ベストアンサー
- 回答日時:
まず、get_mbf というサービスコールはありません。
メッセージバッファだとすればrcv_mbfになります。
SH4だと
renesas純正のHi7000/4シリーズか、
mispoのNortiかと思います。それ以外でしたらすいません。
uITRONの仕様に近いHi7000/4では、
isnd_mbx(), iprcv_mbx() で利用可能です。
ただし、メッセージバッファは、
ipsnd_mbf()はあるものの、iprcv_mbf()は実装されていません。
ですので、ハンドラでメッセージバッファの受信はできません。
一方 Nortiの方は、(NORTi is not only ITRONというコンセプトもそうかと思えてしまいますが)
snd_mbx() と prcv_mbx() で対応できます。
psnd_mbf()とprcv_mbf()で対応できます。
Nortiの仕様として非タスクコンテキスト、タスクコンテキストをカーネル内部で判定して、
適切に処理を呼び出すようです。ただ、rcv_mbx()はタスクの待ち状態があるため、非タスクコンテキスト
で呼び出されたら、E_CTXを返す仕様になっているようです。
正確な解答とすれば、
snd_mbx()はNortiならハンドラで利用可能
Hi7000/4シリーズなら isnd_mbx()で代替できます。
get_mbf()ではなく、rcv_mbf()はそのものでは不可で、
Nortiなら、psnd_mbf()で代替可能
Hi7000/4シリーズなら、ipsnd_mbf()で代替可能
となります。
回答ありがとうございます。
Hi7000/4であることが判明しましたので
isnd_mbx(), iprcv_mbx() が利用可能なようです。
ありがとうございました。
No.5
- 回答日時:
> get_mbf というサービスコールはありません。
そうですね。
get_mpfだとばかり思っていました。(タスク間通信ではないですね)
# コピペしたのでスペルはそのままになっていたりする。
No.4
- 回答日時:
>get_mbf()ではなく、rcv_mbf()はそのものでは不可で、
>Nortiなら、psnd_mbf()で代替可能
>Hi7000/4シリーズなら、ipsnd_mbf()で代替可能
get_mbf()ではなく、rcv_mbf()はそのものでは不可で、
Nortiなら prcv_mbf()で代替可能
Hi7000/4では、代替できません。
に訂正します。
#正確じゃなかったですね。
No.2
- 回答日時:
ITRONは、具体的にどこの何というOSを使用されるのでしょうか?
とりあえず一般論として、μITRON 4.0仕様書に基づいて回答します。
まず、割り込みハンドラ内での処理は「非タスクコンテキスト」に相当します。コンテキストとは、プログラムが実行される環境のことで、uITRON4.0仕様ではタスク処理の一部と見做すことのできるコンテキストを総称して「タスクコンテキスト」、そうでないコンテキストを総称して「非タスクコンテキスト」と呼びます。割り込みハンドラが実行されるコンテキストは非タスクコンテキストに分類されます。
非タスクコンテキストから呼び出せるサービスコールは、サービスコール名の先頭に'i'をつけることが規定されています。具体的には、次のサービスコールがこれに相当します。
iact_tsk, iwup_tsk, irel_wai, iras_tex, isig_sem, iset_flg, ipsnd_dtq, ifsnd_dtq, isig_tim, irot_rdq, iget_tid, iloc_cpu, iunl_cpu
(uITRON 4.0仕様書 3.6章 非タスクコンテキストからのサービスコール呼び出し より)
http://www.ertl.jp/ITRON/SPEC/mitron4-j.html
上記のとおり、割り込みハンドラ内でsnd_mbx,get_mbfは使用できません。
No.1
- 回答日時:
割り込みハンドラや周期ハンドラのような「非タスクコンテキスト」では、原則として、iという接頭辞が付いたサービスコールしか使用することができません。
(sns_ctxのような例外もありますが)実装によっては、snd_mbxやget_mbfを非タスクコンテキストで使える可能性もありますし、isnd_mbxなどの非タスクコンテキスト版が用意されている場合もありますが、標準的には無理です。
なお、snd_mbxは待ち状態になる可能性がないので、非タスクコンテキスト版が存在する可能性はありますが、get_mbfは待ち状態になるのでまず無理だと思います。pget_mbfの非タスクコンテキスト版であれば、もしかすると存在するかもしれません。
どうしても割り込みハンドラ内で直接処理しなければならないのでなければ、iras_texを使って、いったんタスク例外処理ルーチンに制御を移してから、普通にsnd_mbxやget_mbfを使うのもひとつの手ではないでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 電子マネー・電子決済 QUICPayの登録ができない。 4 2023/06/10 10:57
- その他(プログラミング・Web制作) プログラミング 処理速度 1 2022/11/25 11:05
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- その他(Microsoft Office) エクセルの関数について 4 2022/07/30 16:42
- その他(パソコン・スマホ・電化製品) ウィルスバスターモバイルについて。 iphone12 miniで、ウィルスバスターモバイルを使ってい 2 2022/07/10 12:59
- システム 外付けHDDの初期化について 4 2023/03/05 21:19
- 大学受験 高校3年の女です。早稲田大学社会科学部を第1志望にしています。勉強のアドバイスと、現時点で過去問何割 2 2022/08/04 00:01
- その他(プログラミング・Web制作) awkの文字列比較はPOSIXロケールまたはCロケールにおいてバイナリ値の比較に使えるか gawkな 1 2023/04/22 09:21
- 格安スマホ・SIMフリースマホ FEETEL Priori5 からの機種変更 2 2022/11/13 15:54
- システム 外付けHDDの初期化について 4 2023/03/05 20:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
タスクスケジューラからショー...
-
XCOPYでネットワーク越しにコピ...
-
batファイルをアンダグラウンド...
-
タスクの相関図のわかりやすい...
-
実行中のSendkeysのVBSを途中で...
-
拡張子はなぜ、大文字と小文字...
-
エクセルでの計算式もしくはシ...
-
ひとつのファイルを一括で複数...
-
ファイルの開き方(拡張子なし)
-
Excelの「アクセシビリティ 検...
-
DOSコマンドでファイルをコピー...
-
フォルダの並び替えの項目を固...
-
複数のフォルダへ同時にファイ...
-
フォルダの中に1個しかファイ...
-
Windowsフォルダ内のファイルと...
-
6ヶ月経過日を算出する式
-
LAME.EXE をダウンロードしたい...
-
Windows10 で登録した外字を他...
-
フォルダーのプロパティで表示...
-
コマンドプロンプトからファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
タスクスケジューラからショー...
-
XCOPYでネットワーク越しにコピ...
-
batファイルをアンダグラウンド...
-
eclipse の TasksにTODO が出ない
-
再起動後必ず2つのエラーが出...
-
タスクの相関図のわかりやすい...
-
μiTronでの割込み処理について
-
リエントラント関数
-
C#からタスクマネージャーの【...
-
実行中のSendkeysのVBSを途中で...
-
タスクマネージャーの状態の取...
-
バッチファイルで、プログラム...
-
応用情報処理試験の平成26年秋 ...
-
0-1ナップザック問題の解き方が...
-
バッチでタスクのプロパティを...
-
サーバへのログインなど
-
Vbscriptでアプリ(ソフト)など,...
-
タスク、プログラム実行後に自...
-
タスクやプロセス管理について
-
RTOSのセマフォの使い方につい...
おすすめ情報