X-Git-Url: http://pilppa.org/gitweb/?a=blobdiff_plain;f=include%2Flinux%2Fslub_def.h;h=6207a3d8da7150abbb8c1361331b5f4945162b66;hb=82afee684fe3badaf5ee3fc5b6fda687d558bfb5;hp=a0ad37463d623ec1a933c7bc7c3cb8c966b15ff6;hpb=bb3d2dd72302ea3eefcc6738cdd39ed5864b62f8;p=linux-2.6-omap-h63xx.git diff --git a/include/linux/slub_def.h b/include/linux/slub_def.h index a0ad37463d6..6207a3d8da7 100644 --- a/include/linux/slub_def.h +++ b/include/linux/slub_def.h @@ -28,7 +28,7 @@ struct kmem_cache { int size; /* The size of an object including meta data */ int objsize; /* The size of an object without meta data */ int offset; /* Free pointer offset. */ - unsigned int order; + int order; /* * Avoid an extra cache line for UP, SMP and for the node local to @@ -56,7 +56,13 @@ struct kmem_cache { /* * Kmalloc subsystem. */ -#define KMALLOC_SHIFT_LOW 3 +#if defined(ARCH_KMALLOC_MINALIGN) && ARCH_KMALLOC_MINALIGN > 8 +#define KMALLOC_MIN_SIZE ARCH_KMALLOC_MINALIGN +#else +#define KMALLOC_MIN_SIZE 8 +#endif + +#define KMALLOC_SHIFT_LOW ilog2(KMALLOC_MIN_SIZE) /* * We keep the general caches in an array of slab caches that are used for @@ -76,6 +82,9 @@ static inline int kmalloc_index(size_t size) if (size > KMALLOC_MAX_SIZE) return -1; + if (size <= KMALLOC_MIN_SIZE) + return KMALLOC_SHIFT_LOW; + if (size > 64 && size <= 96) return 1; if (size > 128 && size <= 192)