2016-09-16 108 views
3

我正在爲嵌入式系統開發一個linux內核模塊。
該系統包含可編程邏輯(PL),需要從用戶空間進程進行訪問。爲什麼configfs不支持mmap?

  • PL可以在運行時改變。

  • 我的模塊允許進程訪問指定的hw寄存器和頁面。
    這些映射在我的模塊的configfs綁定中配置(在運行時)。

  • 每個映射都在configfs中可以訪問它的條目。

我想允許進程mmap整個頁面,以便他們能夠直接與PL通信。

但configfs不支持mmap。

  • 有沒有原因?
  • Sysfs支持mmap,所以我看不出爲什麼configfs不應該。

一個解決方案是我的CONFIGFS樹鏡像到sysfs的,
但這違背了整個理由使用CONFIGFS ...任何想法?

回答

1

configfs不是sysfs的替代品。實際上,它可以被看作是與sysfs相反。

sysfs通過文件系統接口提供了內核對象的視圖。它可以用來改變這些對象中的事物或引起對這些對象的某些操作,但並不意味着這一點。這裏的主要觀點是,在sysfs中表示的每個對象都是在內核中創建和銷燬的。內核控制着sysfs表示的生命週期,sysfs只是一個窗口。另一方面,它提供了一種通過文件系統接口創建或更改內核對象的方法。這是一個根本的區別。用戶空間進程可以在configfs內創建目錄。該操作將導致在內核中執行回調以及創建相應的內核對象。目錄中的文件將表示各種對象組件的狀態。

我懷疑由於這兩種情況下內核和用戶空間進程之間數據交換的性質,在configfs中認爲不需要mmap支持。

沒有看到您的系統的設計/體系結構,很難在您的案例中說一些明確的。從你的描述看來,sysfs可能是你需要滿足所期望的目標。所有需要訪問的對象都是從內核創建,修改和銷燬的。可以通過sysfs接口完成對模塊中現有內核結構/對象的有限設置/更改。然後再次說明,您可能希望在模塊中同時具有接口sysfsconfigfs,每個接口都用於其特定用途。沒有什麼不好,如果它讓事情變得更清潔和清晰。

+0

我認爲使用這兩種界面並不好。但是通過配置configfs以及通過sysfs訪問所有相關內容是非常有吸引力的。謝謝。 – drechsler