linux/include/linux/vmalloc.h
<<
>>
Prefs
   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 */
  70
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.