+ -
当前位置:首页 → 问答吧 → 关于ioctl

关于ioctl

时间:2011-08-23

来源:互联网

file_operations中的ioctl函数在新版内核中没了,取而代之的是
C/C++ code
long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
long (*compat_ioctl) (struct file *, unsigned int, unsigned long);

在驱动中应该如何实现 以前的ioctl功能

作者: proghua   发布时间: 2011-08-23

可以参考不同版本的驱动变化.
比如driver/char/tty_io.c

C/C++ code

旧的.
static const struct file_operations tty_fops = {
    .llseek        = no_llseek,
    .read        = tty_read,
    .write        = tty_write,
    .poll        = tty_poll,
    .ioctl        = tty_ioctl,
    .open        = tty_open,
    .release    = tty_release,
    .fasync        = tty_fasync,
};
新的.
static const struct file_operations tty_fops = {
    .llseek        = no_llseek,
    .read        = tty_read,
    .write        = tty_write,
    .poll        = tty_poll,
    .unlocked_ioctl    = tty_ioctl,
    .compat_ioctl    = tty_compat_ioctl,
    .open        = tty_open,
    .release    = tty_release,
    .fasync        = tty_fasync,
};




作者: zmlovelx   发布时间: 2011-08-23

是linux3.0吗?

作者: shenfawang   发布时间: 2011-08-23

引用 2 楼 shenfawang 的回复:

是linux3.0吗?

我的2.6.38就已经是这种了

作者: proghua   发布时间: 2011-08-23

file_operations

作者: xiaopei1982   发布时间: 2011-08-23

我遇到过一次,我记得是用compat_ioctl代替了。参数没变化,测试也正常。但那两个接口的含义及区别,倒没具体看过。

作者: subfate   发布时间: 2011-08-23

热门下载

更多