diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-21 18:38:43 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-21 18:38:43 -0400 |
commit | 5f033bb9bc5cb3bb37a79e3ef131f50ecdcb72b0 (patch) | |
tree | 16c6fdc3fab80d88ea4d8fd7eb302097f97c062c /arch/x86/kernel/process.c | |
parent | fd9be4ce2e1eb407a8152f823698cc0d652bbec8 (diff) | |
parent | 34d0559178393547505ec9492321255405f4e441 (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86: (77 commits)
x86: UV startup of slave cpus
x86: integrate pci-dma.c
x86: don't do dma if mask is NULL.
x86: return conditional to mmu
x86: remove kludge from x86_64
x86: unify gfp masks
x86: retry allocation if failed
x86: don't try to allocate from DMA zone at first
x86: use a fallback dev for i386
x86: use numa allocation function in i386
x86: remove virt_to_bus in pci-dma_64.c
x86: adjust dma_free_coherent for i386
x86: move bad_dma_address
x86: isolate coherent mapping functions
x86: move dma_coherent functions to pci-dma.c
x86: merge iommu initialization parameters
x86: merge dma_supported
x86: move pci fixup to pci-dma.c
x86: move x86_64-specific to common code.
x86: move initialization functions to pci-dma.c
...
Diffstat (limited to 'arch/x86/kernel/process.c')
-rw-r--r-- | arch/x86/kernel/process.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c new file mode 100644 index 000000000000..3004d716539d --- /dev/null +++ b/arch/x86/kernel/process.c | |||
@@ -0,0 +1,44 @@ | |||
1 | #include <linux/errno.h> | ||
2 | #include <linux/kernel.h> | ||
3 | #include <linux/mm.h> | ||
4 | #include <linux/smp.h> | ||
5 | #include <linux/slab.h> | ||
6 | #include <linux/sched.h> | ||
7 | |||
8 | struct kmem_cache *task_xstate_cachep; | ||
9 | |||
10 | int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src) | ||
11 | { | ||
12 | *dst = *src; | ||
13 | if (src->thread.xstate) { | ||
14 | dst->thread.xstate = kmem_cache_alloc(task_xstate_cachep, | ||
15 | GFP_KERNEL); | ||
16 | if (!dst->thread.xstate) | ||
17 | return -ENOMEM; | ||
18 | WARN_ON((unsigned long)dst->thread.xstate & 15); | ||
19 | memcpy(dst->thread.xstate, src->thread.xstate, xstate_size); | ||
20 | } | ||
21 | return 0; | ||
22 | } | ||
23 | |||
24 | void free_thread_xstate(struct task_struct *tsk) | ||
25 | { | ||
26 | if (tsk->thread.xstate) { | ||
27 | kmem_cache_free(task_xstate_cachep, tsk->thread.xstate); | ||
28 | tsk->thread.xstate = NULL; | ||
29 | } | ||
30 | } | ||
31 | |||
32 | void free_thread_info(struct thread_info *ti) | ||
33 | { | ||
34 | free_thread_xstate(ti->task); | ||
35 | free_pages((unsigned long)ti, get_order(THREAD_SIZE)); | ||
36 | } | ||
37 | |||
38 | void arch_task_cache_init(void) | ||
39 | { | ||
40 | task_xstate_cachep = | ||
41 | kmem_cache_create("task_xstate", xstate_size, | ||
42 | __alignof__(union thread_xstate), | ||
43 | SLAB_PANIC, NULL); | ||
44 | } | ||