[英]Mocking a memory mapped device in C in userspace
我希望在C中模擬一個內存映射設備,以便對設備包裝庫進行有效的單元測試(在Linux中)。
現在,我知道我可以mmap
文件描述符到用戶空間可能在原則上表示該裝置的模擬。
所以,AFAICT,我的問題歸結為:在用戶空間中是否有可能創建一個mmap
可以作用的文件描述符,讀寫是由合適的回調處理的?
或者,也許這是一個已解決的問題,並且有一個已知的內核驅動程序可以掛鈎?
考慮到它是一個Linux系統,您可以實現一個非常簡單的FUSE文件系統,其中只有一個文件。 內核可以從那里處理它。
主要問題是你可以期望內核不會刷新每次寫入。 但是,有一個msync()
調用來刷新所有未完成的寫入,但是你的系統測試不會調用它。 但是,我認為您可以使用O_DIRECT | O_DSYNC
打開文件描述符 O_DIRECT | O_DSYNC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.