linux – 用户空间进程和中断上下文代码之间的同步
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 用户空间进程和中断上下文代码之间的同步,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1125字,纯文字阅读大概需要2分钟。
内容图文
![linux – 用户空间进程和中断上下文代码之间的同步](/upload/InfoBanner/zyjiaocheng/965/f00d6eb2ad984482a10bd5caffaa72dd.jpg)
最近我参加了几次采访.在提出的所有内核问题中,有一个具体问题我无法找到令人信服的答案.
在用户空间进程和中断上下文功能之间共享数据时,您将如何使用不同的同步技术?我令人信服的答案是:
在中断上下文代码中:
1. do *spin_lock_irqsave*
2. access data buffer which is shared between user space app and kernel
3. do *spin_lock_irqrestore*
然后这不是令人信服的答案.我是否必须在所有数据访问实例中执行irqsave和irqrestore?
解决方法:
您无法直接将数据从中断上下文传输到用户空间上下文.在中断过程中没有进程信息,因此您不知道将数据发送到何处.您需要使用内核空间中的中间进程上下文.
现在,回答这个问题.在您的设备数据中,您将拥有一个缓冲区,您可以在其中存储来自中断上下文的数据.您需要使用自旋锁保护数据,但不使用irqsave / irqrestore部件.因为你处于中断环境中.
然后,您的设备将为用户空间提供获取此数据的方法.您可以通过char设备或netlink套接字或ioctl调用或任何其他方法来决定.当用户空间需要此数据时,您将从设备缓冲区memcpy到用户空间缓冲区.但是你将使用spin_lock_irqsave / spin_lock_irqrestore对来保护设备缓冲区,因为你不希望中断代码死锁.
当用户空间使用上面提到的方法之一(char设备读取,netlink套接字,ioctl调用,……)时,内核负责提供锁定机制,但用于用户空间和进程之间的接口.
内容总结
以上是互联网集市为您收集整理的linux – 用户空间进程和中断上下文代码之间的同步全部内容,希望文章能够帮你解决linux – 用户空间进程和中断上下文代码之间的同步所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。