diff options
author | Martin Peschke <mp3@de.ibm.com> | 2006-09-25 23:31:21 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-09-26 08:48:47 -0700 |
commit | 7ff6f08295d90ab20d25200ef485ebb45b1b8d71 (patch) | |
tree | 4c3410dcf5191ab574304f3ffbafd675545c2297 /mm/memory.c | |
parent | 8bc719d3cab8414938f9ea6e33b58d8810d18068 (diff) | |
download | linux-3.10-7ff6f08295d90ab20d25200ef485ebb45b1b8d71.tar.gz linux-3.10-7ff6f08295d90ab20d25200ef485ebb45b1b8d71.tar.bz2 linux-3.10-7ff6f08295d90ab20d25200ef485ebb45b1b8d71.zip |
[PATCH] CPU hotplug compatible alloc_percpu()
This patch splits alloc_percpu() up into two phases. Likewise for
free_percpu(). This allows clients to limit initial allocations to online
cpu's, and to populate or depopulate per-cpu data at run time as needed:
struct my_struct *obj;
/* initial allocation for online cpu's */
obj = percpu_alloc(sizeof(struct my_struct), GFP_KERNEL);
...
/* populate per-cpu data for cpu coming online */
ptr = percpu_populate(obj, sizeof(struct my_struct), GFP_KERNEL, cpu);
...
/* access per-cpu object */
ptr = percpu_ptr(obj, smp_processor_id());
...
/* depopulate per-cpu data for cpu going offline */
percpu_depopulate(obj, cpu);
...
/* final removal */
percpu_free(obj);
Signed-off-by: Martin Peschke <mp3@de.ibm.com>
Cc: Paul Jackson <pj@sgi.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'mm/memory.c')
0 files changed, 0 insertions, 0 deletions