/* * An entry is removed from the page table, decrement the counters for that page * verify that it is of correct type and counters do not become negative.
*/ staticvoid page_table_check_clear(unsignedlong pfn, unsignedlong pgcnt)
{ struct page_ext_iter iter; struct page_ext *page_ext; struct page *page; bool anon;
/* * A new entry is added to the page table, increment the counters for that page * verify that it is of correct type and is not being mapped with a different * type to a different process.
*/ staticvoid page_table_check_set(unsignedlong pfn, unsignedlong pgcnt, bool rw)
{ struct page_ext_iter iter; struct page_ext *page_ext; struct page *page; bool anon;
/* * page is on free list, or is being allocated, verify that counters are zeroes * crash if they are not.
*/ void __page_table_check_zero(struct page *page, unsignedint order)
{ struct page_ext_iter iter; struct page_ext *page_ext;
for (i = 0; i < nr; i++)
__page_table_check_pte_clear(mm, ptep_get(ptep + i)); if (pte_user_accessible_page(pte))
page_table_check_set(pte_pfn(pte), nr, pte_write(pte));
}
EXPORT_SYMBOL(__page_table_check_ptes_set);
if (WARN_ON(!ptep)) return; for (i = 0; i < PTRS_PER_PTE; i++) {
__page_table_check_pte_clear(mm, ptep_get(ptep));
addr += PAGE_SIZE;
ptep++;
}
pte_unmap(ptep - PTRS_PER_PTE);
}
}
Messung V0.5
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.11Bemerkung:
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.