at v2.6.13-rc7 1.7 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 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 * Highlevel APIs for driver use 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, unsigned int __nocast gfp_mask, pgprot_t prot); 30extern void *__vmalloc_area(struct vm_struct *area, unsigned int __nocast gfp_mask, pgprot_t prot); 31extern void vfree(void *addr); 32 33extern void *vmap(struct page **pages, unsigned int count, 34 unsigned long flags, pgprot_t prot); 35extern void vunmap(void *addr); 36 37/* 38 * Lowlevel-APIs (not for driver use!) 39 */ 40extern struct vm_struct *get_vm_area(unsigned long size, unsigned long flags); 41extern struct vm_struct *__get_vm_area(unsigned long size, unsigned long flags, 42 unsigned long start, unsigned long end); 43extern struct vm_struct *remove_vm_area(void *addr); 44extern struct vm_struct *__remove_vm_area(void *addr); 45extern int map_vm_area(struct vm_struct *area, pgprot_t prot, 46 struct page ***pages); 47extern void unmap_vm_area(struct vm_struct *area); 48 49/* 50 * Internals. Dont't use.. 51 */ 52extern rwlock_t vmlist_lock; 53extern struct vm_struct *vmlist; 54 55#endif /* _LINUX_VMALLOC_H */