英語
空閒頁面報告¶
空閒頁面報告是一種 API,裝置可以透過它註冊以接收系統當前未使用的頁面列表。 這在虛擬化的情況下非常有用,此時訪客可以使用此資料通知虛擬機器監控程式它不再使用記憶體中的某些頁面。
對於驅動程式(通常是氣球驅動程式)而言,要使用此功能,它將分配並初始化一個 page_reporting_dev_info 結構。 它將填充的結構中的欄位是用於處理散列表的“report”函式指標。 它還必須保證它可以處理每次呼叫該函式至少 PAGE_REPORTING_CAPACITY 數量的散列表條目。 呼叫 page_reporting_register 會將頁面報告介面註冊到報告框架,前提是沒有其他頁面報告裝置已註冊。
註冊後,頁面報告 API 將開始向驅動程式報告批次的頁面。 API 將在介面註冊後 2 秒開始報告頁面,並在釋放足夠高階的任何頁面後 2 秒繼續這樣做。
報告的頁面將儲存在傳遞給報告函式的散列表中,最後一個條目在條目 nent - 1 中設定了結束位。 在報告函式處理頁面的同時,分配器無法訪問這些頁面。 報告函式完成後,頁面將返回到從中獲取它們的空閒區域。
在刪除使用空閒頁面報告的驅動程式之前,有必要呼叫 page_reporting_unregister 以刪除當前正在空閒頁面報告中使用的 page_reporting_dev_info 結構。 這樣做將阻止透過該介面發出進一步的報告。 如果註冊了另一個驅動程式或同一個驅動程式,則它可能會從之前的驅動程式在報告空閒頁面方面停止的地方繼續。
Alexander Duyck,2019 年 12 月 4 日