我在Linux设备驱动程序一书中找到的这个小小的驱动程序遇到了麻烦。我不得不稍微采用这些代码来满足我的要求,因此删除了任何不相关的代码(参见下面的代码)。
我使用一个内核线程将“hello world”写入TTY层。如果我使用cat命令在终端中打开设备文件,我会收到预期的字符串。
但我面临两个问题:
如果在设备文件中使用echo,为什么会出现错误?
ngAfterViewInit() {
console.log(this.item.toArray());
this.item.changes.subscribe(() => {
console.log(this.item.toArray());
});
}
驱动程序在Raspberry Pi内核4.9.56-v7上运行。
非常感谢!
此致 托马斯
更新:使用tty_flip_buffer_push() sends data back to itself中的解决方案(部分)解决了第一个问题。有没有办法直接在设备驱动程序中执行此操作,因此用户不需要进行任何交互?
echo test > /dev/tiny_tty
bash: echo: write error: Invalid argument
答案 0 :(得分:0)
帖子已经过时了,但是我偶然发现了相同的问题,并决定分享解决方案:
您可以通过在termios结构中设置适当的标志来关闭回显:
tiny_tty_driver->init_termios.c_lflag &= ~ECHO;
tiny_write
总是返回-EINVAL
,请在返回前设置retval = count;
来解决此问题。