aboutsummaryrefslogtreecommitdiffstats
path: root/mm/slob.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/slob.c')
-rw-r--r--mm/slob.c53
1 files changed, 1 insertions, 52 deletions
diff --git a/mm/slob.c b/mm/slob.c
index a68255ba4553..542394184a58 100644
--- a/mm/slob.c
+++ b/mm/slob.c
@@ -29,7 +29,6 @@
29 * essentially no allocation space overhead. 29 * essentially no allocation space overhead.
30 */ 30 */
31 31
32#include <linux/config.h>
33#include <linux/slab.h> 32#include <linux/slab.h>
34#include <linux/mm.h> 33#include <linux/mm.h>
35#include <linux/cache.h> 34#include <linux/cache.h>
@@ -271,10 +270,9 @@ struct kmem_cache *kmem_cache_create(const char *name, size_t size,
271} 270}
272EXPORT_SYMBOL(kmem_cache_create); 271EXPORT_SYMBOL(kmem_cache_create);
273 272
274int kmem_cache_destroy(struct kmem_cache *c) 273void kmem_cache_destroy(struct kmem_cache *c)
275{ 274{
276 slob_free(c, sizeof(struct kmem_cache)); 275 slob_free(c, sizeof(struct kmem_cache));
277 return 0;
278} 276}
279EXPORT_SYMBOL(kmem_cache_destroy); 277EXPORT_SYMBOL(kmem_cache_destroy);
280 278
@@ -340,52 +338,3 @@ void kmem_cache_init(void)
340 338
341 mod_timer(&slob_timer, jiffies + HZ); 339 mod_timer(&slob_timer, jiffies + HZ);
342} 340}
343
344atomic_t slab_reclaim_pages = ATOMIC_INIT(0);
345EXPORT_SYMBOL(slab_reclaim_pages);
346
347#ifdef CONFIG_SMP
348
349void *__alloc_percpu(size_t size)
350{
351 int i;
352 struct percpu_data *pdata = kmalloc(sizeof (*pdata), GFP_KERNEL);
353
354 if (!pdata)
355 return NULL;
356
357 for_each_possible_cpu(i) {
358 pdata->ptrs[i] = kmalloc(size, GFP_KERNEL);
359 if (!pdata->ptrs[i])
360 goto unwind_oom;
361 memset(pdata->ptrs[i], 0, size);
362 }
363
364 /* Catch derefs w/o wrappers */
365 return (void *) (~(unsigned long) pdata);
366
367unwind_oom:
368 while (--i >= 0) {
369 if (!cpu_possible(i))
370 continue;
371 kfree(pdata->ptrs[i]);
372 }
373 kfree(pdata);
374 return NULL;
375}
376EXPORT_SYMBOL(__alloc_percpu);
377
378void
379free_percpu(const void *objp)
380{
381 int i;
382 struct percpu_data *p = (struct percpu_data *) (~(unsigned long) objp);
383
384 for_each_possible_cpu(i)
385 kfree(p->ptrs[i]);
386
387 kfree(p);
388}
389EXPORT_SYMBOL(free_percpu);
390
391#endif