ioctl
このページは著作権侵害のおそれが指摘されており、事実関係の調査が依頼されています。
このページの現在または過去の版は、ウェブサイトや書籍などの著作物からの無断転載を含んでいるおそれが指摘されています。もしあなたが転載元などをご存知なら、どうぞこのページのノートまでご一報ください。 著作権侵害が確認されると、このページは削除の方針により一部の版または全体が削除されます。もしこのページの加筆や二次利用をお考えでしたら、この点を十分にご認識ください。 |
コンピュータにおけるioctl(IPA: [aɪˈɒktəl] またはアイ・オー・コントロール)とは、主にUNIXライクなオペレーティングシステム上で、アプリケーションがデバイスドライバを制御したり、デバイスドライバと通常のデータの読み書きの流れの外で通信したりするために用意されたシステムコールのことである。AT&T の Unix version 7 に実装されたのが起源である。また、名前は I/O control の略に由来している。
UNIXにおける ioctl は次のパラメータを受け取る[1]。
- 有効な(オープン済みの)ファイル記述子
- リクエストコード番号
- データへの型なしポインタ(ドライバへの入力、ドライバからの出力、あるいは入出力両方)
リクエストコード番号とは、デバイスドライバに対する個々の操作に割り当てられた番号である。実際の関数プロトタイプにおける第3引数はC言語の歴史的な経緯から可変長引数...
となっている。
カーネルは一般的に、デバイスドライバにioctlを直接送信する。これにより、たとえどのような方法で必要になったとしても、ドライバはリクエスト番号とデータを解釈することができる。デバイスドライバの作者はリクエスト番号についての説明を文書化し、またその番号を定数としてヘッダファイルに記述したものを提供する。いくつかのシステムではリクエスト番号に、ドライバに送信またはドライバから受信すべきデータのサイズおよびデータの転送方向をエンコードして含める慣習がある。