Ioctl参数值(cmd和arg)显示相同,即使我发送了不同的值
我正在尝试读取应用程序发送的ioctl参数。但在驱动端,cmd和arg(第3个和第4个参数)值是相同的,即使我发送了不同的值。两个参数都显示从应用程序发送的参数值。有谁能帮我解决这个问题吗? 这是我的代码: 应用:ioctl(fd,0,1)。 驱动程序ioctl:cmd=1。 arg=1Ioctl参数值(cmd和arg)显示相同,即使我发送了不同的值,c,C,我正在尝试读取应用程序发送的ioctl参数。但在驱动端,cmd和arg(第3个和第4个参数)值是相同的,即使我发送了不同的值。两个参数都显示从应用程序发送的参数值。有谁能帮我解决这个问题吗? 这是我的代码: 应用:ioctl(fd,0,1)。 驱动程序ioctl:cmd=1。 arg=1 int char_ioctl(struct inode *inode_num, struct file *fp, unsigned int cmd, unsigned long arg) { int
int char_ioctl(struct inode *inode_num, struct file *fp, unsigned int cmd, unsigned long arg)
{
int ret = 0,i;
printk("cmd : %d\n",cmd);
printk("arg : %d\n",(unsigned long)arg);
switch(cmd)
{
case GETCAPACITY:
ret = BUFFER_MAX_SIZE;
break;
default :
break;
}
return ret;
}
你能发布驱动程序ioctl功能吗?你能给我们更多的代码吗?尝试制作一个最小的自包含示例。int char_ioctl(struct inode*inode_num,struct file*fp,unsigned int cmd,unsigned long arg){int ret=0,i;printk(“cmd:%d\n”,cmd);printk(“arg:%d\n”,(unsigned long)arg);switch(cmd){case GETCAPACITY:ret=BUFFER\u MAX\u SIZE;break;default:break;}return ret;}请查找添加在驱动程序ioctl函数上方的驱动程序ioctl代码正在被调用,并且正在打印相同的cmd和arg值。