【发布时间】:2020-04-04 23:28:03
【问题描述】:
我编写了一个字符设备驱动程序来切换两个 GPIO 引脚。读取设备,回调函数为scull_read()。设备打开、读取、写入和关闭的正常操作运行正常,如果我从 C 程序执行所有操作,但在使用 echo 和 从终端执行上述操作时cat,读取和写入的回调函数(scull_read() 和 scull_write())被无限次调用。在这个阶段,停止进程的kill信号^c对scull_write()不起作用。
已经有一个测试代码,名称为:strong text
你能帮我解决这个问题吗?
这是一个github链接:https://github.com/guruprasad-92/Device-Driver.git
【问题讨论】:
-
检查 scull_read 和 scull_write 函数的返回值。这些函数应返回从输入“buf”处理的字节数。如果这些函数返回 0,则用户模式进程可能会尝试重复调用它,直到处理完 'count' 个字节。
标签: c linux-kernel linux-device-driver device-driver