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