Rev 422 | Details | Compare with Previous | 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); |
||
1047 | mauro | 27 | extern void *vmalloc_32_usb(unsigned long size); |
422 | giacomo | 28 | extern void *__vmalloc(unsigned long size, int gfp_mask, pgprot_t prot); |
29 | extern void vfree(void *addr); |
||
1047 | mauro | 30 | extern void vfree_usb(void *addr); |
422 | giacomo | 31 | |
32 | extern void *vmap(struct page **pages, unsigned int count, |
||
33 | unsigned long flags, pgprot_t prot); |
||
34 | extern void vunmap(void *addr); |
||
35 | |||
36 | /* |
||
37 | * Lowlevel-APIs (not for driver use!) |
||
38 | */ |
||
39 | extern struct vm_struct *get_vm_area(unsigned long size, unsigned long flags); |
||
40 | extern struct vm_struct *remove_vm_area(void *addr); |
||
41 | extern int map_vm_area(struct vm_struct *area, pgprot_t prot, |
||
42 | struct page ***pages); |
||
43 | extern void unmap_vm_area(struct vm_struct *area); |
||
44 | |||
45 | /* |
||
46 | * Internals. Dont't use.. |
||
47 | */ |
||
48 | extern rwlock_t vmlist_lock; |
||
49 | extern struct vm_struct *vmlist; |
||
50 | |||
51 | #endif /* _LINUX_VMALLOC_H */ |