Linuxドライバーの開発は初めてです。
従来、char デバイスを作成したい場合は、関数read
write
と関数を実装し、対応するioctl
で登録するだけで済みます。そして、そのデバイスファイルを作成するために使用します。次に、ユーザー空間で呼び出すと、カーネルによって対応する関数が呼び出されます。register_chrdev_region
Major device ID
mknod
Major device ID
read
write
open
しかし、今は、カーネル 2.6 で追加されたLinux device model
andを勉強しています。sys filesystem
Linux にはデバイスとドライバーを処理するための適切なデバイス モデルがあるため、可能であれば使用しないでくださいと言わ/dev filesystem
れました。これは私を混乱させました。
- /sys に char デバイスを作成するにはどうすればよいですか? より具体的には、のようにヌルデバイスを作成するにはどうすればよい
/dev/null
ですか? - ユーザー空間から char デバイス ドライバー関数を呼び出すにはどうすればよいですか?
- でデバイスファイルを作成する
udev
のがベースだと聞きました。なんで?「できれば使わないでください」と言われたのに、なぜでファイルを作成するのですか?sys filesystem
/dev
/dev filesystem
udev
/sys
/dev
- のファイルには、または
sys
のような概念がありますchar device file
かblock device
? - では
/dev
、open
write
ユーザー空間から、最終的にfile operation structure
私が定義した の関数にマップされます。次に、 でファイルを開いたり書き込んだりすると、どの関数が呼び出されます/ssy
か?