]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/linux/slub_def.h
Merge master.kernel.org:/pub/scm/linux/kernel/git/cooloney/blackfin-2.6
[linux-2.6-omap-h63xx.git] / include / linux / slub_def.h
index a0ad37463d623ec1a933c7bc7c3cb8c966b15ff6..6207a3d8da7150abbb8c1361331b5f4945162b66 100644 (file)
@@ -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)