This source file includes following definitions.
- __bad_page
- __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
12
13
14
15
16
17
18
19
20 extern unsigned long inline __bad_page(void)
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)
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;
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
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
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