错误:'struct tty_driver'没有名为'ioctl'的成员

时间:2014-07-27 06:11:53

标签: c linux-kernel linux-device-driver

我发现了类似的帖子,但找不到解决方案,所以以为会发布我的问题。我正在使用设备驱动程序。我知道,下面的函数使用2.6内核头文件成功编译,现在尝试使用" 3.2.0-4-686-pae"编译它。 (Debian的)。我收到以下错误消息,

 error: ‘struct tty_driver’ has no member named ‘ioctl’
 error: ‘struct vc_data’ has no member named ‘vc_tty'

我检查了" tty_driver"在tty_driver.h(包含在tty.h中)中找到了

int  (*ioctl)(struct tty_struct *tty, struct file * file,
            unsigned int cmd, unsigned long arg); 

已定义,但不确定为什么我收到此错误。

另外,我找不到' vc_tty'包含在' vc_data'在" console_struct.h"任何人都可以让我知道需要做什么更新才能使它与#34; 3.2.0-4-686-pae"?

一起使用
#include <linux/tty.h>
#include <linux/console_struct.h>

struct tty_driver *my_driver;

static void my_func(unsigned long ptr)
{
    /* Some code */   

    (my_driver->ioctl) (vc_cons[fg_console].d->vc_tty, NULL, KDSETLED,
                *pstatus);

    /* Some more code */
}

我还没有在这里发布完整的代码,但如果需要,我会发布。如果您需要更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

&#34;操作&#34; tty_driver的{​​{1}}会在某个时间点移至单独的struct tty_operations *ops成员,您现在可以找到ioctl

((my_driver->ops)->ioctl)(...);

struct vc_data中的端口数据相同,已移至struct tty_port port成员。所以请改用它:

vc_cons[fg_console].d->port.tty

通过搜索您正在获取的确切错误消息(逐个),并查看您通常会发现的补丁和错误报告,您可以非常轻松地找到这些类型的更改。对于像这样的简单事情,它会在99%的时间内工作。

然后,您可以使用Free Electrons上的Linux Cross Reference等网站在不同版本的标题之间导航并查找详细信息。 (例如,include/linux/console_struct.h。)