diff options
| author | Andrew Morton <akpm@osdl.org> | 2004-05-22 08:04:51 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-05-22 08:04:51 -0700 |
| commit | e52c02f76ae684f86f18f0fc7d7577e22a4d9318 (patch) | |
| tree | 0943aa14e6adce0f4d479a6e158700714f8b9114 | |
| parent | d31d7a1874c710a5c1b589807d53f32d8e7df397 (diff) | |
[PATCH] small numa api fixups
From: Christoph Hellwig <hch@lst.de>
- 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.
| -rw-r--r-- | arch/ia64/ia32/binfmt_elf32.c | 1 | ||||
| -rw-r--r-- | arch/ia64/kernel/perfmon.c | 1 | ||||
| -rw-r--r-- | arch/ia64/mm/init.c | 1 | ||||
| -rw-r--r-- | arch/x86_64/ia32/ia32_binfmt.c | 1 | ||||
| -rw-r--r-- | fs/exec.c | 1 | ||||
| -rw-r--r-- | include/linux/mm.h | 3 | ||||
| -rw-r--r-- | include/linux/sched.h | 4 | ||||
| -rw-r--r-- | kernel/exit.c | 3 | ||||
| -rw-r--r-- | kernel/fork.c | 5 | ||||
| -rw-r--r-- | mm/mempolicy.c | 1 | ||||
| -rw-r--r-- | mm/mmap.c | 1 | ||||
| -rw-r--r-- | mm/mprotect.c | 1 | ||||
| -rw-r--r-- | 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 <linux/types.h> #include <linux/mm.h> #include <linux/security.h> +#include <linux/mempolicy.h> #include <asm/param.h> #include <asm/signal.h> 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 <linux/pagemap.h> #include <linux/mount.h> #include <linux/version.h> +#include <linux/mempolicy.h> #include <asm/bitops.h> #include <asm/errno.h> 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 <linux/slab.h> #include <linux/swap.h> #include <linux/proc_fs.h> +#include <linux/mempolicy.h> #include <asm/a.out.h> #include <asm/bitops.h> 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 <linux/binfmts.h> #include <linux/mm.h> #include <linux/security.h> +#include <linux/mempolicy.h> #include <asm/segment.h> #include <asm/ptrace.h> 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 <linux/security.h> #include <linux/syscalls.h> #include <linux/rmap.h> +#include <linux/mempolicy.h> #include <asm/uaccess.h> #include <asm/pgalloc.h> 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 <linux/mmzone.h> #include <linux/rbtree.h> #include <linux/fs.h> -#include <linux/mempolicy.h> + +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 <linux/completion.h> #include <linux/pid.h> #include <linux/percpu.h> -#include <linux/mempolicy.h> 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 <linux/profile.h> #include <linux/mount.h> #include <linux/proc_fs.h> +#include <linux/mempolicy.h> #include <asm/uaccess.h> #include <asm/unistd.h> @@ -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 <linux/completion.h> #include <linux/namespace.h> #include <linux/personality.h> +#include <linux/mempolicy.h> #include <linux/sem.h> #include <linux/file.h> #include <linux/binfmts.h> @@ -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 <linux/interrupt.h> #include <linux/init.h> #include <linux/compat.h> +#include <linux/mempolicy.h> #include <asm/uaccess.h> 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 <linux/profile.h> #include <linux/module.h> #include <linux/mount.h> +#include <linux/mempolicy.h> #include <asm/uaccess.h> #include <asm/pgalloc.h> 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 <linux/fs.h> #include <linux/highmem.h> #include <linux/security.h> +#include <linux/mempolicy.h> #include <asm/uaccess.h> #include <asm/pgalloc.h> 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 <linux/blkdev.h> #include <linux/security.h> #include <linux/swapops.h> +#include <linux/mempolicy.h> #include <asm/uaccess.h> #include <asm/div64.h> #include <asm/pgtable.h> |
