vmalloc.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. #ifndef __LINUX_VMALLOC_H
  2. #define __LINUX_VMALLOC_H
  3. #include <linux/sched.h>
  4. #include <linux/mm.h>
  5. #include <linux/spinlock.h>
  6. #include <asm/pgtable.h>
  7. /* bits in vm_struct->flags */
  8. #define VM_IOREMAP 0x00000001 /* ioremap() and friends */
  9. #define VM_ALLOC 0x00000002 /* vmalloc() */
  10. struct vm_struct {
  11. unsigned long flags;
  12. void * addr;
  13. unsigned long size;
  14. struct vm_struct * next;
  15. };
  16. extern struct vm_struct * get_vm_area (unsigned long size, unsigned long flags);
  17. extern void vfree(void * addr);
  18. extern void * __vmalloc (unsigned long size, int gfp_mask, pgprot_t prot);
  19. extern long vread(char *buf, char *addr, unsigned long count);
  20. extern void vmfree_area_pages(unsigned long address, unsigned long size);
  21. extern int vmalloc_area_pages(unsigned long address, unsigned long size,
  22.                               int gfp_mask, pgprot_t prot);
  23. /*
  24.  * Allocate any pages
  25.  */
  26.  
  27. static inline void * vmalloc (unsigned long size)
  28. {
  29. return __vmalloc(size, GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL);
  30. }
  31. /*
  32.  * Allocate ISA addressable pages for broke crap
  33.  */
  34. static inline void * vmalloc_dma (unsigned long size)
  35. {
  36. return __vmalloc(size, GFP_KERNEL|GFP_DMA, PAGE_KERNEL);
  37. }
  38. /*
  39.  * vmalloc 32bit PA addressable pages - eg for PCI 32bit devices
  40.  */
  41.  
  42. static inline void * vmalloc_32(unsigned long size)
  43. {
  44. return __vmalloc(size, GFP_KERNEL, PAGE_KERNEL);
  45. }
  46. /*
  47.  * vmlist_lock is a read-write spinlock that protects vmlist
  48.  * Used in mm/vmalloc.c (get_vm_area() and vfree()) and fs/proc/kcore.c.
  49.  */
  50. extern rwlock_t vmlist_lock;
  51. extern struct vm_struct * vmlist;
  52. #endif