blob: 289183bfe3673d2bced0c67d2234430bd1612907 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
#ifndef _LINUX_BIGMEM_H
#define _LINUX_BIGMEM_H
#include <linux/config.h>
#ifdef CONFIG_BIGMEM
#include <asm/bigmem.h>
/* declarations for linux/mm/bigmem.c */
extern unsigned long bigmem_mapnr;
extern int nr_free_bigpages;
extern struct page * prepare_bigmem_swapout(struct page *);
extern struct page * replace_with_bigmem(struct page *);
#else /* CONFIG_BIGMEM */
#define prepare_bigmem_swapout(page) page
#define replace_with_bigmem(page) page
#define kmap(kaddr, type) kaddr
#define kunmap(vaddr, type) do { } while (0)
#define nr_free_bigpages 0
#endif /* CONFIG_BIGMEM */
/* when CONFIG_BIGMEM is not set these will be plain clear/copy_page */
extern inline void clear_bigpage(unsigned long kaddr)
{
unsigned long vaddr;
vaddr = kmap(kaddr, KM_WRITE);
clear_page(vaddr);
kunmap(vaddr, KM_WRITE);
}
extern inline void copy_bigpage(unsigned long to, unsigned long from)
{
unsigned long vfrom, vto;
vfrom = kmap(from, KM_READ);
vto = kmap(to, KM_WRITE);
copy_page(vto, vfrom);
kunmap(vfrom, KM_READ);
kunmap(vto, KM_WRITE);
}
#endif /* _LINUX_BIGMEM_H */
|