我有一個Windows設備驅動程序,我想移植到Linux。Linux驅動程序 - 與用戶空間共享一個WaitHandle(-like)
我們的用戶空間應用程序通常需要等待驅動程序事件。下面是我們在Windows上使用的機制:
- 應用程序創建的WaitHandle
- 應用程序後,這WaitHandle的給司機通過ioctl
- 驅動程序可以使用ObReferenceObjectByHandle函數訪問該手柄和與KeSetEvent函數設置
我這個喜歡:
- 的WaitHandle的CA n來自任何地方(可以是AutoReset或ManualReset,可以是.Net WaitHandle等)
- 該進程不必使一個ioctl進入睡眠狀態,但可以調用通常的WaitForSingleObject。
我想在我的Linux驅動程序中保持相同的體系結構。
有誰知道我怎麼能在Linux上得到相同的行爲?
您是否考慮過http://en.wikipedia.org/wiki/Netlink?我相信你應該重新設計你的Linux驅動程序,而不是將Windows驅動程序移植到Linux上! –
這似乎有點過於複雜!我只想要一個等待隊列。實際上,98%的驅動程序是獨立於操作系統的C代碼,我需要從一個操作系統調整到另一個操作系統的幾個基本系統調用... – Julien
然後,大部分代碼(例如您的等待隊列)位於用戶內部 - 空間守護進程。儘量減少內核部分! –