21,597
社区成员
发帖
与我相关
我的任务
分享
#define IO_READ_MODE 1
#define IO_WRITE_MODE 2
static int gpio_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
{
struct GPIO_INFO io_info;
int ret;
memset(&io_info,0x0,sizeof(io_info));
if (copy_from_user(&io_info, ( void *) arg, sizeof(io_info))){
printk(" the ret's value is -EFAULT\n");
return (-EFAULT);
}
switch(cmd){
case IO_READ_MODE:
ret=pxa168_gpio_ioc_read(&io_info);
if(ret)
return ret;
if (copy_to_user((void *) arg,&io_info, sizeof(io_info)))
return -EFAULT;
break;
case IO_WRITE_MODE:
ret=pxa168_gpio_ioc_write(&io_info);
if(ret)
return ret;
break;
default:
printk("Error: unknown ioctl command\n");
return -ENOTTY;
}
return 0;
}
#define IO_READ_MODE 1
#define IO_WRITE_MODE 2
ioctl(fd,IO_READ_MODE,&io_info);
ioctl(fd,IO_WRITE_MODE,&io_info);