blob: db884fae5721749e57990d9f9ac33398efb1ca37 [file] [log] [blame]
Tejun Heode380b52010-03-24 17:06:43 +09001/*
2 * mm/percpu_up.c - dummy percpu memory allocator implementation for UP
3 */
4
5#include <linux/module.h>
6#include <linux/percpu.h>
7#include <linux/slab.h>
8
9void __percpu *__alloc_percpu(size_t size, size_t align)
10{
11 /*
12 * Can't easily make larger alignment work with kmalloc. WARN
13 * on it. Larger alignment should only be used for module
14 * percpu sections on SMP for which this path isn't used.
15 */
16 WARN_ON_ONCE(align > SMP_CACHE_BYTES);
Namhyung Kim94cb1212010-08-07 03:26:24 +090017 return (void __percpu __force *)kzalloc(size, GFP_KERNEL);
Tejun Heode380b52010-03-24 17:06:43 +090018}
19EXPORT_SYMBOL_GPL(__alloc_percpu);
20
21void free_percpu(void __percpu *p)
22{
Namhyung Kim94cb1212010-08-07 03:26:24 +090023 kfree(this_cpu_ptr(p));
Tejun Heode380b52010-03-24 17:06:43 +090024}
25EXPORT_SYMBOL_GPL(free_percpu);
26
27phys_addr_t per_cpu_ptr_to_phys(void *addr)
28{
29 return __pa(addr);
30}