[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 2708] from OSASK BOARD



このメールは、OSASK伝言板に書き込まれた内容です。
この書き込みに返事を書く場合は、下のURLから書き込みを行なって下さい。


http://www.imasy.or.jp/~mone/osask/index.cgi?REFER=3c171e93_92fb

From: 川合秀実
Message-ID: 3c171e93_92fb
Date: 2001/12/12 18:08
Subject: Re: ちょっとだけ。

[OSASK 2691]へのレスです。

>ただ、やはり簡単な流れというか
>シグナルとデータの流れは
>解説していただきたいです。
>いろいろ参考になると思うので。

 かしこまりました。・・・さて、どの辺りから説明すればいいでしょうか?

 たとえばキー入力した場合、そのシグナルはどうやってアプリに伝わるのかを
簡単に説明しましょうか。もちろんこの説明は現在の実装をベースにしているの
で、将来は変わるかもしれません。それはご了承ください。

 アプリがlib_definesignal1p0()を呼び出すと、すぐにpioneer0に制御が移り
、pioneer0はinit内のGUIGUI_shellcall()を呼び出します。shellcallではパラ
メーターを適当に並べ替えたり変換したりしてふさわしい形式を整え、tapi0を
通じてwinman0のタスクへパラメーター付きシグナルを送ります。lib_definesi
gnal1p0()を実行したタスクの方での出来事はこれでおしまいです。引き続き、
次の処理を進めていくだけです。

 一方、winman0タスクの方は、キーシグナル定義シグナルを受け取って、それ
を記憶します。そして対応づけを要求されたウィンドウが入力アクティブになっ
た時にsgg_execcmd0()を使って、キーコード(これはハードウェア依存のローレ
ベルなコードで、このコードへの変換はwinman0内で行っている)と、送信先の
タスクとキー入力の際に送るべきシグナルの値を登録します。この登録コマンド
はinit内のGUIGUI_shellcall2()を通じて、decode0に送られ、decode0内のワー
クエリアに記録されます。

 キーが入力されると、キーボード割り込みをkeymos0が受け、キーボードイン
ターフェースからキーコードを受け取り、makeかremakeかbreakなのかの情報を
付加して、これらを引数としてdecode0を呼び出します。decode0はこのキーコー
ドに対するシグナルが定義されているかどうかを自身のワークエリアから判定し
、定義されていなければ何もしません。定義されていれば、tapi0のコマンドを
使って目的のタスクに対応するシグナルを送ります。

 これでおしまいです。

 一度に多くを説明することは出来ません。どの分野のどの部分を中心に説明し
てほしいのかをリクエストして頂けないでしょうか。シグナルはそれこそたくさ
んの種類がありますし(OSASK全体はシグナルによって運営されていると言って
も過言ではないくらいです)、もちろんデーターもいろいろやり取りされていま
す。・・・そして一つ説明が済むたびに、また次のリクエストをしてください。