1

下面是一个ioctl调用的原型

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

为什么 ioctl 的第三个参数默认为 unsigned long?有时我们会传递一个指向它的指针。但它使用无符号长。

4

1 回答 1

3

在内核中, unsigned long经常被用作指针的替代,因为指针在每个架构上总是有这个大小。Ioctls也可以将整数作为参数,所以这在这里很有意义。这必须为每个ioctl定义。

请注意,不推荐使用 ioctl,并且必须在当前内核版本中使用unlocked_ioctls :http: //lwn.net/Articles/119652/

于 2013-11-11T13:52:23.037 回答