当前位置: 技术问答>linux和unix
关于字符设备驱动读写的问题,求助
来源: 互联网 发布时间:2016-02-10
本文导语: 本人在对字符设备的读写中遇到以下问题: 设计思想是通过轮询方式,向该设备中写入信息并察看字符设备的链表上是否有别的用户挂载的数据,进而进行处理。当一次轮询超时后,要close该设备,并再次打开(根据...
本人在对字符设备的读写中遇到以下问题:
设计思想是通过轮询方式,向该设备中写入信息并察看字符设备的链表上是否有别的用户挂载的数据,进而进行处理。当一次轮询超时后,要close该设备,并再次打开(根据参考的协议,这是必须的),但问题是在第二次打开该设备,并准备对其写入时发生错误,信息为:
no such device or address
但同样的操作在第一次轮询d时候是正常的。
请教各位,错在哪里,在线等。
设计思想是通过轮询方式,向该设备中写入信息并察看字符设备的链表上是否有别的用户挂载的数据,进而进行处理。当一次轮询超时后,要close该设备,并再次打开(根据参考的协议,这是必须的),但问题是在第二次打开该设备,并准备对其写入时发生错误,信息为:
no such device or address
但同样的操作在第一次轮询d时候是正常的。
请教各位,错在哪里,在线等。
|
在第二次打开前同步你的系统,应该可以用系统调用的同步函数,
还有在你的驱动打开设备做好各方面的检查,检查每个函数的返回值的良好处理
还有在你的驱动打开设备做好各方面的检查,检查每个函数的返回值的良好处理
|
"当一次轮询超时后,要close该设备,并再次打开"
这个关闭和打开的操作是不是就是调用了 open和 release?还是其他的什么?
可以尝试在测试程序里面open,release,再open,write看看是否出现同样错误,如果是,那么就是你的open和release回调函数的问题了。
这个关闭和打开的操作是不是就是调用了 open和 release?还是其他的什么?
可以尝试在测试程序里面open,release,再open,write看看是否出现同样错误,如果是,那么就是你的open和release回调函数的问题了。