a6eb9fe105
Now each architecture has the own dma_get_cache_alignment implementation. dma_get_cache_alignment returns the minimum DMA alignment. Architectures define it as ARCH_KMALLOC_MINALIGN (it's used to make sure that malloc'ed buffer is DMA-safe; the buffer doesn't share a cache with the others). So we can unify dma_get_cache_alignment implementations. This patch: dma_get_cache_alignment() needs to know if an architecture defines ARCH_KMALLOC_MINALIGN or not (needs to know if architecture has DMA alignment restriction). However, slab.h define ARCH_KMALLOC_MINALIGN if architectures doesn't define it. Let's rename ARCH_KMALLOC_MINALIGN to ARCH_DMA_MINALIGN. ARCH_KMALLOC_MINALIGN is used only in the internals of slab/slob/slub (except for crypto). Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Cc: <linux-arch@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
48 lines
1.1 KiB
C
48 lines
1.1 KiB
C
#ifndef __LINUX_SLOB_DEF_H
|
|
#define __LINUX_SLOB_DEF_H
|
|
|
|
#ifdef ARCH_DMA_MINALIGN
|
|
#define ARCH_KMALLOC_MINALIGN ARCH_DMA_MINALIGN
|
|
#else
|
|
#define ARCH_KMALLOC_MINALIGN __alignof__(unsigned long)
|
|
#endif
|
|
|
|
#ifndef ARCH_SLAB_MINALIGN
|
|
#define ARCH_SLAB_MINALIGN __alignof__(unsigned long)
|
|
#endif
|
|
|
|
void *kmem_cache_alloc_node(struct kmem_cache *, gfp_t flags, int node);
|
|
|
|
static __always_inline void *kmem_cache_alloc(struct kmem_cache *cachep,
|
|
gfp_t flags)
|
|
{
|
|
return kmem_cache_alloc_node(cachep, flags, -1);
|
|
}
|
|
|
|
void *__kmalloc_node(size_t size, gfp_t flags, int node);
|
|
|
|
static __always_inline void *kmalloc_node(size_t size, gfp_t flags, int node)
|
|
{
|
|
return __kmalloc_node(size, flags, node);
|
|
}
|
|
|
|
/**
|
|
* kmalloc - allocate memory
|
|
* @size: how many bytes of memory are required.
|
|
* @flags: the type of memory to allocate (see kcalloc).
|
|
*
|
|
* kmalloc is the normal method of allocating memory
|
|
* in the kernel.
|
|
*/
|
|
static __always_inline void *kmalloc(size_t size, gfp_t flags)
|
|
{
|
|
return __kmalloc_node(size, flags, -1);
|
|
}
|
|
|
|
static __always_inline void *__kmalloc(size_t size, gfp_t flags)
|
|
{
|
|
return kmalloc(size, flags);
|
|
}
|
|
|
|
#endif /* __LINUX_SLOB_DEF_H */
|