diff options
-rw-r--r-- | Documentation/DocBook/kernel-api.tmpl | 1 | ||||
-rw-r--r-- | include/linux/slab.h | 50 | ||||
-rw-r--r-- | mm/slab.c | 20 |
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 | */ | ||
89 | static inline void *kmalloc(size_t size, gfp_t flags) | 134 | static 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 | ||
112 | extern void *__kzalloc(size_t, gfp_t); | 157 | extern 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 | */ | ||
114 | static inline void *kzalloc(size_t size, gfp_t flags) | 164 | static inline void *kzalloc(size_t size, gfp_t flags) |
115 | { | 165 | { |
116 | if (__builtin_constant_p(size)) { | 166 | if (__builtin_constant_p(size)) { |
@@ -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 | */ |
3301 | static __always_inline void *__do_kmalloc(size_t size, gfp_t flags, | 3285 | static __always_inline void *__do_kmalloc(size_t size, gfp_t flags, |
3302 | void *caller) | 3286 | void *caller) |