root/include/linux/mm.h

/* [previous][next][first][last][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. __bad_page
  2. __bad_pagetable

   1 #ifndef _LINUX_MM_H
   2 #define _LINUX_MM_H
   3 
   4 #define PAGE_SIZE 4096
   5 #define PAGE_SHIFT 12
   6 
   7 #include <linux/fs.h>
   8 #include <linux/kernel.h>
   9 
  10 /*
  11  * BAD_PAGE is the page that is used for page faults when linux
  12  * is out-of-memory. Older versions of linux just did a
  13  * do_exit(), but using this instead means there is less risk
  14  * for a process dying in kernel mode, possibly leaving a inode
  15  * unused etc..
  16  *
  17  * BAD_PAGETABLE is the accompanying page-table: it is initialized
  18  * to point to BAD_PAGE entries.
  19  */
  20 extern unsigned long inline __bad_page(void)
     /* [previous][next][first][last][top][bottom][index][help] */
  21 {
  22         extern char empty_bad_page[PAGE_SIZE];
  23 
  24         __asm__ __volatile__("cld ; rep ; stosl"
  25                 ::"a" (0),
  26                   "D" ((long) empty_bad_page),
  27                   "c" (1024)
  28                 :"di","cx");
  29         return (unsigned long) empty_bad_page;
  30 }
  31 #define BAD_PAGE __bad_page()
  32 
  33 extern unsigned long inline __bad_pagetable(void)
     /* [previous][next][first][last][top][bottom][index][help] */
  34 {
  35         extern char empty_bad_page_table[PAGE_SIZE];
  36 
  37         __asm__ __volatile__("cld ; rep ; stosl"
  38                 ::"a" (7+BAD_PAGE),
  39                   "D" ((long) empty_bad_page_table),
  40                   "c" (1024)
  41                 :"di","cx");
  42         return (unsigned long) empty_bad_page_table;
  43 }
  44 #define BAD_PAGETABLE __bad_pagetable()
  45 
  46 extern volatile short free_page_ptr; /* used by malloc and tcp/ip. */
  47 
  48 extern int nr_free_pages;
  49 extern unsigned long free_page_list;
  50 extern int nr_secondary_pages;
  51 extern unsigned long secondary_page_list;
  52 
  53 #define MAX_SECONDARY_PAGES 10
  54 
  55 extern void rw_swap_page(int rw, unsigned int nr, char * buf);
  56 
  57 #define read_swap_page(nr,buf) \
  58         rw_swap_page(READ,(nr),(buf))
  59 #define write_swap_page(nr,buf) \
  60         rw_swap_page(WRITE,(nr),(buf))
  61 
  62 /* memory.c */
  63         
  64 extern unsigned long get_free_page(int priority);
  65 extern unsigned long put_dirty_page(struct task_struct * tsk,unsigned long page,
  66         unsigned long address);
  67 extern void free_page(unsigned long addr);
  68 extern void free_page_tables(struct task_struct * tsk);
  69 extern void clear_page_tables(struct task_struct * tsk);
  70 extern int copy_page_tables(struct task_struct * new);
  71 extern int unmap_page_range(unsigned long from, unsigned long size);
  72 extern int remap_page_range(unsigned long from, unsigned long to, unsigned long size,
  73          int permiss);
  74 extern void write_verify(unsigned long address);
  75 
  76 extern void do_wp_page(unsigned long error_code, unsigned long address,
  77         struct task_struct *tsk, unsigned long user_esp);
  78 extern void do_no_page(unsigned long error_code, unsigned long address,
  79         struct task_struct *tsk, unsigned long user_esp);
  80 
  81 extern void mem_init(unsigned long low_start_mem,
  82                      unsigned long start_mem, unsigned long end_mem);
  83 extern void show_mem(void);
  84 extern void do_page_fault(unsigned long *esp, unsigned long error_code);
  85 extern void oom(struct task_struct * task);
  86 extern void malloc_grab_pages(void);
  87 
  88 /* swap.c */
  89 
  90 extern void swap_free(unsigned int page_nr);
  91 extern void swap_duplicate(unsigned int page_nr);
  92 extern void swap_in(unsigned long *table_ptr);
  93 
  94 #define invalidate() \
  95 __asm__ __volatile__("movl %%cr3,%%eax\n\tmovl %%eax,%%cr3":::"ax")
  96 
  97 extern unsigned long high_memory;
  98 
  99 #define MAP_NR(addr) ((addr) >> PAGE_SHIFT)
 100 #define MAP_PAGE_RESERVED (1<<15)
 101 #define USED 100
 102 
 103 extern unsigned short * mem_map;
 104 
 105 #define PAGE_DIRTY      0x40
 106 #define PAGE_ACCESSED   0x20
 107 #define PAGE_USER       0x04
 108 #define PAGE_RW         0x02
 109 #define PAGE_PRESENT    0x01
 110 
 111 #define GFP_BUFFER      0x00
 112 #define GFP_ATOMIC      0x01
 113 #define GFP_USER        0x02
 114 #define GFP_KERNEL      0x03
 115 
 116 #endif

/* [previous][next][first][last][top][bottom][index][help] */