leddrvを書く(1)

  • 投稿日:
  • by
  • カテゴリ:

単純にLEDが制御できればいいので、ユーザランドのコマンドとドライバを対で書いてもいいかと思ったのだけれど、完全ではなくても、互換にしておくと、それなりに嬉しいかと思い、互換性が取れるようにすることにしました。コマンドのインターフェイスについては --help を渡せば表示されます。問題は、ドライバにはナニが渡されているのかということです。

わからなければ調べればいいのです。調べるにはどうしたらいいか。ダミーのデバイスドライバを実装して、ナニがわたってくるのかを見ればいいのです。簡単。ということで、まず、ダミーleddrvを実装することに。ダミーといっても、最終的には、動作するドライバにする途中のものを使うだけですが。

ドライバとプログラムとの間でのデータのやり取りは、様々な方法がありますが、一般的なものは、File I/Oを利用したものでしょう。デバイスドライバを open()して、read()/write()/ioctl()などを呼び出して、終わったらclose()というスタイルです。ledcontもioctl()を利用している様子ですので、ioctl()を持ったデバイスドライバを作ります。ioctl()は何もしないで、渡されたパラメータを printk()でコンソール(とsyslog)に出力します。これで、ledcontがナニをしているのかがわかります。