(toppers-users 2502) loc_cpu についての質問です。

高橋祥士 staka @ scx.co.jp
2006年 8月 31日 (木) 17:33:26 JST


お世話になっています、高橋と申します。

最近 TOPPERS を実際に使い始めたところなんですが、
loc_cpu の仕様について伺いたいと思います。

loc_cpu を実行すると、sig_sem, clr_flg, set_flg, get_tid など
ほとんど(全て?)の API で E_CTX エラーが返ってきてしまいます。
isig_sem, iset_flg などの非コンテキスト用のAPI でも同じです。
これは仕様なのでしょうか? 

割り込み処理でiset_flg を発行し、コンテキスト中で 
    wai_flag - loc_cpu - (処理) - clr_flg - unl_cpu
を実行しようとすると上記のエラーになり、コンテキストと非コンテキストとの
同期をとることができません。

回避策としてはセマフォを使うか、イベントフラグの属性を TA_CLR にして、
チェックとクリアを同時に行うなどが考えられますがどうにも不便です。
(処理内容によってはフラグをクリアしたくない場合があるので、
セマフォであれば sig_sem を発行して元に戻してやらなくてはいけなくなる。)

ITRONの仕様書を見ても loc_cpu - unl_cpu 間の取扱がよく判りません。
どなたかご教授の程、よろしくお願いします。

敬具
scscscscscscscscscscscscscscscscscscscscscscscscsc
        高橋祥士 (E-Mail staka @ scx.co.jp)
-------------------------------------------------
    株式会社システムクリエイト
    〒130-0013 東京都墨田区錦糸3-13-6 吉川ビル2階
    電話:03-5611-7318    FAX:03-5611-7323
    ホームページ http://www.scx.co.jp
scscscscscscscscscscscscscscscscscscscscscscscscsc