From e52c02f76ae684f86f18f0fc7d7577e22a4d9318 Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Sat, 22 May 2004 08:04:51 -0700 Subject: [PATCH] [PATCH] small numa api fixups From: Christoph Hellwig - don't include mempolicy.h in sched.h and mm.h when a forward delcaration is enough. Andi argued against that in the past, but I'd really hate to add another header to two of the includes used in basically every driver when we can include it in the six files actually needing it instead (that number is for my ppc32 system, maybe other arches need more include in their directories) - make numa api fields in tast_struct conditional on CONFIG_NUMA, this gives us a few ugly ifdefs but avoids wasting memory on non-NUMA systems. --- arch/ia64/ia32/binfmt_elf32.c | 1 + arch/ia64/kernel/perfmon.c | 1 + arch/ia64/mm/init.c | 1 + arch/x86_64/ia32/ia32_binfmt.c | 1 + fs/exec.c | 1 + include/linux/mm.h | 3 ++- include/linux/sched.h | 4 +++- kernel/exit.c | 3 +++ kernel/fork.c | 5 +++++ mm/mempolicy.c | 1 + mm/mmap.c | 1 + mm/mprotect.c | 1 + mm/shmem.c | 1 + 13 files changed, 22 insertions(+), 2 deletions(-) diff --git a/arch/ia64/ia32/binfmt_elf32.c b/arch/ia64/ia32/binfmt_elf32.c index 44952a0ef8cd..57dd04a1b904 100644 --- a/arch/ia64/ia32/binfmt_elf32.c +++ b/arch/ia64/ia32/binfmt_elf32.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c index 3365f23ffc91..df163f66ab38 100644 --- a/arch/ia64/kernel/perfmon.c +++ b/arch/ia64/kernel/perfmon.c @@ -38,6 +38,7 @@ #include #include #include +#include #include #include diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c index 673d73bfa7b7..a24e706351b8 100644 --- a/arch/ia64/mm/init.c +++ b/arch/ia64/mm/init.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include diff --git a/arch/x86_64/ia32/ia32_binfmt.c b/arch/x86_64/ia32/ia32_binfmt.c index af8d595da912..0d8355e60e68 100644 --- a/arch/x86_64/ia32/ia32_binfmt.c +++ b/arch/x86_64/ia32/ia32_binfmt.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include diff --git a/fs/exec.c b/fs/exec.c index 0e6fdcf20984..b0c53d706eef 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -46,6 +46,7 @@ #include #include #include +#include #include #include diff --git a/include/linux/mm.h b/include/linux/mm.h index 8dd58e11edb0..249167672b83 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -12,7 +12,8 @@ #include #include #include -#include + +struct mempolicy; #ifndef CONFIG_DISCONTIGMEM /* Don't use mapnrs, do it properly */ extern unsigned long max_mapnr; diff --git a/include/linux/sched.h b/include/linux/sched.h index 9a539b7eb0d2..9cf8e5be3ed0 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -29,7 +29,6 @@ #include #include #include -#include struct exec_domain; @@ -381,6 +380,7 @@ int set_current_groups(struct group_info *group_info); struct audit_context; /* See audit.c */ +struct mempolicy; struct task_struct { volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ @@ -510,8 +510,10 @@ struct task_struct { unsigned long ptrace_message; siginfo_t *last_siginfo; /* For ptrace use. */ +#ifdef CONFIG_NUMA struct mempolicy *mempolicy; short il_next; /* could be shared with used_math */ +#endif }; static inline pid_t process_group(struct task_struct *tsk) diff --git a/kernel/exit.c b/kernel/exit.c index 5ac2db963f0b..1053be962cad 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include @@ -791,7 +792,9 @@ asmlinkage NORET_TYPE void do_exit(long code) __exit_fs(tsk); exit_namespace(tsk); exit_thread(); +#ifdef CONFIG_NUMA mpol_free(tsk->mempolicy); +#endif if (tsk->signal->leader) disassociate_ctty(1); diff --git a/kernel/fork.c b/kernel/fork.c index 2297ac8d0a0f..8909a42c4420 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -972,12 +973,14 @@ struct task_struct *copy_process(unsigned long clone_flags, p->security = NULL; p->io_context = NULL; p->audit_context = NULL; +#ifdef CONFIG_NUMA p->mempolicy = mpol_copy(p->mempolicy); if (IS_ERR(p->mempolicy)) { retval = PTR_ERR(p->mempolicy); p->mempolicy = NULL; goto bad_fork_cleanup; } +#endif retval = -ENOMEM; if ((retval = security_task_alloc(p))) @@ -1128,7 +1131,9 @@ bad_fork_cleanup_audit: bad_fork_cleanup_security: security_task_free(p); bad_fork_cleanup_policy: +#ifdef CONFIG_NUMA mpol_free(p->mempolicy); +#endif bad_fork_cleanup: if (p->pid > 0) free_pidmap(p->pid); diff --git a/mm/mempolicy.c b/mm/mempolicy.c index 63b01f4b3368..d4c9c9b92232 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -72,6 +72,7 @@ #include #include #include +#include #include static kmem_cache_t *policy_cache; diff --git a/mm/mmap.c b/mm/mmap.c index 0a570ac3b4de..6b0a9036abff 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include diff --git a/mm/mprotect.c b/mm/mprotect.c index d7c3e33a855f..7934dcec6e27 100644 --- a/mm/mprotect.c +++ b/mm/mprotect.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include diff --git a/mm/shmem.c b/mm/shmem.c index 6af8c3afcf56..5a6d56a450d8 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include -- 2.39.5