Qt中ioctl

在将HPI驱动移植到QT时遇到ioctl函数调用问题,尝试了使用unlocked_ioctl,修改魔数和cmd宏,调整参数,以及在C++中添加::前缀和extern "C"关键字,但问题仍未解决。最终发现是open设备节点错误导致,修正后成功调用ioctl,加深了对驱动ioctl机制的理解。
摘要由CSDN通过智能技术生成

今天在将HPI驱动移植到QT中的时候发现,ioctl函数怎么都调用不到,网上各种查啊。

先是得到linux内核版本变化导致的ioctl函数被换成了unlocked_ioctl,然后发现在应用程序中调用ioctl还是不行,

然后查看ioctl-number.txt 修改魔数,换成了里面没有用到的‘x’。然后修改cmd的宏

#define Write_HPIC      _IOW(HPI_MAGIC,  1 ,unsigned long)

再然后,修改ioctl传入的参数arg,

if(-1 == ioctl(fd, Write_HPIC, &device_arg))

最后又听说在c++里调用c系统函数前面要加:: 于是修改了所有的ioctl为

if(-1 == ::ioctl(fd, Write_HPIC, &device_arg))

还要加上extern “C” 关键字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值