Tejun Heo | de380b5 | 2010-03-24 17:06:43 +0900 | [diff] [blame] | 1 | /* |
| 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 | |
| 9 | void __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 Kim | 94cb121 | 2010-08-07 03:26:24 +0900 | [diff] [blame] | 17 | return (void __percpu __force *)kzalloc(size, GFP_KERNEL); |
Tejun Heo | de380b5 | 2010-03-24 17:06:43 +0900 | [diff] [blame] | 18 | } |
| 19 | EXPORT_SYMBOL_GPL(__alloc_percpu); |
| 20 | |
| 21 | void free_percpu(void __percpu *p) |
| 22 | { |
Namhyung Kim | 94cb121 | 2010-08-07 03:26:24 +0900 | [diff] [blame] | 23 | kfree(this_cpu_ptr(p)); |
Tejun Heo | de380b5 | 2010-03-24 17:06:43 +0900 | [diff] [blame] | 24 | } |
| 25 | EXPORT_SYMBOL_GPL(free_percpu); |
| 26 | |
| 27 | phys_addr_t per_cpu_ptr_to_phys(void *addr) |
| 28 | { |
| 29 | return __pa(addr); |
| 30 | } |