下面是一个ioctl调用的原型
long ioctl(struct file *f, unsigned int cmd, unsigned long arg);
为什么 ioctl 的第三个参数默认为 unsigned long?有时我们会传递一个指向它的指针。但它使用无符号长。
下面是一个ioctl调用的原型
long ioctl(struct file *f, unsigned int cmd, unsigned long arg);
为什么 ioctl 的第三个参数默认为 unsigned long?有时我们会传递一个指向它的指针。但它使用无符号长。
在内核中, unsigned long经常被用作指针的替代,因为指针在每个架构上总是有这个大小。Ioctls也可以将整数作为参数,所以这在这里很有意义。这必须为每个ioctl定义。
请注意,不推荐使用 ioctl,并且必须在当前内核版本中使用unlocked_ioctls :http: //lwn.net/Articles/119652/