Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions
tlb.h File Reference
#include <linux/swap.h>
#include <asm/pgalloc.h>
#include <asm/tlbflush.h>

Go to the source code of this file.

Data Structures

struct  mmu_gather_batch
 
struct  mmu_gather
 

Macros

#define MMU_GATHER_BUNDLE   8
 
#define MAX_GATHER_BATCH   ((PAGE_SIZE - sizeof(struct mmu_gather_batch)) / sizeof(void *))
 
#define HAVE_GENERIC_MMU_GATHER
 
#define tlb_remove_tlb_entry(tlb, ptep, address)
 
#define __tlb_remove_pmd_tlb_entry(tlb, pmdp, address)   do {} while (0)
 
#define tlb_remove_pmd_tlb_entry(tlb, pmdp, address)
 
#define pte_free_tlb(tlb, ptep, address)
 
#define pud_free_tlb(tlb, pudp, address)
 
#define pmd_free_tlb(tlb, pmdp, address)
 
#define tlb_migrate_finish(mm)   do {} while (0)
 

Functions

void tlb_gather_mmu (struct mmu_gather *tlb, struct mm_struct *mm, bool fullmm)
 
void tlb_flush_mmu (struct mmu_gather *tlb)
 
void tlb_finish_mmu (struct mmu_gather *tlb, unsigned long start, unsigned long end)
 
int __tlb_remove_page (struct mmu_gather *tlb, struct page *page)
 

Macro Definition Documentation

#define __tlb_remove_pmd_tlb_entry (   tlb,
  pmdp,
  address 
)    do {} while (0)

tlb_remove_pmd_tlb_entry - remember a pmd mapping for later tlb invalidation This is a nop so far, because only x86 needs it.

Definition at line 150 of file tlb.h.

#define HAVE_GENERIC_MMU_GATHER

Definition at line 101 of file tlb.h.

#define MAX_GATHER_BATCH   ((PAGE_SIZE - sizeof(struct mmu_gather_batch)) / sizeof(void *))

Definition at line 78 of file tlb.h.

#define MMU_GATHER_BUNDLE   8

Definition at line 69 of file tlb.h.

#define pmd_free_tlb (   tlb,
  pmdp,
  address 
)
Value:
do { \
tlb->need_flush = 1; \
__pmd_free_tlb(tlb, pmdp, address); \
} while (0)

Definition at line 173 of file tlb.h.

#define pte_free_tlb (   tlb,
  ptep,
  address 
)
Value:
do { \
tlb->need_flush = 1; \
__pte_free_tlb(tlb, ptep, address); \
} while (0)

Definition at line 159 of file tlb.h.

#define pud_free_tlb (   tlb,
  pudp,
  address 
)
Value:
do { \
tlb->need_flush = 1; \
__pud_free_tlb(tlb, pudp, address); \
} while (0)

Definition at line 166 of file tlb.h.

#define tlb_migrate_finish (   mm)    do {} while (0)

Definition at line 179 of file tlb.h.

#define tlb_remove_pmd_tlb_entry (   tlb,
  pmdp,
  address 
)
Value:
do { \
tlb->need_flush = 1; \
__tlb_remove_pmd_tlb_entry(tlb, pmdp, address); \
} while (0)

Definition at line 153 of file tlb.h.

#define tlb_remove_tlb_entry (   tlb,
  ptep,
  address 
)
Value:
do { \
tlb->need_flush = 1; \
__tlb_remove_tlb_entry(tlb, ptep, address); \
} while (0)

tlb_remove_tlb_entry - remember a pte unmapping for later tlb invalidation.

Record the fact that pte's were really umapped in ->need_flush, so we can later optimise away the tlb invalidate. This helps when userspace is unmapping already-unmapped pages, which happens quite a lot.

Definition at line 139 of file tlb.h.

Function Documentation

int __tlb_remove_page ( struct mmu_gather tlb,
struct page page 
)
void tlb_finish_mmu ( struct mmu_gather tlb,
unsigned long  start,
unsigned long  end 
)
void tlb_flush_mmu ( struct mmu_gather tlb)
void tlb_gather_mmu ( struct mmu_gather tlb,
struct mm_struct mm,
bool  fullmm 
)