2012-02-17 136 views
1

我開發了用於CD設備的Linux塊設備驅動程序。該驅動程序運行良好,但現在有一個要求它應該運行在SMP系統上。當我在SMP系統上進行測試時,發現驅動程序的性能下降。與單核系統相比,DATA CD的比特率大幅下降。所以我明白我的驅動程序需要進行修改才能使其安全。用於SMP系統的Linux設備驅動程序

在我的司機,我已經使用: 1.內核線程 2.互斥 3.信號燈 4.完井

我的SMP系統是:的ARM Cortex-A9雙核600MHz的

有人可以告訴我在做這個移植的過程中,我應該記住哪些因素?

+0

查看'Documentation/lockstat.txt'文件,這可能會有所幫助。 (不打算作爲一個完整的答案,如何編寫體面的SMP-capable內核代碼,但它可能會幫助你發現不正確的鎖使用..) – sarnold 2012-02-17 09:28:49

回答

1

通常對於SMP系統,共享資源(I/O資源)和全局變量必須以這樣的方式處理,即同時執行任務不能覆蓋,爲此可以使用spin_locks,semaphores等來破壞數據。確保一次只有一個內核將在該塊/任務上執行操作。這是邏輯實現,您必須識別設備驅動程序(如ISR)中的潛在風險區域,讀寫操作,並且必須識別設備驅動程序的多個入口點和驅動程序中的中心任務(驅動程序)走。

相關問題