0

私はioctlを学び始めました

私はこの例を得ました

http://tldp.org/LDP/lkmpg/2.6/html/x892.html

ioctal の完全な動作が得られましたが、ドライバーの ioctal を定義する必要がある理由と場所がわかりません。

その例では

呼び出す代わりに ioctl(file_desc, IOCTL_SET_MSG, message);

直接使用できない理由

device_write(file, message, size, 0);
4

3 に答える 3

1

それはチュートリアルの性質によるものだと確信しています。の使い方を紹介しようとしていますioctl。実際にioctlは、デバイス ドライバーまたはその背後にあるデバイスの構成に使用され、「通常の」方法 (おそらくwrite) を使用してデータを書き込みます。

実際、それはあなたが提供したリンクでコードが行うことであり、データをカーネル空間にコピーした後device_writeにカーネルが行うことに関する情報を渡すだけです。

于 2012-09-04T06:15:28.563 に答える
1

ポイントは、ioctl はユーザー空間から呼び出すことができますが、device_write はカーネル内からしか呼び出せないということです。

于 2012-09-04T06:17:16.110 に答える
1

ioctl主に、デバイス レジスタの読み取りや書き込みなど、デバイスに関する特定のパラメータやフラグを設定または取得するために使用されます。

古いフロッピー ドライブがあるとします。「モーターのオン/オフ」、「セクターあたりのビット数」などを制御するための特別なレジスターがあります。これらのレジスターを設定するには、ioctl関数を使用します。実際のディスクに書き込むには、たとえばdevice_write.

于 2012-09-04T06:48:51.987 に答える