diff options
Diffstat (limited to 'include/linux/vmalloc.h')
| -rw-r--r-- | include/linux/vmalloc.h | 34 | 
1 files changed, 32 insertions, 2 deletions
diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h index 6071e911c7f..7d5773a99f2 100644 --- a/include/linux/vmalloc.h +++ b/include/linux/vmalloc.h @@ -3,7 +3,9 @@  #include <linux/spinlock.h>  #include <linux/init.h> +#include <linux/list.h>  #include <asm/page.h>		/* pgprot_t */ +#include <linux/rbtree.h>  struct vm_area_struct;		/* vma defining user mapping in mm_types.h */ @@ -35,6 +37,17 @@ struct vm_struct {  	const void		*caller;  }; +struct vmap_area { +	unsigned long va_start; +	unsigned long va_end; +	unsigned long flags; +	struct rb_node rb_node;         /* address sorted rbtree */ +	struct list_head list;          /* address sorted list */ +	struct list_head purge_list;    /* "lazy purge" list */ +	struct vm_struct *vm; +	struct rcu_head rcu_head; +}; +  /*   *	Highlevel APIs for driver use   */ @@ -130,8 +143,7 @@ extern long vwrite(char *buf, char *addr, unsigned long count);  /*   *	Internals.  Dont't use..   */ -extern rwlock_t vmlist_lock; -extern struct vm_struct *vmlist; +extern struct list_head vmap_area_list;  extern __init void vm_area_add_early(struct vm_struct *vm);  extern __init void vm_area_register_early(struct vm_struct *vm, size_t align); @@ -158,4 +170,22 @@ pcpu_free_vm_areas(struct vm_struct **vms, int nr_vms)  # endif  #endif +struct vmalloc_info { +	unsigned long   used; +	unsigned long   largest_chunk; +}; + +#ifdef CONFIG_MMU +#define VMALLOC_TOTAL (VMALLOC_END - VMALLOC_START) +extern void get_vmalloc_info(struct vmalloc_info *vmi); +#else + +#define VMALLOC_TOTAL 0UL +#define get_vmalloc_info(vmi)			\ +do {						\ +	(vmi)->used = 0;			\ +	(vmi)->largest_chunk = 0;		\ +} while (0) +#endif +  #endif /* _LINUX_VMALLOC_H */  |