1

以下は、ioctl 呼び出しのプロトタイプです。

long ioctl(struct file *f, unsigned int cmd, unsigned long arg);

ioctl の 3 番目の引数がデフォルトで unsigned long になっているのはなぜですか? ポインタを渡すこともあります。しかし、unsigned long を使用しています。

4

1 に答える 1

3

カーネルでは、 unsigned longがポインターの代用としてよく使用されます。これは、ポインターがすべてのアーキテクチャーで常にこのサイズを持つためです。ioctlも引数として整数を取ることができるので、これはここでは理にかなっています。これは、 ioctlごとに定義する必要があります。

ioctl は非推奨であり、unlocked_ioctlsは現在のカーネル バージョンで使用する必要があることに注意してください: http://lwn.net/Articles/119652/

于 2013-11-11T13:52:23.037 に答える