Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
422 | giacomo | 1 | #ifndef _LINUX_VMALLOC_H |
2 | #define _LINUX_VMALLOC_H |
||
3 | |||
4 | #include <linux/spinlock.h> |
||
5 | #include <asm/page.h> /* pgprot_t */ |
||
6 | |||
7 | /* bits in vm_struct->flags */ |
||
8 | #define VM_IOREMAP 0x00000001 /* ioremap() and friends */ |
||
9 | #define VM_ALLOC 0x00000002 /* vmalloc() */ |
||
10 | #define VM_MAP 0x00000004 /* vmap()ed pages */ |
||
11 | |||
12 | struct vm_struct { |
||
13 | void *addr; |
||
14 | unsigned long size; |
||
15 | unsigned long flags; |
||
16 | struct page **pages; |
||
17 | unsigned int nr_pages; |
||
18 | unsigned long phys_addr; |
||
19 | struct vm_struct *next; |
||
20 | }; |
||
21 | |||
22 | /* |
||
23 | * Highlevel APIs for driver use |
||
24 | */ |
||
25 | extern void *vmalloc(unsigned long size); |
||
26 | extern void *vmalloc_32(unsigned long size); |
||
27 | extern void *__vmalloc(unsigned long size, int gfp_mask, pgprot_t prot); |
||
28 | extern void vfree(void *addr); |
||
29 | |||
30 | extern void *vmap(struct page **pages, unsigned int count, |
||
31 | unsigned long flags, pgprot_t prot); |
||
32 | extern void vunmap(void *addr); |
||
33 | |||
34 | /* |
||
35 | * Lowlevel-APIs (not for driver use!) |
||
36 | */ |
||
37 | extern struct vm_struct *get_vm_area(unsigned long size, unsigned long flags); |
||
38 | extern struct vm_struct *remove_vm_area(void *addr); |
||
39 | extern int map_vm_area(struct vm_struct *area, pgprot_t prot, |
||
40 | struct page ***pages); |
||
41 | extern void unmap_vm_area(struct vm_struct *area); |
||
42 | |||
43 | /* |
||
44 | * Internals. Dont't use.. |
||
45 | */ |
||
46 | extern rwlock_t vmlist_lock; |
||
47 | extern struct vm_struct *vmlist; |
||
48 | |||
49 | #endif /* _LINUX_VMALLOC_H */ |