summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Morton <akpm@osdl.org>2004-05-22 08:04:51 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2004-05-22 08:04:51 -0700
commite52c02f76ae684f86f18f0fc7d7577e22a4d9318 (patch)
tree0943aa14e6adce0f4d479a6e158700714f8b9114
parentd31d7a1874c710a5c1b589807d53f32d8e7df397 (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.c1
-rw-r--r--arch/ia64/kernel/perfmon.c1
-rw-r--r--arch/ia64/mm/init.c1
-rw-r--r--arch/x86_64/ia32/ia32_binfmt.c1
-rw-r--r--fs/exec.c1
-rw-r--r--include/linux/mm.h3
-rw-r--r--include/linux/sched.h4
-rw-r--r--kernel/exit.c3
-rw-r--r--kernel/fork.c5
-rw-r--r--mm/mempolicy.c1
-rw-r--r--mm/mmap.c1
-rw-r--r--mm/mprotect.c1
-rw-r--r--mm/shmem.c1
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>