我在我的操作系统类中有一个赋值,用于创建一个简单的伪堆栈Linux设备驱动程序。举个例子,如果我要写#34; Hello"对于设备驱动程序,它将返回" olleH"当我读它。我们必须在C中构建一个测试程序,只需调用设备驱动程序的读/写功能,就可以证明它以FILO方式运行。我完成了所有这些工作,我认为我的测试程序证明了作业的目的;但是,出于好奇,在BASH内部我执行以下命令:
回声"测试" >的/ dev /驱动器
cat / dev / driver
其中/ dev / driver是我使用" mknod"创建的特殊文件。然而,当我这样做时,我得到一个充满错误的黑屏。在我使用CNTRL + ALT + F7交换回GUI视图后,我看到BASH已经返回" Killed"。
有谁知道可能导致这种情况发生的原因?我很困惑,因为我的测试程序调用open(),read()和write(),一切都正常运行。
如果我需要显示一些代码,请询问。
答案 0 :(得分:1)
设备驱动程序中写入您提供的缓冲区的功能很可能导致此问题。
要进行调试,您可以执行以下操作:
首先,确保读取部分正常。在阅读输入后,您可以printk
内部缓冲区以确保这一点。
其次,在你的写函数中,printk
一些信息,而不是实际写任何东西,并确保一切正常。
此外,请确保作者明确表示写入已结束。我不是特别相信设备驱动程序,但你需要返回0作为第二次调用时写入的字节数,或者设置一个eof变量(如果这是你的函数的参数之一)