2010-09-17 26 views
1

我是Linux驅動程序的新手,併爲硬件寫入字符驅動程序。Linux驅動程序 - 如何防止中斷

當驅動程序功能(例如ioctl)執行時,防止中斷(軟件/硬件)干擾的確切方法是什麼?

感謝,

回答

2

您的意思是禁止所有中斷的系統?這實際上並不是一個好主意。

如果你有一段代碼,並且你想確保一個意外的中斷不會出現,請查看spin_lock_irqsave()。這將在本地禁用中斷。完成後,可以使用spin_lock_irqrestore()。

如果您只關心更新變量,您可能會考慮將其設爲原子(atomic_t)。

最後,如果您只是想在驅動程序執行某種功能時禁用char硬件的中斷,那將取決於硬件。例如,對於LSI 1068E,您必須將0xFFFFFFFF寫入IntMask寄存器。您也可以通過在該中斷線上使用disable_irq()來讓內核禁用中斷線,但這可能不是您想要的。

+0

集成電路,這意味着我需要添加的是一個spin_lock 謝謝 – Pui 2010-09-18 21:17:39