📄 vmalloc.h
字号:
#ifndef _LINUX_VMALLOC_H#define _LINUX_VMALLOC_H#include <linux/spinlock.h>#include <asm/page.h> /* pgprot_t */struct vm_area_struct;/* bits in vm_struct->flags */#define VM_IOREMAP 0x00000001 /* ioremap() and friends */#define VM_ALLOC 0x00000002 /* vmalloc() */#define VM_MAP 0x00000004 /* vmap()ed pages */#define VM_USERMAP 0x00000008 /* suitable for remap_vmalloc_range */#define VM_VPAGES 0x00000010 /* buffer for pages was vmalloc'ed *//* bits [20..32] reserved for arch specific ioremap internals *//* * Maximum alignment for ioremap() regions. * Can be overriden by arch-specific value. */#ifndef IOREMAP_MAX_ORDER#define IOREMAP_MAX_ORDER (7 + PAGE_SHIFT) /* 128 pages */#endifstruct vm_struct { /* keep next,addr,size together to speedup lookups */ struct vm_struct *next; void *addr; unsigned long size; unsigned long flags; struct page **pages; unsigned int nr_pages; unsigned long phys_addr;};/* * Highlevel APIs for driver use */extern void *vmalloc(unsigned long size);extern void *vmalloc_user(unsigned long size);extern void *vmalloc_node(unsigned long size, int node);extern void *vmalloc_exec(unsigned long size);extern void *vmalloc_32(unsigned long size);extern void *vmalloc_32_user(unsigned long size);extern void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot);extern void *__vmalloc_area(struct vm_struct *area, gfp_t gfp_mask, pgprot_t prot);extern void vfree(void *addr);extern void *vmap(struct page **pages, unsigned int count, unsigned long flags, pgprot_t prot);extern void vunmap(void *addr);extern int remap_vmalloc_range(struct vm_area_struct *vma, void *addr, unsigned long pgoff); /* * Lowlevel-APIs (not for driver use!) */extern struct vm_struct *get_vm_area(unsigned long size, unsigned long flags);extern struct vm_struct *__get_vm_area(unsigned long size, unsigned long flags, unsigned long start, unsigned long end);extern struct vm_struct *get_vm_area_node(unsigned long size, unsigned long flags, int node, gfp_t gfp_mask);extern struct vm_struct *remove_vm_area(void *addr);extern int map_vm_area(struct vm_struct *area, pgprot_t prot, struct page ***pages);extern void unmap_vm_area(struct vm_struct *area);/* * Internals. Dont't use.. */extern rwlock_t vmlist_lock;extern struct vm_struct *vmlist;#endif /* _LINUX_VMALLOC_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -