mm.h File Reference

#include <linux/page.h>
#include <linux/sched.h>
#include <linux/errno.h>
#include <linux/kernel.h>

Go to the source code of this file.

Data Structures

struct  vm_area_struct
struct  vm_operations_struct

Defines

#define VERIFY_READ   0
#define VERIFY_WRITE   1
#define BAD_PAGETABLE   __bad_pagetable()
#define BAD_PAGE   __bad_page()
#define ZERO_PAGE   __zero_page()
#define MAX_SECONDARY_PAGES   20
#define read_swap_page(nr, buf)   rw_swap_page(READ,(nr),(buf))
#define write_swap_page(nr, buf)   rw_swap_page(WRITE,(nr),(buf))
#define invalidate()   __asm__ __volatile__("movl %%cr3,%%eax\n\tmovl %%eax,%%cr3": : :"ax")
#define MAP_NR(addr)   ((addr) >> PAGE_SHIFT)
#define MAP_PAGE_RESERVED   (1<<15)
#define PAGE_PRESENT   0x001
#define PAGE_RW   0x002
#define PAGE_USER   0x004
#define PAGE_PWT   0x008
 486 only - not used currently
#define PAGE_PCD   0x010
 486 only - not used currently
#define PAGE_ACCESSED   0x020
#define PAGE_DIRTY   0x040
#define PAGE_COW   0x200
 implemented in software (one of the AVL bits)
#define PAGE_PRIVATE   (PAGE_PRESENT | PAGE_RW | PAGE_USER | PAGE_ACCESSED | PAGE_COW)
#define PAGE_SHARED   (PAGE_PRESENT | PAGE_RW | PAGE_USER | PAGE_ACCESSED)
#define PAGE_COPY   (PAGE_PRESENT | PAGE_USER | PAGE_ACCESSED | PAGE_COW)
#define PAGE_READONLY   (PAGE_PRESENT | PAGE_USER | PAGE_ACCESSED)
#define PAGE_TABLE   (PAGE_PRESENT | PAGE_RW | PAGE_USER | PAGE_ACCESSED)
#define GFP_BUFFER   0x00
#define GFP_ATOMIC   0x01
#define GFP_USER   0x02
#define GFP_KERNEL   0x03
#define SHM_SWP_TYPE   0x41
 vm_ops not present page codes

Typedefs

typedef int(*) map_mergep_fnp (const struct vm_area_struct *, const struct vm_area_struct *, void *)

Functions

int __verify_write (unsigned long addr, unsigned long count)
int verify_area (int type, const void *addr, unsigned long size)
unsigned long __bad_page (void)
unsigned long __bad_pagetable (void)
unsigned long __zero_page (void)
unsigned long __get_free_page (int priority)
unsigned long get_free_page (int priority)
void free_page (unsigned long addr)
 memory.c
unsigned long put_dirty_page (struct task_struct *tsk, unsigned long page, unsigned long address)
void free_page_tables (struct task_struct *tsk)
void clear_page_tables (struct task_struct *tsk)
int copy_page_tables (struct task_struct *to)
int clone_page_tables (struct task_struct *to)
int unmap_page_range (unsigned long from, unsigned long size)
int remap_page_range (unsigned long from, unsigned long to, unsigned long size, int mask)
int zeromap_page_range (unsigned long from, unsigned long size, int mask)
void do_wp_page (unsigned long error_code, unsigned long address, struct task_struct *tsk, unsigned long user_esp)
void do_no_page (unsigned long error_code, unsigned long address, struct task_struct *tsk, unsigned long user_esp)
unsigned long paging_init (unsigned long start_mem, unsigned long end_mem)
void mem_init (unsigned long low_start_mem, unsigned long start_mem, unsigned long end_mem)
void show_mem (void)
void oom (struct task_struct *task)
void si_meminfo (struct sysinfo *val)
void * vmalloc (unsigned long size)
 vmalloc.c
void vfree (void *addr)
int vread (char *buf, char *addr, int count)
void swap_free (unsigned long page_nr)
 swap.c
unsigned long swap_duplicate (unsigned long page_nr)
void swap_in (unsigned long *table_ptr)
void si_swapinfo (struct sysinfo *val)
void rw_swap_page (int rw, unsigned long nr, char *buf)
int do_mmap (struct file *file, unsigned long addr, unsigned long len, unsigned long prot, unsigned long flags, unsigned long off)
 mmap.c
void merge_segments (struct vm_area_struct *, map_mergep_fnp, void *)
void insert_vm_struct (struct task_struct *, struct vm_area_struct *)
int ignoff_mergep (const struct vm_area_struct *, const struct vm_area_struct *, void *)
int do_munmap (unsigned long, size_t)
void shm_no_page (ulong *)

Variables

volatile short free_page_ptr
 used by malloc and tcp/ip.
int nr_swap_pages
int nr_free_pages
unsigned long free_page_list
int nr_secondary_pages
unsigned long secondary_page_list
unsigned long high_memory
unsigned short * mem_map


Define Documentation

#define BAD_PAGE   __bad_page()

Definition at line 85 of file mm.h.

#define BAD_PAGETABLE   __bad_pagetable()

Definition at line 84 of file mm.h.

#define GFP_ATOMIC   0x01

Definition at line 204 of file mm.h.

#define GFP_BUFFER   0x00

Definition at line 203 of file mm.h.

#define GFP_KERNEL   0x03

Definition at line 206 of file mm.h.

#define GFP_USER   0x02

Definition at line 205 of file mm.h.

 
#define invalidate (  )     __asm__ __volatile__("movl %%cr3,%%eax\n\tmovl %%eax,%%cr3": : :"ax")

Definition at line 178 of file mm.h.

#define MAP_NR ( addr   )     ((addr) >> PAGE_SHIFT)

Definition at line 183 of file mm.h.

#define MAP_PAGE_RESERVED   (1<<15)

Definition at line 184 of file mm.h.

#define MAX_SECONDARY_PAGES   20

Definition at line 96 of file mm.h.

#define PAGE_ACCESSED   0x020

Definition at line 193 of file mm.h.

#define PAGE_COPY   (PAGE_PRESENT | PAGE_USER | PAGE_ACCESSED | PAGE_COW)

Definition at line 199 of file mm.h.

#define PAGE_COW   0x200

implemented in software (one of the AVL bits)

Definition at line 195 of file mm.h.

#define PAGE_DIRTY   0x040

Definition at line 194 of file mm.h.

#define PAGE_PCD   0x010

486 only - not used currently

Definition at line 192 of file mm.h.

#define PAGE_PRESENT   0x001

Definition at line 188 of file mm.h.

#define PAGE_PRIVATE   (PAGE_PRESENT | PAGE_RW | PAGE_USER | PAGE_ACCESSED | PAGE_COW)

Definition at line 197 of file mm.h.

#define PAGE_PWT   0x008

486 only - not used currently

Definition at line 191 of file mm.h.

#define PAGE_READONLY   (PAGE_PRESENT | PAGE_USER | PAGE_ACCESSED)

Definition at line 200 of file mm.h.

#define PAGE_RW   0x002

Definition at line 189 of file mm.h.

#define PAGE_SHARED   (PAGE_PRESENT | PAGE_RW | PAGE_USER | PAGE_ACCESSED)

Definition at line 198 of file mm.h.

#define PAGE_TABLE   (PAGE_PRESENT | PAGE_RW | PAGE_USER | PAGE_ACCESSED)

Definition at line 201 of file mm.h.

#define PAGE_USER   0x004

Definition at line 190 of file mm.h.

#define read_swap_page ( nr,
buf   )     rw_swap_page(READ,(nr),(buf))

Definition at line 173 of file mm.h.

#define SHM_SWP_TYPE   0x41

vm_ops not present page codes

Definition at line 210 of file mm.h.

#define VERIFY_READ   0

Definition at line 9 of file mm.h.

Referenced by verify_area().

#define VERIFY_WRITE   1

Definition at line 10 of file mm.h.

#define write_swap_page ( nr,
buf   )     rw_swap_page(WRITE,(nr),(buf))

Definition at line 175 of file mm.h.

#define ZERO_PAGE   __zero_page()

Definition at line 86 of file mm.h.


Typedef Documentation

typedef int(*) map_mergep_fnp(const struct vm_area_struct *, const struct vm_area_struct *, void *)

Definition at line 165 of file mm.h.


Function Documentation

unsigned long __bad_page ( void   ) 

unsigned long __bad_pagetable ( void   ) 

unsigned long __get_free_page ( int  priority  ) 

This is timing-critical - most of the time in getting a new page goes to clearing the page. If you want a page without the clearing overhead, just use __get_free_page() directly..

Referenced by get_free_page().

int __verify_write ( unsigned long  addr,
unsigned long  count 
)

Referenced by verify_area().

unsigned long __zero_page ( void   ) 

void clear_page_tables ( struct task_struct tsk  ) 

int clone_page_tables ( struct task_struct to  ) 

int copy_page_tables ( struct task_struct to  ) 

int do_mmap ( struct file file,
unsigned long  addr,
unsigned long  len,
unsigned long  prot,
unsigned long  flags,
unsigned long  off 
)

mmap.c

int do_munmap ( unsigned  long,
size_t   
)

void do_no_page ( unsigned long  error_code,
unsigned long  address,
struct task_struct tsk,
unsigned long  user_esp 
)

void do_wp_page ( unsigned long  error_code,
unsigned long  address,
struct task_struct tsk,
unsigned long  user_esp 
)

void free_page ( unsigned long  addr  ) 

memory.c

void free_page_tables ( struct task_struct tsk  ) 

unsigned long get_free_page ( int  priority  )  [inline]

Definition at line 108 of file mm.h.

References __get_free_page().

int ignoff_mergep ( const struct vm_area_struct ,
const struct vm_area_struct ,
void *   
)

void insert_vm_struct ( struct task_struct ,
struct vm_area_struct  
)

void mem_init ( unsigned long  low_start_mem,
unsigned long  start_mem,
unsigned long  end_mem 
)

void merge_segments ( struct vm_area_struct ,
map_mergep_fnp  ,
void *   
)

void oom ( struct task_struct task  ) 

unsigned long paging_init ( unsigned long  start_mem,
unsigned long  end_mem 
)

unsigned long put_dirty_page ( struct task_struct tsk,
unsigned long  page,
unsigned long  address 
)

int remap_page_range ( unsigned long  from,
unsigned long  to,
unsigned long  size,
int  mask 
)

void rw_swap_page ( int  rw,
unsigned long  nr,
char *  buf 
)

void shm_no_page ( ulong  ) 

void show_mem ( void   ) 

void si_meminfo ( struct sysinfo val  ) 

void si_swapinfo ( struct sysinfo val  ) 

unsigned long swap_duplicate ( unsigned long  page_nr  ) 

void swap_free ( unsigned long  page_nr  ) 

swap.c

void swap_in ( unsigned long *  table_ptr  ) 

int unmap_page_range ( unsigned long  from,
unsigned long  size 
)

int verify_area ( int  type,
const void *  addr,
unsigned long  size 
) [inline]

Definition at line 14 of file mm.h.

References __verify_write(), EFAULT, TASK_SIZE, VERIFY_READ, and wp_works_ok.

void vfree ( void *  addr  ) 

void* vmalloc ( unsigned long  size  ) 

vmalloc.c

int vread ( char *  buf,
char *  addr,
int  count 
)

int zeromap_page_range ( unsigned long  from,
unsigned long  size,
int  mask 
)


Variable Documentation

unsigned long free_page_list

volatile short free_page_ptr

used by malloc and tcp/ip.

unsigned long high_memory

unsigned short* mem_map

int nr_free_pages

int nr_secondary_pages

int nr_swap_pages

unsigned long secondary_page_list


Generated on Mon May 1 21:47:01 2006 for KernelAPI by  doxygen 1.4.6-5