#ifndef __ASSEMBLY__ /* * Functions to change memory attributes.
*/ #ifdef CONFIG_MMU int set_memory_ro(unsignedlong addr, int numpages); int set_memory_rw(unsignedlong addr, int numpages); int set_memory_x(unsignedlong addr, int numpages); int set_memory_nx(unsignedlong addr, int numpages); int set_memory_rw_nx(unsignedlong addr, int numpages); static __always_inline int set_kernel_memory(char *startp, char *endp, int (*set_memory)(unsignedlong start, int num_pages))
{ unsignedlong start = (unsignedlong)startp; unsignedlong end = (unsignedlong)endp; int num_pages = PAGE_ALIGN(end - start) >> PAGE_SHIFT;
return set_memory(start, num_pages);
} #else staticinlineint set_memory_ro(unsignedlong addr, int numpages) { return 0; } staticinlineint set_memory_rw(unsignedlong addr, int numpages) { return 0; } staticinlineint set_memory_x(unsignedlong addr, int numpages) { return 0; } staticinlineint set_memory_nx(unsignedlong addr, int numpages) { return 0; } staticinlineint set_memory_rw_nx(unsignedlong addr, int numpages) { return 0; } staticinlineint set_kernel_memory(char *startp, char *endp, int (*set_memory)(unsignedlong start, int num_pages))
{ return 0;
} #endif
int set_direct_map_invalid_noflush(struct page *page); int set_direct_map_default_noflush(struct page *page); int set_direct_map_valid_noflush(struct page *page, unsigned nr, bool valid); bool kernel_page_present(struct page *page);
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.