aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/slub_def.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/slub_def.h')
-rw-r--r--include/linux/slub_def.h19
1 files changed, 2 insertions, 17 deletions
diff --git a/include/linux/slub_def.h b/include/linux/slub_def.h
index a9fb92862aaa..0764c829d967 100644
--- a/include/linux/slub_def.h
+++ b/include/linux/slub_def.h
@@ -58,17 +58,6 @@ struct kmem_cache {
58 */ 58 */
59#define KMALLOC_SHIFT_LOW 3 59#define KMALLOC_SHIFT_LOW 3
60 60
61#ifdef CONFIG_LARGE_ALLOCS
62#define KMALLOC_SHIFT_HIGH ((MAX_ORDER + PAGE_SHIFT) =< 25 ? \
63 (MAX_ORDER + PAGE_SHIFT - 1) : 25)
64#else
65#if !defined(CONFIG_MMU) || NR_CPUS > 512 || MAX_NUMNODES > 256
66#define KMALLOC_SHIFT_HIGH 20
67#else
68#define KMALLOC_SHIFT_HIGH 18
69#endif
70#endif
71
72/* 61/*
73 * We keep the general caches in an array of slab caches that are used for 62 * We keep the general caches in an array of slab caches that are used for
74 * 2^x bytes of allocations. 63 * 2^x bytes of allocations.
@@ -79,7 +68,7 @@ extern struct kmem_cache kmalloc_caches[KMALLOC_SHIFT_HIGH + 1];
79 * Sorry that the following has to be that ugly but some versions of GCC 68 * Sorry that the following has to be that ugly but some versions of GCC
80 * have trouble with constant propagation and loops. 69 * have trouble with constant propagation and loops.
81 */ 70 */
82static inline int kmalloc_index(int size) 71static inline int kmalloc_index(size_t size)
83{ 72{
84 /* 73 /*
85 * We should return 0 if size == 0 but we use the smallest object 74 * We should return 0 if size == 0 but we use the smallest object
@@ -87,7 +76,7 @@ static inline int kmalloc_index(int size)
87 */ 76 */
88 WARN_ON_ONCE(size == 0); 77 WARN_ON_ONCE(size == 0);
89 78
90 if (size > (1 << KMALLOC_SHIFT_HIGH)) 79 if (size > KMALLOC_MAX_SIZE)
91 return -1; 80 return -1;
92 81
93 if (size > 64 && size <= 96) 82 if (size > 64 && size <= 96)
@@ -110,17 +99,13 @@ static inline int kmalloc_index(int size)
110 if (size <= 64 * 1024) return 16; 99 if (size <= 64 * 1024) return 16;
111 if (size <= 128 * 1024) return 17; 100 if (size <= 128 * 1024) return 17;
112 if (size <= 256 * 1024) return 18; 101 if (size <= 256 * 1024) return 18;
113#if KMALLOC_SHIFT_HIGH > 18
114 if (size <= 512 * 1024) return 19; 102 if (size <= 512 * 1024) return 19;
115 if (size <= 1024 * 1024) return 20; 103 if (size <= 1024 * 1024) return 20;
116#endif
117#if KMALLOC_SHIFT_HIGH > 20
118 if (size <= 2 * 1024 * 1024) return 21; 104 if (size <= 2 * 1024 * 1024) return 21;
119 if (size <= 4 * 1024 * 1024) return 22; 105 if (size <= 4 * 1024 * 1024) return 22;
120 if (size <= 8 * 1024 * 1024) return 23; 106 if (size <= 8 * 1024 * 1024) return 23;
121 if (size <= 16 * 1024 * 1024) return 24; 107 if (size <= 16 * 1024 * 1024) return 24;
122 if (size <= 32 * 1024 * 1024) return 25; 108 if (size <= 32 * 1024 * 1024) return 25;
123#endif
124 return -1; 109 return -1;
125 110
126/* 111/*