mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
mm: NUMA aware alloc_task_struct_node()
All kthreads being created from a single helper task, they all use memory from a single node for their kernel stack and task struct. This patch suite creates kthread_create_on_cpu(), adding a 'cpu' parameter to parameters already used by kthread_create(). This parameter serves in allocating memory for the new kthread on its memory node if available. Users of this new function are : ksoftirqd, kworker, migration, pktgend... This patch: Add a node parameter to alloc_task_struct(), and change its name to alloc_task_struct_node() This change is needed to allow NUMA aware kthread_create_on_cpu() Signed-off-by: Eric Dumazet <[email protected]> Acked-by: David S. Miller <[email protected]> Reviewed-by: Andi Kleen <[email protected]> Acked-by: Rusty Russell <[email protected]> Cc: Tejun Heo <[email protected]> Cc: Tony Luck <[email protected]> Cc: Fenghua Yu <[email protected]> Cc: David Howells <[email protected]> Cc: <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
9d502c1c8d
commit
504f52b543
5 changed files with 19 additions and 9 deletions
|
|
@ -137,7 +137,7 @@ unsigned long get_wchan(struct task_struct *p);
|
|||
#define KSTK_ESP(tsk) ((tsk)->thread.frame0->sp)
|
||||
|
||||
/* Allocation and freeing of basic task resources. */
|
||||
extern struct task_struct *alloc_task_struct(void);
|
||||
extern struct task_struct *alloc_task_struct_node(int node);
|
||||
extern void free_task_struct(struct task_struct *p);
|
||||
|
||||
#define cpu_relax() barrier()
|
||||
|
|
|
|||
|
|
@ -44,9 +44,10 @@ asmlinkage void ret_from_fork(void);
|
|||
void (*pm_power_off)(void);
|
||||
EXPORT_SYMBOL(pm_power_off);
|
||||
|
||||
struct task_struct *alloc_task_struct(void)
|
||||
struct task_struct *alloc_task_struct_node(int node)
|
||||
{
|
||||
struct task_struct *p = kmalloc(THREAD_SIZE, GFP_KERNEL);
|
||||
struct task_struct *p = kmalloc_node(THREAD_SIZE, GFP_KERNEL, node);
|
||||
|
||||
if (p)
|
||||
atomic_set((atomic_t *)(p+1), 1);
|
||||
return p;
|
||||
|
|
|
|||
Loading…
Reference in a new issue