以下は、ioctl 呼び出しのプロトタイプです。
long ioctl(struct file *f, unsigned int cmd, unsigned long arg);
ioctl の 3 番目の引数がデフォルトで unsigned long になっているのはなぜですか? ポインタを渡すこともあります。しかし、unsigned long を使用しています。
以下は、ioctl 呼び出しのプロトタイプです。
long ioctl(struct file *f, unsigned int cmd, unsigned long arg);
ioctl の 3 番目の引数がデフォルトで unsigned long になっているのはなぜですか? ポインタを渡すこともあります。しかし、unsigned long を使用しています。
カーネルでは、 unsigned longがポインターの代用としてよく使用されます。これは、ポインターがすべてのアーキテクチャーで常にこのサイズを持つためです。ioctlも引数として整数を取ることができるので、これはここでは理にかなっています。これは、 ioctlごとに定義する必要があります。
ioctl は非推奨であり、unlocked_ioctlsは現在のカーネル バージョンで使用する必要があることに注意してください: http://lwn.net/Articles/119652/