1#ifndef _LINUX_VMALLOC_H
2#define _LINUX_VMALLOC_H
3
4#include <linux/spinlock.h>
5#include <asm/page.h>
6
7
8#define VM_IOREMAP 0x00000001
9#define VM_ALLOC 0x00000002
10#define VM_MAP 0x00000004
11
12
13struct vm_struct {
14 void *addr;
15 unsigned long size;
16 unsigned long flags;
17 struct page **pages;
18 unsigned int nr_pages;
19 unsigned long phys_addr;
20 struct vm_struct *next;
21};
22
23
24
25
26extern void *vmalloc(unsigned long size);
27extern void *vmalloc_exec(unsigned long size);
28extern void *vmalloc_32(unsigned long size);
29extern void *__vmalloc(unsigned long size, int gfp_mask, pgprot_t prot);
30extern void vfree(void *addr);
31
32extern void *vmap(struct page **pages, unsigned int count,
33 unsigned long flags, pgprot_t prot);
34extern void vunmap(void *addr);
35
36
37
38
39extern struct vm_struct *get_vm_area(unsigned long size, unsigned long flags);
40extern struct vm_struct *__get_vm_area(unsigned long size, unsigned long flags,
41 unsigned long start, unsigned long end);
42extern struct vm_struct *remove_vm_area(void *addr);
43extern int map_vm_area(struct vm_struct *area, pgprot_t prot,
44 struct page ***pages);
45extern void unmap_vm_area(struct vm_struct *area);
46
47
48
49
50extern rwlock_t vmlist_lock;
51extern struct vm_struct *vmlist;
52
53#endif
54