This error is found on the Internet. In version 3.0.0.15, The file_operation struct of the kernel has deleted the ioctl function, replacing the following:
Long (* unlocked_ioctl) (struct file *, unsigned int, unsigned long );
Long (* compat_ioctl) (struct file *, unsigned int, unsigned long );
File_operation struct is defined in/usr/src/linux-3.0.0.15/include/Linux/fs. h.
1546 struct file_operations {1547 struct module *owner;1548 loff_t (*llseek) (struct file *, loff_t, int);1549 ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);1550 ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);1551 ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t);1552 ssize_t (*aio_write) (struct kiocb *, const struct iovec *, unsigned long, loff_t);1553 int (*readdir) (struct file *, void *, filldir_t);1554 unsigned int (*poll) (struct file *, struct poll_table_struct *);1555 long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);1556 long (*compat_ioctl) (struct file *, unsigned int, unsigned long);1557 int (*mmap) (struct file *, struct vm_area_struct *);1558 int (*open) (struct inode *, struct file *);1559 int (*flush) (struct file *, fl_owner_t id);1560 int (*release) (struct inode *, struct file *);1561 int (*fsync) (struct file *, int datasync);1562 int (*aio_fsync) (struct kiocb *, int datasync);1563 int (*fasync) (int, struct file *, int);1564 int (*lock) (struct file *, int, struct file_lock *);1565 ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);1566 unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);1567 int (*check_flags)(int);1568 int (*flock) (struct file *, int, struct file_lock *);1569 ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);1570 ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);1571 int (*setlease)(struct file *, long, struct file_lock **);1572 long (*fallocate)(struct file *file, int mode, loff_t offset,1573 loff_t len);1574 };
The definition of file_operation in 2.6.30.4 is as follows:
1484 struct file_operations {1485 struct module *owner;1486 loff_t (*llseek) (struct file *, loff_t, int);1487 ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);1488 ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);1489 ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t);1490 ssize_t (*aio_write) (struct kiocb *, const struct iovec *, unsigned long, loff_t);1491 int (*readdir) (struct file *, void *, filldir_t);1492 unsigned int (*poll) (struct file *, struct poll_table_struct *);1493 int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long);1494 long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);1495 long (*compat_ioctl) (struct file *, unsigned int, unsigned long);1496 int (*mmap) (struct file *, struct vm_area_struct *);1497 int (*open) (struct inode *, struct file *);1498 int (*flush) (struct file *, fl_owner_t id);1499 int (*release) (struct inode *, struct file *);1500 int (*fsync) (struct file *, struct dentry *, int datasync);1501 int (*aio_fsync) (struct kiocb *, int datasync);1502 int (*fasync) (int, struct file *, int);1503 int (*lock) (struct file *, int, struct file_lock *);1504 ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);1505 unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);1506 int (*check_flags)(int);1507 int (*flock) (struct file *, int, struct file_lock *);1508 ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);1509 ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);1510 int (*setlease)(struct file *, long, struct file_lock **);1511 };
Modify the value of file_operation:
. Unlocked_ioctl = xxx_ioctl