ioctl 在2.6.36被移除
老接口:
int (*ioctl)(struct inode *node, structfile *filp, unsigned int cmd, unsigned long arg)
新接口:
long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
原因:
当ioctl被执行时,它使用big kernel lock (BKL),其他的事情将不能被执行,这种情况在多核系统上更糟糕,
所以内核开发人员努力移除BKL。首先unlocked_ioctl 被引入到内核,它可以让驱动开发人员选择其他的替换lock,
campat_ioctl 实际与上面问题无关,引入它的目的是允许32位的用户程序可以在64位内核调用ioctl
阅读(1841) | 评论(0) | 转发(0) |