Messages in this thread | | | Date | Sun, 16 Nov 2008 07:49:01 +0300 | From | Alexey Dobriyan <> | Subject | Re: [PATCH 1/7] mm: introduce simple_malloc()/simple_free() |
| |
On Sun, Nov 16, 2008 at 12:33:15PM +0800, Lai Jiangshan wrote: > some subsystem needs vmalloc() when required memory is large. > but current kernel has not APIs for this requirement.
It doesn't mean there should be such an API.
> this patch introduces simple_malloc() and simple_free().
Grossly misnamed. It should be kvmalloc/kvfree, at least.
> --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -278,6 +279,36 @@ static inline int is_vmalloc_addr(const void *x) > #endif > } > > +static inline void *__simple_malloc(unsigned long size, int pages_hint) > +{ > + if (size <= PAGE_SIZE * pages_hint) > + return kmalloc(size, GFP_KERNEL); > + else > + return vmalloc(size); > +} > + > +/** > + * simple_malloc - allocate memory by kmalloc() or vmalloc() > + * > + * if @size <= PAGE_SIZE, memory is allocated by kmalloc(), > + * otherwise by vmalloc() > + */ > +static inline void *simple_malloc(unsigned long size) > +{ > + return __simple_malloc(size, 1); > +} > + > +/** > + * simple_free - free the memory by kfree(), or vfree() if it is vmalloc addr > + */ > +static inline void simple_free(void *ptr) > +{ > + if (is_vmalloc_addr(ptr)) > + vfree(ptr); > + else > + kfree(ptr); > +}
| |