以下是ioctl调用的原型
long ioctl(struct file *f, unsigned int cmd, unsigned long arg);
为什么默认情况下,ioctl的第三个参数是无符号的长整数?有时我们传递一个指向它的指针。但是它使用的是unsigned long。
在内核中,无符号长常用于代替指针,因为在每种体系结构上,指针始终具有此大小。Ioctl也可以使用整数作为参数,因此在这里这很有意义。必须为每个ioctl进行定义。
请注意,不赞成使用ioctl,并且在当前的内核版本中必须使用unlocked_ioctls:http : //lwn.net/Articles/119652/
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句