[英]Memory Mapping in Linux Kernel - use of vamlloc() and kmalloc()
[英]Memory mapping data files in Linux kernel code
這是我的問題:我想從Linux內核空間中運行的代碼中映射數據文件的一部分。 我想稍后撤消相同的內存映射,同樣也要撤消在Linux內核空間中運行的代碼。 我該如何做?它們與在用戶空間中使用mmap(2)/ munmap(2)有何不同?
我正在嘗試僅在沒有用戶進程的內核空間中執行此操作。
我瀏覽過Web搜索和在線Linux內核書籍,包括Bovet和Cesati撰寫的“了解Linux內核”。 一本好書,但沒有回答我的問題。
不建議直接訪問文件系統以在內核中執行任何操作。 接近這一點,最好的辦法是open
和mmap
在用戶空間文件,並通過所產生的用戶虛擬地址到內核空間。 在內核空間中,您需要設置內核虛擬地址,這些虛擬地址指向用戶空間地址指向的相同物理內存。
這個SO問題給出了有關如何實現第二部分的代碼示例: https : //stackoverflow.com/a/13745255/639069
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.