2013-03-14 40 views
3

有什麼辦法創造OSX(10.8+)通過用戶空間塊設備,沒有第三方庫(FUSE等)?OSX用戶空間的設備文件

我想創建一個用戶空間工具。這個想法是用戶向該工具提供一個文件,該工具創建一個虛擬接口。無論何時寫入接口,工具都會對數據應用操作,然後寫入原始文件。無論何時讀取接口,該工具都會從原始文件中讀取並應用相反的操作。

我不一定需要塊設備。該工具需要創建某種可被視爲文件的虛擬界面,即可以將其打開並保存到其他應用程序。

我看着I/O Kit中的用戶空間程序,但似乎沒有什麼證明3,如創建一個虛擬的USB /火線/ MMC/SCSI設備似乎過高。

回答

2

我能想到的沒有進入內核空間最接近的是FIFO或命名管道 - 這實質上是一個帶有文件名的管道。不幸的是,作爲一個管道,你不能尋求等等 - 你可以在一個過程中打開FIFO並在另一個過程中寫入。您可以使用mkfifo命令行實用程序或mkfifo() C函數創建這些文件。

還有UNIX域套接字,這是類似IP套接字但同樣一個文件名,而不是一個網絡結構來識別。這些可以從兩端讀取和寫入,但再次沒有尋求。

至於實際執行的OPS功能的虛擬節點(在OSX文件的內核表示形式),我認爲你必須下降到內核。請注意,I/O套件對於創建塊設備不是必需的 - 如果BSD設備節點足夠,並且不需要硬件支持或彈出卷等,則可以簡單地創建一個節點,並提供bdevsw_add(),操作矢量作爲參數。 (對於基於I/O Kit的存儲設備,IOMediaBSDClient自動執行此操作,同時使用cdevsw_add_with_bdev()創建字符設備)另一個更精細的選項是實現您自己的文件系統。

+0

嗨,在你的回答中你提到了構建文件系統的選項。如果我只關心低層操作,就像「讀取頁面/寫入頁面/頁面輸入/頁面輸出」一樣,是否可以將標準文件系統(HFS +)掛載到設備文件('/ dev/my_device '),並享受兩個世界? – Zohar81 2018-02-13 09:21:48

+0

@ Zohar81我不明白爲什麼不是因爲VFS發生在BSD層,但我沒有嘗試過。如果你想分區表支持,你肯定需要去IOKit塊存儲設備。 – pmdj 2018-02-13 11:42:02

相關問題