Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions | Variables
huge_memory.c File Reference
#include <linux/mm.h>
#include <linux/sched.h>
#include <linux/highmem.h>
#include <linux/hugetlb.h>
#include <linux/mmu_notifier.h>
#include <linux/rmap.h>
#include <linux/swap.h>
#include <linux/mm_inline.h>
#include <linux/kthread.h>
#include <linux/khugepaged.h>
#include <linux/freezer.h>
#include <linux/mman.h>
#include <linux/pagemap.h>
#include <asm/tlb.h>
#include <asm/pgalloc.h>
#include "internal.h"

Go to the source code of this file.

Data Structures

struct  mm_slot
 
struct  khugepaged_scan
 

Macros

#define MM_SLOTS_HASH_HEADS   1024
 
#define VM_NO_THP   (VM_SPECIAL|VM_MIXEDMAP|VM_HUGETLB|VM_SHARED|VM_MAYSHARE)
 

Functions

 late_initcall (set_recommended_min_free_kbytes)
 
 module_init (hugepage_init)
 
 __setup ("transparent_hugepage=", setup_transparent_hugepage)
 
int do_huge_pmd_anonymous_page (struct mm_struct *mm, struct vm_area_struct *vma, unsigned long address, pmd_t *pmd, unsigned int flags)
 
int copy_huge_pmd (struct mm_struct *dst_mm, struct mm_struct *src_mm, pmd_t *dst_pmd, pmd_t *src_pmd, unsigned long addr, struct vm_area_struct *vma)
 
int do_huge_pmd_wp_page (struct mm_struct *mm, struct vm_area_struct *vma, unsigned long address, pmd_t *pmd, pmd_t orig_pmd)
 
struct pagefollow_trans_huge_pmd (struct vm_area_struct *vma, unsigned long addr, pmd_t *pmd, unsigned int flags)
 
int zap_huge_pmd (struct mmu_gather *tlb, struct vm_area_struct *vma, pmd_t *pmd, unsigned long addr)
 
int mincore_huge_pmd (struct vm_area_struct *vma, pmd_t *pmd, unsigned long addr, unsigned long end, unsigned char *vec)
 
int move_huge_pmd (struct vm_area_struct *vma, struct vm_area_struct *new_vma, unsigned long old_addr, unsigned long new_addr, unsigned long old_end, pmd_t *old_pmd, pmd_t *new_pmd)
 
int change_huge_pmd (struct vm_area_struct *vma, pmd_t *pmd, unsigned long addr, pgprot_t newprot)
 
int __pmd_trans_huge_lock (pmd_t *pmd, struct vm_area_struct *vma)
 
pmd_tpage_check_address_pmd (struct page *page, struct mm_struct *mm, unsigned long address, enum page_check_address_pmd_flag flag)
 
int split_huge_page (struct page *page)
 
int hugepage_madvise (struct vm_area_struct *vma, unsigned long *vm_flags, int advice)
 
int __khugepaged_enter (struct mm_struct *mm)
 
int khugepaged_enter_vma_merge (struct vm_area_struct *vma)
 
void __khugepaged_exit (struct mm_struct *mm)
 
void __split_huge_page_pmd (struct mm_struct *mm, pmd_t *pmd)
 
void __vma_adjust_trans_huge (struct vm_area_struct *vma, unsigned long start, unsigned long end, long adjust_next)
 

Variables

unsigned long
transparent_hugepage_flags 
__read_mostly
 

Macro Definition Documentation

#define MM_SLOTS_HASH_HEADS   1024

Definition at line 65 of file huge_memory.c.

#define VM_NO_THP   (VM_SPECIAL|VM_MIXEDMAP|VM_HUGETLB|VM_SHARED|VM_MAYSHARE)

Definition at line 1480 of file huge_memory.c.

Function Documentation

int __khugepaged_enter ( struct mm_struct mm)

Definition at line 1602 of file huge_memory.c.

void __khugepaged_exit ( struct mm_struct mm)

Definition at line 1655 of file huge_memory.c.

int __pmd_trans_huge_lock ( pmd_t pmd,
struct vm_area_struct vma 
)

Definition at line 1126 of file huge_memory.c.

__setup ( )
void __split_huge_page_pmd ( struct mm_struct mm,
pmd_t pmd 
)

Definition at line 2359 of file huge_memory.c.

void __vma_adjust_trans_huge ( struct vm_area_struct vma,
unsigned long  start,
unsigned long  end,
long  adjust_next 
)

Definition at line 2406 of file huge_memory.c.

int change_huge_pmd ( struct vm_area_struct vma,
pmd_t pmd,
unsigned long  addr,
pgprot_t  newprot 
)

Definition at line 1101 of file huge_memory.c.

int copy_huge_pmd ( struct mm_struct dst_mm,
struct mm_struct src_mm,
pmd_t dst_pmd,
pmd_t src_pmd,
unsigned long  addr,
struct vm_area_struct vma 
)

Definition at line 728 of file huge_memory.c.

int do_huge_pmd_anonymous_page ( struct mm_struct mm,
struct vm_area_struct vma,
unsigned long  address,
pmd_t pmd,
unsigned int  flags 
)

Definition at line 674 of file huge_memory.c.

int do_huge_pmd_wp_page ( struct mm_struct mm,
struct vm_area_struct vma,
unsigned long  address,
pmd_t pmd,
pmd_t  orig_pmd 
)

Definition at line 882 of file huge_memory.c.

struct page* follow_trans_huge_pmd ( struct vm_area_struct vma,
unsigned long  addr,
pmd_t pmd,
unsigned int  flags 
)
read

Definition at line 975 of file huge_memory.c.

int hugepage_madvise ( struct vm_area_struct vma,
unsigned long vm_flags,
int  advice 
)

Definition at line 1482 of file huge_memory.c.

int khugepaged_enter_vma_merge ( struct vm_area_struct vma)

Definition at line 1635 of file huge_memory.c.

late_initcall ( set_recommended_min_free_kbytes  )
int mincore_huge_pmd ( struct vm_area_struct vma,
pmd_t pmd,
unsigned long  addr,
unsigned long  end,
unsigned char vec 
)

Definition at line 1046 of file huge_memory.c.

module_init ( hugepage_init  )

Definition at line 568 of file huge_memory.c.

int move_huge_pmd ( struct vm_area_struct vma,
struct vm_area_struct new_vma,
unsigned long  old_addr,
unsigned long  new_addr,
unsigned long  old_end,
pmd_t old_pmd,
pmd_t new_pmd 
)

Definition at line 1065 of file huge_memory.c.

pmd_t* page_check_address_pmd ( struct page page,
struct mm_struct mm,
unsigned long  address,
enum page_check_address_pmd_flag  flag 
)

Definition at line 1144 of file huge_memory.c.

int split_huge_page ( struct page page)

Definition at line 1456 of file huge_memory.c.

int zap_huge_pmd ( struct mmu_gather tlb,
struct vm_area_struct vma,
pmd_t pmd,
unsigned long  addr 
)

Definition at line 1020 of file huge_memory.c.

Variable Documentation

struct kmem_cache* mm_slot_cache __read_mostly
Initial value:

Definition at line 32 of file huge_memory.c.