永发信息网

ioctl 函数调用不成功: main函数中无论是ioctl(fd,'k',2); ioctl(fd,1,2);都不行,为什么呀,求指教。

答案:1  悬赏:20  手机版
解决时间 2021-01-27 18:39
  • 提问者网友:难遇难求
  • 2021-01-26 19:54
LCD.C里面

#define MEMDEV_IOC_MAGIC 'k'

#define MEMDEV_IOCPRINT _IO(MEMDEV_IOC_MAGIC, 1)
#define MEMDEV_IOCGETDATA _IOR(MEMDEV_IOC_MAGIC, 2, int)
#define MEMDEV_IOCSETDATA _IOW(MEMDEV_IOC_MAGIC, 3, int)
...

函数 lcd_ioctl 如下:
display_word(0xc6000000,fan,24,0,0); //LCD显示的
if(_IOC_TYPE(cmd)!=MEMDEV_IOC_MAGIC)
{
printk("Type error\n"); //到这里输出,就是直接错误了
return -EINVAL;
}
if(_IOC_NR(cmd)>MEMDEV_IOC_MAXNR)
{
printk("Number error\n");
return -EINVAL;
}

switch(cmd)
{
case MEMDEV_IOCPRINT:
printk("<-CMD ok-->");
break;
case MEMDEV_IOCGETDATA:

printk("<-CMD ok-->");
break;
default : return -EINVAL;
}
最佳答案
  • 五星知识达人网友:人间朝暮
  • 2021-01-26 20:00
ioctl函数的头文件写了吗?
#include

bdkyr《开源人》 留言
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯