2015-02-06 112 views
3

我是內核模塊編程的初學者。並且在線使用資源(尤其是this tutorial)我已經設法編寫了我的大部分驅動程序。Linux內核驅動程序模塊:使用單個驅動程序處理多個設備文件

該驅動程序基本上是一個字符設備,它將不同區域的SRAM映射到單獨的文件。你可以看到實際的代碼here

現在我能夠在/dev下成功創建4個文件,讀取/寫入第一個文件也可以,但其他3個文件不起作用。我使用次要號碼來區分這些文件並相應地分配起始地址。

問題:

  1. 爲什麼其他文件不工作?
  2. 有沒有更好的方法來實現模塊?

感謝。

回答

4

線141, 「如果(cdev_add(& c_dev,首先,1)== - 1)」,僅 施加的file_operations結構到第一設備。 您應該使用的,而不是1這裏

在另一方面MAXDEVICES,初始化代碼是凌亂的(更好地使用goto,而不是重複的,可以失敗,每一個功能的清理),並在某些情況下,之前的任何明顯的錯誤(device_destroy()設備已創建,如果創建的設備不是第一個,則資源泄漏。整個文件不符合內核編碼慣例。

+0

我記住了你的觀點。由於我在玩這部分代碼,因此設備銷燬上升。感謝您的幫助和提示。 – Prateek 2015-02-09 21:39:05

相關問題