at v2.6.17-rc3 2.1 kB view raw
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/* bits [20..32] reserved for arch specific ioremap internals */ 12 13/* 14 * Maximum alignment for ioremap() regions. 15 * Can be overriden by arch-specific value. 16 */ 17#ifndef IOREMAP_MAX_ORDER 18#define IOREMAP_MAX_ORDER (7 + PAGE_SHIFT) /* 128 pages */ 19#endif 20 21struct vm_struct { 22 void *addr; 23 unsigned long size; 24 unsigned long flags; 25 struct page **pages; 26 unsigned int nr_pages; 27 unsigned long phys_addr; 28 struct vm_struct *next; 29}; 30 31/* 32 * Highlevel APIs for driver use 33 */ 34extern void *vmalloc(unsigned long size); 35extern void *vmalloc_node(unsigned long size, int node); 36extern void *vmalloc_exec(unsigned long size); 37extern void *vmalloc_32(unsigned long size); 38extern void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot); 39extern void *__vmalloc_area(struct vm_struct *area, gfp_t gfp_mask, 40 pgprot_t prot); 41extern void *__vmalloc_node(unsigned long size, gfp_t gfp_mask, 42 pgprot_t prot, int node); 43extern void vfree(void *addr); 44 45extern void *vmap(struct page **pages, unsigned int count, 46 unsigned long flags, pgprot_t prot); 47extern void vunmap(void *addr); 48 49/* 50 * Lowlevel-APIs (not for driver use!) 51 */ 52extern struct vm_struct *get_vm_area(unsigned long size, unsigned long flags); 53extern struct vm_struct *__get_vm_area(unsigned long size, unsigned long flags, 54 unsigned long start, unsigned long end); 55extern struct vm_struct *get_vm_area_node(unsigned long size, 56 unsigned long flags, int node); 57extern struct vm_struct *remove_vm_area(void *addr); 58extern struct vm_struct *__remove_vm_area(void *addr); 59extern int map_vm_area(struct vm_struct *area, pgprot_t prot, 60 struct page ***pages); 61extern void unmap_vm_area(struct vm_struct *area); 62 63/* 64 * Internals. Dont't use.. 65 */ 66extern rwlock_t vmlist_lock; 67extern struct vm_struct *vmlist; 68 69#endif /* _LINUX_VMALLOC_H */