aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/DocBook/kernel-api.tmpl1
-rw-r--r--include/linux/slab.h50
-rw-r--r--mm/slab.c20
3 files changed, 53 insertions, 18 deletions
diff --git a/Documentation/DocBook/kernel-api.tmpl b/Documentation/DocBook/kernel-api.tmpl
index ca02e04a906c..6dab3dd36995 100644
--- a/Documentation/DocBook/kernel-api.tmpl
+++ b/Documentation/DocBook/kernel-api.tmpl
@@ -117,6 +117,7 @@ X!Ilib/string.c
117 <chapter id="mm"> 117 <chapter id="mm">
118 <title>Memory Management in Linux</title> 118 <title>Memory Management in Linux</title>
119 <sect1><title>The Slab Cache</title> 119 <sect1><title>The Slab Cache</title>
120!Iinclude/linux/slab.h
120!Emm/slab.c 121!Emm/slab.c
121 </sect1> 122 </sect1>
122 <sect1><title>User Space Memory Access</title> 123 <sect1><title>User Space Memory Access</title>
diff --git a/include/linux/slab.h b/include/linux/slab.h
index 9dc93163e065..45ad55b70d1c 100644
--- a/include/linux/slab.h
+++ b/include/linux/slab.h
@@ -86,6 +86,51 @@ extern void *__kmalloc_track_caller(size_t, gfp_t, void*);
86 __kmalloc_track_caller(size, flags, __builtin_return_address(0)) 86 __kmalloc_track_caller(size, flags, __builtin_return_address(0))
87#endif 87#endif
88 88
89/**
90 * kmalloc - allocate memory
91 * @size: how many bytes of memory are required.
92 * @flags: the type of memory to allocate.
93 *
94 * kmalloc is the normal method of allocating memory
95 * in the kernel.
96 *
97 * The @flags argument may be one of:
98 *
99 * %GFP_USER - Allocate memory on behalf of user. May sleep.
100 *
101 * %GFP_KERNEL - Allocate normal kernel ram. May sleep.
102 *
103 * %GFP_ATOMIC - Allocation will not sleep.
104 * For example, use this inside interrupt handlers.
105 *
106 * %GFP_HIGHUSER - Allocate pages from high memory.
107 *
108 * %GFP_NOIO - Do not do any I/O at all while trying to get memory.
109 *
110 * %GFP_NOFS - Do not make any fs calls while trying to get memory.
111 *
112 * Also it is possible to set different flags by OR'ing
113 * in one or more of the following additional @flags:
114 *
115 * %__GFP_COLD - Request cache-cold pages instead of
116 * trying to return cache-warm pages.
117 *
118 * %__GFP_DMA - Request memory from the DMA-capable zone.
119 *
120 * %__GFP_HIGH - This allocation has high priority and may use emergency pools.
121 *
122 * %__GFP_HIGHMEM - Allocated memory may be from highmem.
123 *
124 * %__GFP_NOFAIL - Indicate that this allocation is in no way allowed to fail
125 * (think twice before using).
126 *
127 * %__GFP_NORETRY - If memory is not immediately available,
128 * then give up at once.
129 *
130 * %__GFP_NOWARN - If allocation fails, don't issue any warnings.
131 *
132 * %__GFP_REPEAT - If allocation fails initially, try once more before failing.
133 */
89static inline void *kmalloc(size_t size, gfp_t flags) 134static inline void *kmalloc(size_t size, gfp_t flags)
90{ 135{
91 if (__builtin_constant_p(size)) { 136 if (__builtin_constant_p(size)) {
@@ -111,6 +156,11 @@ found:
111 156
112extern void *__kzalloc(size_t, gfp_t); 157extern void *__kzalloc(size_t, gfp_t);
113 158
159/**
160 * kzalloc - allocate memory. The memory is set to zero.
161 * @size: how many bytes of memory are required.
162 * @flags: the type of memory to allocate (see kmalloc).
163 */
114static inline void *kzalloc(size_t size, gfp_t flags) 164static inline void *kzalloc(size_t size, gfp_t flags)
115{ 165{
116 if (__builtin_constant_p(size)) { 166 if (__builtin_constant_p(size)) {
diff --git a/mm/slab.c b/mm/slab.c
index 664c3a10acf2..98ac20bc0de9 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -3277,26 +3277,10 @@ EXPORT_SYMBOL(kmalloc_node);
3277#endif 3277#endif
3278 3278
3279/** 3279/**
3280 * kmalloc - allocate memory 3280 * __do_kmalloc - allocate memory
3281 * @size: how many bytes of memory are required. 3281 * @size: how many bytes of memory are required.
3282 * @flags: the type of memory to allocate. 3282 * @flags: the type of memory to allocate (see kmalloc).
3283 * @caller: function caller for debug tracking of the caller 3283 * @caller: function caller for debug tracking of the caller
3284 *
3285 * kmalloc is the normal method of allocating memory
3286 * in the kernel.
3287 *
3288 * The @flags argument may be one of:
3289 *
3290 * %GFP_USER - Allocate memory on behalf of user. May sleep.
3291 *
3292 * %GFP_KERNEL - Allocate normal kernel ram. May sleep.
3293 *
3294 * %GFP_ATOMIC - Allocation will not sleep. Use inside interrupt handlers.
3295 *
3296 * Additionally, the %GFP_DMA flag may be set to indicate the memory
3297 * must be suitable for DMA. This can mean different things on different
3298 * platforms. For example, on i386, it means that the memory must come
3299 * from the first 16MB.
3300 */ 3284 */
3301static __always_inline void *__do_kmalloc(size_t size, gfp_t flags, 3285static __always_inline void *__do_kmalloc(size_t size, gfp_t flags,
3302 void *caller) 3286 void *caller)