close
Building for Linux Kernel after version 2.6.36
在2.6.36之後的版本,原先使用的IOCTL已經完全的被移除掉,而在這之後的版本IOCTL可以看到
long (*unlocked_ioctl) (struct file *,
unsigned int, unsigned long);
long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
其中ioctl改成使用unlocked_ioctl,如果User Space是32位元,Kernel是64位元,則使用compat_ioctl
範例
2.6.35以前使用方式 |
static
struct file_operations MyDriver_fops = { .owner = THIS_MODULE, .llseek = no_llseek, .read = MyDriver_read, .write = MyDriver_write, .ioctl = MyDriver_ioctl, .open = MyDriver_open, .release = MyDriver_release }; |
2.6.35以後使用方式 |
static
struct file_operations MyDriver_fops = { .owner = THIS_MODULE, .llseek = no_llseek, .read = MyDriver_read, .write = MyDriver_write, .unlocked_ioctl = MyDriver_ioctl, .open = MyDriver_open, .release = MyDriver_release }; |
全站熱搜