6

インターフェイス設計のガイドラインとしてPOSIXを使用して、小型マイクロコントローラーアプリケーション用のデバイスドライバーI/Oモデルを開発しています。ioctl()ドライバー/ハードウェアパラメーター(UARTボーレート、I2Cスレーブアドレスなど)を制御する手段として実装しました。

ioctl()私は、POSIX:2008がリストされており<stropts.h>廃止されていることに気づきました。デバイスドライバーと通信するための推奨される代替メカニズムは何ですか?

4

1 に答える 1

8

ioctl()POSIXは、 STREAMSに関連する機能の非常に限定されたサブセットのみを定義します。STREAMS機能は廃止されているため、POSIXではその機能へのインターフェースも廃止されています。

ただし、ioctl()「永遠に」からUnixの一部になっています(確かに第7版のUNIXであり、それでも新しいものではなかったと確信しています)。これは、デバイスドライバを開いた後に制御する「方法」です。唯一の問題は、そのようなインターフェースとコントロールが標準化されていないことです。

<termios.h>制御端末に書き込まれた一連の関数のファイルを確認できます。典型的な実装ではioctl()、または他の同様の特殊なメカニズムが使用されると思いますが、インターフェイスは標準化されたときに一般化されました(<termios.h>インターフェイスは、第7版、System III、またはその他のインターフェイスのいずれかである以前のインターフェイスと同じではありません)。必要に応じて、ユーザーが使用する標準関数をioctl()インターフェイス上に作成できます。これらの関数を実装して、ioctl()インターフェースを呼び出します。

だから、消えるioctl()ことはありません。これは、デバイスドライバーを制御する正しい方法です。POSIXの議題は少し異なります。それだけです。

于 2011-09-03T17:51:43.760 に答える