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.