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

[linux-users:102067] Re: 組込Linuxドライバの作成方法


川辺と申します。

# 質問内容が抽象的すぎますね。
# で、突っ込み処が満載な気がします ......

対象のカーネルのバージョンはいくつですか? 

せめて、本家の 2.2.x/2.4.x/2.6.x なのか、特定のパッチのあたった版なのか?

対象デバイスは何なのか?

ドライバレベルの話で中途半端に抽象的なことを書くよりもソースを出してこ
こがうまくいかない、と言う聞き方をするのが賢明だと思いますが。

>>>>> "えのきださん" == Yuichi Enokida <enokida@xxxxxxxxxxxxxxxxxx> writes:

えのきださん> デバイスの割込が発生し、例えばリンク確率した等の
えのきださん> 情報を上位(スレッド/プロセス)に知らせるには
えのきださん> どのようなI/Fを設ければよいのでしょうか。

上位とは、何でしょうか?
カーネル内のカーネルスレッドコンテキストで動いている状態のことですか?
# 以下、スレッドとはカーネル内のカーネルスレッドコンテキストとして進めます。

割り込みハンドラとスレッドは、同一仮想空間ですよ。最悪の場合、静的変数
に割り込みハンドラが書き込んでカーネル内のカーネルスレッドコンテキスト
でその変数を読むだけでも情報は伝わります。

スレッドを起こすのがうまくいかないと始めに質問されていた様ですが、その
ことを指しているなら、割り込みの禁止の解除はどのタイミングで行っていま
すか?

まずは、
  driver/char/serial.c (2.2.x/2.4.x) | driver/serial/8250.c (2.6.x)
辺りを参考にすべきではないかと思います。

Linuxのドライバの開発をしていると言うことですので、OSの基礎知識やLinux
カーネルの基礎知識又はUnix系(BSD又はSVR[3-5])のカーネルの知識はあるも
のと解釈していますが、もしそこが漏ているのならまずそこを満たすべきでは
無いかと思います。

割り込みハンドラとスレッドコンテキストとの間での情報のやりとりは、ソー
スを観れば分かる通り、それぞれのドライバ(serialなどのchar系、I2C、
IEEE1394、SCSIなどなど)で似たようなそれでいて微妙に違う実装がされてい
ます。当然、ドライバですから、適材適所と(開発者が)判断した実装がされて
います。

えのきださんがどういう目的のどんなデバイスの開発をしているのかが分から
なければまともな答えは出来ません。それらしく動けばいいと言うのなら、既
存のドライバを元に改造した方が早いです。もちろん、そのソースは、GPLに
なりますけど。
--------
  Kawabe,Yoshihiro <ripula@xxxxxxxxxxxxxxx>
  Who is calling me from where?
  Knock on my shell and my mind? from Pearl song.

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
Follow-Ups: References: