我正在写我的第一个Linux LKM。这是一个简单的chardev,具有一些基本的read
,write
,open
,release
函数,并具有mutex
锁。它编译成功,但是当我尝试通过cat /dev/kbschar
打开chardev时,出现以下错误
cat: /dev/kbschar: Invalid argument
源代码为FCM-AndroidToOtherDevice。我已链接到main.c
文件。您可以在存储库中找到Makefile
dmesg
on gitlab的输出。我还使用了ftrace
的{{1}}跟踪器,并通过function_graph
进行了过滤。 is here是其输出。最后,我还运行:mod:main
来查看哪里出现了strace cat /dev/kbschar
错误。 Here是输出。我们在第32行出现了EINVAL
错误。
非常感谢您的帮助
答案 0 :(得分:1)
您的dev_open
函数的最后一行:
return true;
不好。您应该返回一个错误代码(负errno)或零以获取成功。不管true
是什么(可能在某处定义为1?)都是无效的。