|
Linux Kernel
3.7.1
|
#include <linux/sched.h>#include <linux/kernel.h>#include <linux/errno.h>#include <linux/mm.h>#include <linux/swap.h>#include <linux/highmem.h>#include <linux/slab.h>#include <linux/pagemap.h>#include <linux/spinlock.h>#include <linux/cpumask.h>#include <linux/module.h>#include <linux/io.h>#include <linux/vmalloc.h>#include <linux/smp.h>#include <asm/pgtable.h>#include <asm/pgalloc.h>#include <asm/fixmap.h>#include <asm/tlb.h>#include <asm/tlbflush.h>#include <asm/homecache.h>Go to the source code of this file.
Macros | |
| #define | K(x) ((x) << (PAGE_SHIFT-10)) |
| #define | KERNEL_PGD_INDEX_START pgd_index(PAGE_OFFSET) |
| #define | KERNEL_PGD_PTRS (PTRS_PER_PGD - KERNEL_PGD_INDEX_START) |
| #define | L2_USER_PGTABLE_PAGES (1 << L2_USER_PGTABLE_ORDER) |
| #define K | ( | x | ) | ((x) << (PAGE_SHIFT-10)) |
| #define KERNEL_PGD_INDEX_START pgd_index(PAGE_OFFSET) |
| #define KERNEL_PGD_PTRS (PTRS_PER_PGD - KERNEL_PGD_INDEX_START) |
| #define L2_USER_PGTABLE_PAGES (1 << L2_USER_PGTABLE_ORDER) |
| void __set_fixmap | ( | enum fixed_addresses | idx, |
| unsigned long | phys, | ||
| pgprot_t | flags | ||
| ) |
| DEFINE_SPINLOCK | ( | pgd_lock | ) |
| EXPORT_SYMBOL | ( | va_to_cpa_and_pte | ) |
| LIST_HEAD | ( | pgd_list | ) |
| int ptep_test_and_clear_young | ( | struct vm_area_struct * | vma, |
| unsigned long | addr, | ||
| pte_t * | ptep | ||
| ) |
shatter_huge_page() - ensure a given address is mapped by a small page.
This function converts a huge PTE mapping kernel LOWMEM into a bunch of small PTEs with the same caching. No cache flush required, but we must do a global TLB flush.
Any caller that wishes to modify a kernel mapping that might have been made with a huge page should call this function, since doing so properly avoids race conditions with installing the newly-shattered page and then flushing all the TLB entries.
: Address at which to shatter any existing huge page.
1.8.2