Subversion Repositories Kolibri OS

Rev

Rev 4370 | Rev 5270 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4370 Rev 4559
1
#ifndef _LINUX_MM_H
1
#ifndef _LINUX_MM_H
2
#define _LINUX_MM_H
2
#define _LINUX_MM_H
3
 
3
 
4
#include 
4
#include 
5
 
5
 
6
#define VM_NORESERVE    0x00200000
6
#define VM_NORESERVE    0x00200000
7
 
7
 
8
#define nth_page(page,n) ((void*)(((page_to_phys(page)>>12)+(n))<<12))
8
#define nth_page(page,n) ((void*)(((page_to_phys(page)>>12)+(n))<<12))
9
 
9
 
10
#define page_to_pfn(page) (page_to_phys(page)>>12)
10
#define page_to_pfn(page) (page_to_phys(page)>>12)
11
 
11
 
12
/* to align the pointer to the (next) page boundary */
12
/* to align the pointer to the (next) page boundary */
13
#define PAGE_ALIGN(addr) ALIGN(addr, PAGE_SIZE)
13
#define PAGE_ALIGN(addr) ALIGN(addr, PAGE_SIZE)
-
 
14
 
-
 
15
/*
-
 
16
 * These are the virtual MM functions - opening of an area, closing and
-
 
17
 * unmapping it (needed to keep files on disk up-to-date etc), pointer
-
 
18
 * to the functions called when a no-page or a wp-page exception occurs. 
-
 
19
 */
-
 
20
struct vm_operations_struct {
-
 
21
	void (*open)(struct vm_area_struct * area);
-
 
22
	void (*close)(struct vm_area_struct * area);
-
 
23
	int (*fault)(struct vm_area_struct *vma, struct vm_fault *vmf);
-
 
24
 
-
 
25
	/* notification that a previously read-only page is about to become
-
 
26
	 * writable, if an error is returned it will cause a SIGBUS */
-
 
27
	int (*page_mkwrite)(struct vm_area_struct *vma, struct vm_fault *vmf);
-
 
28
 
-
 
29
	/* called by access_process_vm when get_user_pages() fails, typically
-
 
30
	 * for use by special VMAs that can switch between memory and hardware
-
 
31
	 */
-
 
32
	int (*access)(struct vm_area_struct *vma, unsigned long addr,
-
 
33
		      void *buf, int len, int write);
-
 
34
#ifdef CONFIG_NUMA
-
 
35
	/*
-
 
36
	 * set_policy() op must add a reference to any non-NULL @new mempolicy
-
 
37
	 * to hold the policy upon return.  Caller should pass NULL @new to
-
 
38
	 * remove a policy and fall back to surrounding context--i.e. do not
-
 
39
	 * install a MPOL_DEFAULT policy, nor the task or system default
-
 
40
	 * mempolicy.
-
 
41
	 */
-
 
42
	int (*set_policy)(struct vm_area_struct *vma, struct mempolicy *new);
-
 
43
 
-
 
44
	/*
-
 
45
	 * get_policy() op must add reference [mpol_get()] to any policy at
-
 
46
	 * (vma,addr) marked as MPOL_SHARED.  The shared policy infrastructure
-
 
47
	 * in mm/mempolicy.c will do this automatically.
-
 
48
	 * get_policy() must NOT add a ref if the policy at (vma,addr) is not
-
 
49
	 * marked as MPOL_SHARED. vma policies are protected by the mmap_sem.
-
 
50
	 * If no [shared/vma] mempolicy exists at the addr, get_policy() op
-
 
51
	 * must return NULL--i.e., do not "fallback" to task or system default
-
 
52
	 * policy.
-
 
53
	 */
-
 
54
	struct mempolicy *(*get_policy)(struct vm_area_struct *vma,
-
 
55
					unsigned long addr);
-
 
56
	int (*migrate)(struct vm_area_struct *vma, const nodemask_t *from,
-
 
57
		const nodemask_t *to, unsigned long flags);
-
 
58
#endif
-
 
59
	/* called by sys_remap_file_pages() to populate non-linear mapping */
-
 
60
	int (*remap_pages)(struct vm_area_struct *vma, unsigned long addr,
-
 
61
			   unsigned long size, pgoff_t pgoff);
14
 
62
};
15
#define offset_in_page(p)       ((unsigned long)(p) & ~PAGE_MASK)
63
#define offset_in_page(p)       ((unsigned long)(p) & ~PAGE_MASK)
16
 
64
 
17
#endif
65
#endif
18
 
66
 
19
#define>
67
#define>
20
 
68
 
21
#define>
69
#define>