【问题标题】:error: ‘struct tty_driver’ has no member named ‘write’错误:‘struct tty_driver’没有名为‘write’的成员
【发布时间】:2016-09-29 06:58:53
【问题描述】:

我是内核模块编程的新手,在编译一些旧内核代码时遇到了一些问题。我收到以下错误消息,

 error: ‘struct tty_driver’ has no member named ‘write’
            ((my_tty->driver)->write) (my_tty,0,str,strlen(str));

我检查了tty_driver.h 文件,那里定义了write。发生什么了?我如何在版本3.13.0-24 中访问?

我的代码在这里:

void print_string(char *str)
{
      struct tty_struct *my_tty;
      my_tty = get_current_tty();

      if (my_tty != NULL)
      {
             (*(my_tty->driver)->write)(my_tty, 0, str, strlen(str));
      }
}

提前谢谢..

【问题讨论】:

  • linux kernel source for 3.13 表示已定义写入,因此您还有其他版本的tty_driver.h,而不是内核版本。
  • 较新的内核将操作函数指针隐藏在 tty_driver 中的 ops 成员结构中

标签: c linux linux-device-driver


【解决方案1】:

write 确实被定义,但不是tty_driver 的成员。它被定义为tty_operations的成员,而tty_driver有一个成员ops,一个指向const tty_operations的指针。

所以,我使用了my_driver->ops->write 而不是my_driver->driver->write

【讨论】:

    猜你喜欢
    • 2022-01-15
    • 1970-01-01
    • 2010-09-17
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多