【TOPPERS】ITRON総合スレ3【NORTi】【HOS】at OS【TOPPERS】ITRON総合スレ3【NORTi】【HOS】 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト453:Be名無しさん 10/04/10 14:39:35 .net カーネル管理外なら、intprg.c でも問題ないが、 割り込みハンドラから、サービスコールを利用するならdef_inhとent_int ret_int での囲いが必要ですよ。 HEWの出すintprg.cはRTOS対応ではないので、レジスタの退避、復帰を #pragma interrut で行っています。 よって、intprg.cでの割り込みハンドラは かならず割り込みのあった元のプログラム(タスク)に戻ります。 ITRONでは、これでは問題で、割り込みハンドラから(多重割り込みも含め)元のタスク に戻ろうとするときに、タスクのスケジュールとディスパッチを行う必要があります。 たとえば、isig_sem()が呼び出されて、割り込まれたタスクよりも優先度の高いタスク がレディになった場合は、元のタスクではないタスクへの切り替えが必要なわけです。 この処理のことを遅延ディスパッチといいます。 ret_intは、レジスタの復帰とこの遅延ディスパッチを行うために必要な処理です。 454:Be名無しさん 10/04/10 18:17:24 .net ITRONに限った話ではないね。 たとえばMS-DOSに割込みハンドラを登録するファンクションがあるけど(AH = 25H)、 普通は0000:0000+4*割込み番号にあるテーブルを直接書き換えてしまっても動く。 でも、MS-DOSをフックして何かやってるドライバが何かやってたら、おかしなことに なるかもしれない。インタフェースが用意されてるということはそういうこと。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch