1、代码示例
struct ar_req req;
if (copy_from_user(&req, (void *)arg, sizeof(struct ar_req)))
return -EFAULT;
switch (cmd) {
case c01:
return c01fun(&req);
case c02:
return c02(&req);
default:
return -EINVAL;
}
return -ENOTSUPP;
static struct file_operations cmd_fop = {
ioctl: cmd_ioctl,
};
static int cmd_ioctl (struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg)
{struct ar_req req;
if (copy_from_user(&req, (void *)arg, sizeof(struct ar_req)))
return -EFAULT;
switch (cmd) {
case c01:
return c01fun(&req);
case c02:
return c02(&req);
default:
return -EINVAL;
}
return -ENOTSUPP;
}
一、在用户空间,使用ioctl系统调用来控制设备,原型如下:
int ioctl(int