ioctl与unlocked_ioctl的区别

Linux2.6.38中驱动使用unlocked_ioctl,于是我就将file_operations中的ioctl换成unlocked_ioctl,但编译结果有warning:initialization from incompatible pointer type,后来才发现unlocked_ioctl与ioctl不只是名字变了,参数与返回值也变了。

区别如下:

ioctl原型为:int ioctl(struct inode *inode,struct file *filp,unsigned int cmd,unsigned long arg)

unlocked_ioctl原型为:long unlocked_ioctl(struct file *filp,unsigned int cmd,unsigned long arg)

即:后者返回值由原来的int为long,函数参数少了一个inode。

即使参数改为一致,但int没改成long,也会出现警告,需要完全一致。

另:ioctl与unlocked_ioctl在应用程序中是完全一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值