2009-09-18 54 views
1

我正在將應用程序/ PCI驅動程序從vxWorks移植到Linux,如果可能,我想保持相同的體系結構。當前驅動程序有2個使用消息隊列相互通信的任務(線程)。是否有內核線程之間進行通信的機制?消息隊列用於傳遞緩衝區地址和大小信息,以便任務可以使用DMA來移動大量數據。在Linux內核線程之間進行通信

+0

要明確我的意思是app/PCI驅動程序,我會添加更多詳細信息。在vxWorks中編寫的原始程序在內核級別執行所有操作。因此,設備的PCI驅動程序以及對數據執行操作的代碼,打包和發送UDP都在同一個程序中。我試圖保持相同的體系結構,因爲應用程序將停留在vxWorks中,但由於資源和時間安排問題,我們需要移植到Linux以繼續測試。 – CVAUGHN 2009-09-18 13:42:50

回答

1

我強烈建議不要在Linux上保留VxWorks體系結構。內核線程的擴散令人不悅,你的代碼永遠不會把它變成正式的內核樹。即使你不關心這些,你是否100%肯定你想用非標準的方式開發驅動程序?如果你只是擺脫這兩項任務,情況會簡單得多。順便說一句,爲什麼地球上你需要PCI驅動程序的任務開始?

+0

+1爲理智和常識。 – 2009-10-19 08:33:58

+0

感謝您的反饋。這是另一個管理層提供幾乎不可能的任務,甚至更不可能的時間表。戰鬥勝利了,我們不再這樣做了。對任務的需求是基於原始架構的。驅動程序正在將大量的數據從PCI卡移出。數據被DMA'd循環緩衝區,然後一條消息被髮送到適當的任務來處理數據,以便下一個DMA可能發生。在vxWorks中,它使得它在Linux中沒有,但他們不想改變它。 – CVAUGHN 2009-11-01 11:18:27

+0

現在,如果您絕對必須保持Linux上的某些單片架構以及使用http://femtolinux.com的VxWorks,那麼它允許以內核模式運行用戶應用程序,即以與VxWorks幾乎相同的方式 – Demiurg 2010-07-23 08:31:31

2

聽起來好像workqueue接口可能是您要做的 - 或者重量更輕,kfifo加上rwsem信號量。

+0

謝謝caf。我今天會研究這兩種機制,並讓你知道什麼對我最合適。 – CVAUGHN 2009-09-18 13:30:56

+0

kfifo&rwsem看起來像他們將工作得很好。再次感謝你。 – CVAUGHN 2009-09-18 14:29:00