インターフェイス設計のガイドラインとしてPOSIXを使用して、小型マイクロコントローラーアプリケーション用のデバイスドライバーI/Oモデルを開発しています。ioctl()
ドライバー/ハードウェアパラメーター(UARTボーレート、I2Cスレーブアドレスなど)を制御する手段として実装しました。
ioctl()
私は、POSIX:2008がリストされており<stropts.h>
、廃止されていることに気づきました。デバイスドライバーと通信するための推奨される代替メカニズムは何ですか?
ioctl()
POSIXは、 STREAMSに関連する機能の非常に限定されたサブセットのみを定義します。STREAMS機能は廃止されているため、POSIXではその機能へのインターフェースも廃止されています。
ただし、ioctl()
「永遠に」からUnixの一部になっています(確かに第7版のUNIXであり、それでも新しいものではなかったと確信しています)。これは、デバイスドライバを開いた後に制御する「方法」です。唯一の問題は、そのようなインターフェースとコントロールが標準化されていないことです。
<termios.h>
制御端末に書き込まれた一連の関数のファイルを確認できます。典型的な実装ではioctl()
、または他の同様の特殊なメカニズムが使用されると思いますが、インターフェイスは標準化されたときに一般化されました(<termios.h>
インターフェイスは、第7版、System III、またはその他のインターフェイスのいずれかである以前のインターフェイスと同じではありません)。必要に応じて、ユーザーが使用する標準関数をioctl()
インターフェイス上に作成できます。これらの関数を実装して、ioctl()
インターフェースを呼び出します。
だから、消えるioctl()
ことはありません。これは、デバイスドライバーを制御する正しい方法です。POSIXの議題は少し異なります。それだけです。