At Wed, 27 Nov 2002 16:01:29 +0900, 館野雄治 wrote: > > たろすけです。 > > > 蛇足ですけど・・・ > > TRAPはRTOSに使うと非常に便利です。 > > 通常RTOSでタスクディスパッチャが動くタイミングとして > > タイマーを使いますが、ユーザータスクでディスパッチしたいときなんかは > > TRAPを使用します。つまりシステムコールですね。 > > こうすると、タイマー割り込みと同じレベル(ソフトウェア割り込み)で > > カーネルに制御を渡すことができます。 > > 私の場合はフラグを落さない要因の割り込みを許可する事でディスパッチャを起 > 動してます。trapを使えればスマートだったんでしょうけどtrapでは割り込み禁 > 止状態でもtrapされてしまって遅延ディスパッチが実現できないようだったもの > で... > # それともtrapもマスクされるのかなぁ...試したわけじゃないからアレだけど。 コメント部分に返事をするのもなんですが… 割り込み禁止でもtrapされます。 UI bit使ってなければ、こんな感じで逃げられると思いますが。 trap_entry: push.w r0 mov.w @sp,r0 bpl int_enabled pop.w r0 rte int_enabled: ;割り込み許可でtrap実行 > > trap使うにしても実際の割り込みを使うにしても、ディスパッチャを割り込みハ > ンドラにしておくとスタックを切替えるだけでコンテキストスイッチができるの > でアセンブラ部分が少なく済んでいいんですけどね。 そうですね。 私もそれ以外の方法は使った事ないです。 -- Yoshinori Sato <qzb04471@xxxxxxxxxxx>