2016-09-29 115 views
0

我是內核模塊編程的新手,在編譯一些舊的內核代碼時遇到了一些問題。我收到以下錯誤消息,錯誤:'struct tty_driver'沒有名爲'write'的成員

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)); 
     } 
} 

在此先感謝..

+0

[linux內核源代碼爲3.13](http://lxr.free-electrons.com/source/include/linux/tty_driver.h?v=3.13#L254)表明寫入已定義,所以你有一些其他版本的'tty_driver.h'不是內核版本。 – Petesh

+0

較新的內核將操作函數指針隱藏在'tty_driver'的'ops'成員結構中 – tofro

回答

0

write確實被定義,但不作爲的tty_driver成員。它被定義爲tty_operations的成員,並且tty_driver具有成員ops,指向const tty_operations的指針。

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

相關問題