繁体   English   中英

我可以在Linux下从用户程序同时打开自己的设备驱动程序两次吗?

[英]May I open my own device driver twice simultaneously from a user program under Linux?

我读过某个地方,两次打开同一文件具有不确定的语义,应避免使用。 在我的情况下,我想多次打开自己的设备,将多个文件描述符与该设备关联。 我设备的文件操作都是安全的。 Linux在系统调用open()和调用已注册文件操作.open()的点之间是否存在某些不安全的地方?

最好两次打开相同的设备文件,只要您的驱动程序可以。 如果内核中没有安全隐患,那么没有隐藏的隐患。

例如,某些视频应用程序使用一个过程进行显示或捕获,而另一个则打开设备文件来处理控件。

如果驱动程序不支持多次打开,则在第二次打开时它将返回错误。

如果驱动程序允许您以同一过程打开设备两次。 同步是驱动程序的责任。

但是,例如,如果要以特权用户身份打开原始磁盘设备,则需要确保在处理过程中不会破坏自己的数据。

在有意义的情况下,两次打开同一文件具有明确定义的语义。 如果所有进程都正在执行读/写操作,则它们仍需要某种形式的同步,否则该文件很可能最终会充满垃圾。

对于设备驱动程序,多次打开的语义完全取决于该驱动程序-一些驱动程序禁止它,在其他驱动程序中它可以正常工作(例如,考虑/ dev / null)。 在某些驱动程序中,它具有非常特殊的含义(例如,声卡可能会在多个应用程序之间混合声音输出)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM