Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions | Variables
pgtable.h File Reference
#include <asm/fixmap.h>
#include <asm/pgtable-2level.h>
#include <asm-generic/pgtable.h>

Go to the source code of this file.

Macros

#define _PAGE_PRESENT   0x001
 
#define _PAGE_NEWPAGE   0x002
 
#define _PAGE_NEWPROT   0x004
 
#define _PAGE_RW   0x020
 
#define _PAGE_USER   0x040
 
#define _PAGE_ACCESSED   0x080
 
#define _PAGE_DIRTY   0x100
 
#define _PAGE_FILE   0x008 /* nonlinear file mapping, saved PTE; unset:swap */
 
#define _PAGE_PROTNONE
 
#define pgtable_cache_init()   do ; while (0)
 
#define VMALLOC_OFFSET   (__va_space)
 
#define VMALLOC_START   ((end_iomem + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))
 
#define PKMAP_BASE   ((FIXADDR_START - LAST_PKMAP * PAGE_SIZE) & PMD_MASK)
 
#define VMALLOC_END   (FIXADDR_START-2*PAGE_SIZE)
 
#define MODULES_VADDR   VMALLOC_START
 
#define MODULES_END   VMALLOC_END
 
#define MODULES_LEN   (MODULES_VADDR - MODULES_END)
 
#define _PAGE_TABLE   (_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED | _PAGE_DIRTY)
 
#define _KERNPG_TABLE   (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | _PAGE_DIRTY)
 
#define _PAGE_CHG_MASK   (PAGE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY)
 
#define __PAGE_KERNEL_EXEC   (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)
 
#define PAGE_NONE   __pgprot(_PAGE_PROTNONE | _PAGE_ACCESSED)
 
#define PAGE_SHARED   __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED)
 
#define PAGE_COPY   __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED)
 
#define PAGE_READONLY   __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED)
 
#define PAGE_KERNEL   __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)
 
#define PAGE_KERNEL_EXEC   __pgprot(__PAGE_KERNEL_EXEC)
 
#define io_remap_pfn_range   remap_pfn_range
 
#define __P000   PAGE_NONE
 
#define __P001   PAGE_READONLY
 
#define __P010   PAGE_COPY
 
#define __P011   PAGE_COPY
 
#define __P100   PAGE_READONLY
 
#define __P101   PAGE_READONLY
 
#define __P110   PAGE_COPY
 
#define __P111   PAGE_COPY
 
#define __S000   PAGE_NONE
 
#define __S001   PAGE_READONLY
 
#define __S010   PAGE_SHARED
 
#define __S011   PAGE_SHARED
 
#define __S100   PAGE_READONLY
 
#define __S101   PAGE_READONLY
 
#define __S110   PAGE_SHARED
 
#define __S111   PAGE_SHARED
 
#define ZERO_PAGE(vaddr)   virt_to_page(empty_zero_page)
 
#define pte_clear(mm, addr, xp)   pte_set_val(*(xp), (phys_t) 0, __pgprot(_PAGE_NEWPAGE))
 
#define pmd_none(x)   (!((unsigned long)pmd_val(x) & ~_PAGE_NEWPAGE))
 
#define pmd_bad(x)   ((pmd_val(x) & (~PAGE_MASK & ~_PAGE_USER)) != _KERNPG_TABLE)
 
#define pmd_present(x)   (pmd_val(x) & _PAGE_PRESENT)
 
#define pmd_clear(xp)   do { pmd_val(*(xp)) = _PAGE_NEWPAGE; } while (0)
 
#define pmd_newpage(x)   (pmd_val(x) & _PAGE_NEWPAGE)
 
#define pmd_mkuptodate(x)   (pmd_val(x) &= ~_PAGE_NEWPAGE)
 
#define pud_newpage(x)   (pud_val(x) & _PAGE_NEWPAGE)
 
#define pud_mkuptodate(x)   (pud_val(x) &= ~_PAGE_NEWPAGE)
 
#define pmd_page(pmd)   phys_to_page(pmd_val(pmd) & PAGE_MASK)
 
#define pte_page(x)   pfn_to_page(pte_pfn(x))
 
#define pte_present(x)   pte_get_bits(x, (_PAGE_PRESENT | _PAGE_PROTNONE))
 
#define set_pte_at(mm, addr, ptep, pteval)   set_pte(ptep,pteval)
 
#define __HAVE_ARCH_PTE_SAME
 
#define phys_to_page(phys)   pfn_to_page(phys_to_pfn(phys))
 
#define __virt_to_page(virt)   phys_to_page(__pa(virt))
 
#define page_to_phys(page)   pfn_to_phys((pfn_t) page_to_pfn(page))
 
#define virt_to_page(addr)   __virt_to_page((const unsigned long) addr)
 
#define mk_pte(page, pgprot)
 
#define pgd_index(address)   (((address) >> PGDIR_SHIFT) & (PTRS_PER_PGD-1))
 
#define pgd_offset(mm, address)   ((mm)->pgd+pgd_index(address))
 
#define pgd_offset_k(address)   pgd_offset(&init_mm, address)
 
#define pmd_page_vaddr(pmd)   ((unsigned long) __va(pmd_val(pmd) & PAGE_MASK))
 
#define pmd_index(address)   (((address) >> PMD_SHIFT) & (PTRS_PER_PMD-1))
 
#define pmd_page_vaddr(pmd)   ((unsigned long) __va(pmd_val(pmd) & PAGE_MASK))
 
#define pte_index(address)   (((address) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
 
#define pte_offset_kernel(dir, address)   ((pte_t *) pmd_page_vaddr(*(dir)) + pte_index(address))
 
#define pte_offset_map(dir, address)   ((pte_t *)page_address(pmd_page(*(dir))) + pte_index(address))
 
#define pte_unmap(pte)   do { } while (0)
 
#define update_mmu_cache(vma, address, ptep)   do ; while (0)
 
#define __swp_type(x)   (((x).val >> 5) & 0x1f)
 
#define __swp_offset(x)   ((x).val >> 11)
 
#define __swp_entry(type, offset)   ((swp_entry_t) { ((type) << 5) | ((offset) << 11) })
 
#define __pte_to_swp_entry(pte)   ((swp_entry_t) { pte_val(pte_mkuptodate(pte)) })
 
#define __swp_entry_to_pte(x)   ((pte_t) { (x).val })
 
#define kern_addr_valid(addr)   (1)
 
#define kpte_clear_flush(ptep, vaddr)
 

Functions

pte_tvirt_to_pte (struct mm_struct *mm, unsigned long addr)
 

Variables

pgd_t swapper_pg_dir [PTRS_PER_PGD]
 
unsigned longempty_zero_page
 
unsigned long end_iomem
 

Macro Definition Documentation

#define __HAVE_ARCH_PTE_SAME

Definition at line 275 of file pgtable.h.

#define __P000   PAGE_NONE

Definition at line 79 of file pgtable.h.

#define __P001   PAGE_READONLY

Definition at line 80 of file pgtable.h.

#define __P010   PAGE_COPY

Definition at line 81 of file pgtable.h.

#define __P011   PAGE_COPY

Definition at line 82 of file pgtable.h.

#define __P100   PAGE_READONLY

Definition at line 83 of file pgtable.h.

#define __P101   PAGE_READONLY

Definition at line 84 of file pgtable.h.

#define __P110   PAGE_COPY

Definition at line 85 of file pgtable.h.

#define __P111   PAGE_COPY

Definition at line 86 of file pgtable.h.

#define __PAGE_KERNEL_EXEC   (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)

Definition at line 62 of file pgtable.h.

#define __pte_to_swp_entry (   pte)    ((swp_entry_t) { pte_val(pte_mkuptodate(pte)) })

Definition at line 361 of file pgtable.h.

#define __S000   PAGE_NONE

Definition at line 88 of file pgtable.h.

#define __S001   PAGE_READONLY

Definition at line 89 of file pgtable.h.

#define __S010   PAGE_SHARED

Definition at line 90 of file pgtable.h.

#define __S011   PAGE_SHARED

Definition at line 91 of file pgtable.h.

#define __S100   PAGE_READONLY

Definition at line 92 of file pgtable.h.

#define __S101   PAGE_READONLY

Definition at line 93 of file pgtable.h.

#define __S110   PAGE_SHARED

Definition at line 94 of file pgtable.h.

#define __S111   PAGE_SHARED

Definition at line 95 of file pgtable.h.

#define __swp_entry (   type,
  offset 
)    ((swp_entry_t) { ((type) << 5) | ((offset) << 11) })

Definition at line 359 of file pgtable.h.

#define __swp_entry_to_pte (   x)    ((pte_t) { (x).val })

Definition at line 363 of file pgtable.h.

#define __swp_offset (   x)    ((x).val >> 11)

Definition at line 357 of file pgtable.h.

#define __swp_type (   x)    (((x).val >> 5) & 0x1f)

Definition at line 356 of file pgtable.h.

#define __virt_to_page (   virt)    phys_to_page(__pa(virt))

Definition at line 287 of file pgtable.h.

#define _KERNPG_TABLE   (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | _PAGE_DIRTY)

Definition at line 60 of file pgtable.h.

#define _PAGE_ACCESSED   0x080

Definition at line 18 of file pgtable.h.

#define _PAGE_CHG_MASK   (PAGE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY)

Definition at line 61 of file pgtable.h.

#define _PAGE_DIRTY   0x100

Definition at line 19 of file pgtable.h.

#define _PAGE_FILE   0x008 /* nonlinear file mapping, saved PTE; unset:swap */

Definition at line 21 of file pgtable.h.

#define _PAGE_NEWPAGE   0x002

Definition at line 14 of file pgtable.h.

#define _PAGE_NEWPROT   0x004

Definition at line 15 of file pgtable.h.

#define _PAGE_PRESENT   0x001

Definition at line 13 of file pgtable.h.

#define _PAGE_PROTNONE
Value:
0x010 /* if the user mapped it with PROT_NONE;
pte_present gives true */

Definition at line 22 of file pgtable.h.

#define _PAGE_RW   0x020

Definition at line 16 of file pgtable.h.

#define _PAGE_TABLE   (_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED | _PAGE_DIRTY)

Definition at line 59 of file pgtable.h.

#define _PAGE_USER   0x040

Definition at line 17 of file pgtable.h.

#define io_remap_pfn_range   remap_pfn_range

Definition at line 71 of file pgtable.h.

#define kern_addr_valid (   addr)    (1)

Definition at line 365 of file pgtable.h.

#define kpte_clear_flush (   ptep,
  vaddr 
)
Value:
do { \
pte_clear(&init_mm, (vaddr), (ptep)); \
__flush_tlb_one((vaddr)); \
} while (0)

Definition at line 370 of file pgtable.h.

#define mk_pte (   page,
  pgprot 
)
Value:
({ pte_t pte; \
if (pte_present(pte)) \
pte_mknewprot(pte_mknewpage(pte)); \
pte;})

Definition at line 291 of file pgtable.h.

#define MODULES_END   VMALLOC_END

Definition at line 56 of file pgtable.h.

#define MODULES_LEN   (MODULES_VADDR - MODULES_END)

Definition at line 57 of file pgtable.h.

#define MODULES_VADDR   VMALLOC_START

Definition at line 55 of file pgtable.h.

#define PAGE_COPY   __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED)

Definition at line 66 of file pgtable.h.

#define PAGE_KERNEL   __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)

Definition at line 68 of file pgtable.h.

#define PAGE_KERNEL_EXEC   __pgprot(__PAGE_KERNEL_EXEC)

Definition at line 69 of file pgtable.h.

#define PAGE_NONE   __pgprot(_PAGE_PROTNONE | _PAGE_ACCESSED)

Definition at line 64 of file pgtable.h.

#define PAGE_READONLY   __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED)

Definition at line 67 of file pgtable.h.

#define PAGE_SHARED   __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED)

Definition at line 65 of file pgtable.h.

#define page_to_phys (   page)    pfn_to_phys((pfn_t) page_to_pfn(page))

Definition at line 288 of file pgtable.h.

#define pgd_index (   address)    (((address) >> PGDIR_SHIFT) & (PTRS_PER_PGD-1))

Definition at line 311 of file pgtable.h.

#define pgd_offset (   mm,
  address 
)    ((mm)->pgd+pgd_index(address))

Definition at line 317 of file pgtable.h.

#define pgd_offset_k (   address)    pgd_offset(&init_mm, address)

Definition at line 323 of file pgtable.h.

#define pgtable_cache_init (   void)    do ; while (0)

Definition at line 35 of file pgtable.h.

#define phys_to_page (   phys)    pfn_to_page(phys_to_pfn(phys))

Definition at line 286 of file pgtable.h.

#define PKMAP_BASE   ((FIXADDR_START - LAST_PKMAP * PAGE_SIZE) & PMD_MASK)

Definition at line 49 of file pgtable.h.

#define pmd_bad (   x)    ((pmd_val(x) & (~PAGE_MASK & ~_PAGE_USER)) != _KERNPG_TABLE)

Definition at line 106 of file pgtable.h.

#define pmd_clear (   xp)    do { pmd_val(*(xp)) = _PAGE_NEWPAGE; } while (0)

Definition at line 109 of file pgtable.h.

#define pmd_index (   address)    (((address) >> PMD_SHIFT) & (PTRS_PER_PMD-1))

Definition at line 332 of file pgtable.h.

#define pmd_mkuptodate (   x)    (pmd_val(x) &= ~_PAGE_NEWPAGE)

Definition at line 112 of file pgtable.h.

#define pmd_newpage (   x)    (pmd_val(x) & _PAGE_NEWPAGE)

Definition at line 111 of file pgtable.h.

#define pmd_none (   x)    (!((unsigned long)pmd_val(x) & ~_PAGE_NEWPAGE))

Definition at line 105 of file pgtable.h.

#define pmd_page (   pmd)    phys_to_page(pmd_val(pmd) & PAGE_MASK)

Definition at line 117 of file pgtable.h.

#define pmd_page_vaddr (   pmd)    ((unsigned long) __va(pmd_val(pmd) & PAGE_MASK))

Definition at line 334 of file pgtable.h.

#define pmd_page_vaddr (   pmd)    ((unsigned long) __va(pmd_val(pmd) & PAGE_MASK))

Definition at line 334 of file pgtable.h.

#define pmd_present (   x)    (pmd_val(x) & _PAGE_PRESENT)

Definition at line 108 of file pgtable.h.

#define pte_clear (   mm,
  addr,
  xp 
)    pte_set_val(*(xp), (phys_t) 0, __pgprot(_PAGE_NEWPAGE))

Definition at line 103 of file pgtable.h.

#define pte_index (   address)    (((address) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))

Definition at line 343 of file pgtable.h.

#define pte_offset_kernel (   dir,
  address 
)    ((pte_t *) pmd_page_vaddr(*(dir)) + pte_index(address))

Definition at line 344 of file pgtable.h.

#define pte_offset_map (   dir,
  address 
)    ((pte_t *)page_address(pmd_page(*(dir))) + pte_index(address))

Definition at line 346 of file pgtable.h.

#define pte_page (   x)    pfn_to_page(pte_pfn(x))

Definition at line 119 of file pgtable.h.

#define pte_present (   x)    pte_get_bits(x, (_PAGE_PRESENT | _PAGE_PROTNONE))

Definition at line 121 of file pgtable.h.

#define pte_unmap (   pte)    do { } while (0)

Definition at line 348 of file pgtable.h.

#define pud_mkuptodate (   x)    (pud_val(x) &= ~_PAGE_NEWPAGE)

Definition at line 115 of file pgtable.h.

#define pud_newpage (   x)    (pud_val(x) & _PAGE_NEWPAGE)

Definition at line 114 of file pgtable.h.

#define set_pte_at (   mm,
  addr,
  ptep,
  pteval 
)    set_pte(ptep,pteval)

Definition at line 273 of file pgtable.h.

#define update_mmu_cache (   vma,
  address,
  ptep 
)    do ; while (0)

Definition at line 353 of file pgtable.h.

#define virt_to_page (   addr)    __virt_to_page((const unsigned long) addr)

Definition at line 289 of file pgtable.h.

#define VMALLOC_END   (FIXADDR_START-2*PAGE_SIZE)

Definition at line 53 of file pgtable.h.

#define VMALLOC_OFFSET   (__va_space)

Definition at line 47 of file pgtable.h.

#define VMALLOC_START   ((end_iomem + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))

Definition at line 48 of file pgtable.h.

#define ZERO_PAGE (   vaddr)    virt_to_page(empty_zero_page)

Definition at line 101 of file pgtable.h.

Function Documentation

pte_t* virt_to_pte ( struct mm_struct mm,
unsigned long  addr 
)

Definition at line 377 of file pgtable.c.

Variable Documentation

unsigned long* empty_zero_page

Definition at line 42 of file mmu.c.

unsigned long end_iomem

Definition at line 257 of file um_arch.c.

pgd_t swapper_pg_dir[PTRS_PER_PGD]

Definition at line 36 of file init.c.