diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/binfmts.h | 1 | ||||
| -rw-r--r-- | include/linux/elfcore.h | 1 | ||||
| -rw-r--r-- | include/linux/init_task.h | 2 | ||||
| -rw-r--r-- | include/linux/mm.h | 6 | ||||
| -rw-r--r-- | include/linux/ptrace.h | 24 | ||||
| -rw-r--r-- | include/linux/sched.h | 2 |
6 files changed, 28 insertions, 8 deletions
diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h index 314addb2329d..dfea0f47ed3e 100644 --- a/include/linux/binfmts.h +++ b/include/linux/binfmts.h @@ -1,7 +1,6 @@ #ifndef _LINUX_BINFMTS_H #define _LINUX_BINFMTS_H -#include <linux/ptrace.h> #include <linux/capability.h> /* diff --git a/include/linux/elfcore.h b/include/linux/elfcore.h index 3129abe828fc..ebf16207732d 100644 --- a/include/linux/elfcore.h +++ b/include/linux/elfcore.h @@ -4,7 +4,6 @@ #include <linux/types.h> #include <linux/signal.h> #include <linux/time.h> -#include <linux/ptrace.h> #include <linux/user.h> struct elf_siginfo diff --git a/include/linux/init_task.h b/include/linux/init_task.h index d023d2360a71..80a57914bccc 100644 --- a/include/linux/init_task.h +++ b/include/linux/init_task.h @@ -54,6 +54,8 @@ .run_list = LIST_HEAD_INIT(tsk.run_list), \ .time_slice = HZ, \ .tasks = LIST_HEAD_INIT(tsk.tasks), \ + .ptrace_children= LIST_HEAD_INIT(tsk.ptrace_children), \ + .ptrace_list = LIST_HEAD_INIT(tsk.ptrace_list), \ .real_parent = &tsk, \ .parent = &tsk, \ .children = LIST_HEAD_INIT(tsk.children), \ diff --git a/include/linux/mm.h b/include/linux/mm.h index c4395b9fe950..d731c02741b9 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -354,12 +354,6 @@ extern pte_t *FASTCALL(pte_alloc_map(struct mm_struct *mm, pmd_t *pmd, unsigned extern int handle_mm_fault(struct mm_struct *mm,struct vm_area_struct *vma, unsigned long address, int write_access); extern int make_pages_present(unsigned long addr, unsigned long end); extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, int write); -extern int ptrace_readdata(struct task_struct *tsk, unsigned long src, char *dst, int len); -extern int ptrace_writedata(struct task_struct *tsk, char * src, unsigned long dst, int len); -extern int ptrace_attach(struct task_struct *tsk); -extern int ptrace_detach(struct task_struct *, unsigned int); -extern void ptrace_disable(struct task_struct *); -extern int ptrace_check_attach(struct task_struct *task, int kill); int get_user_pages(struct task_struct *tsk, struct mm_struct *mm, unsigned long start, int len, int write, int force, struct page **pages, struct vm_area_struct **vmas); diff --git a/include/linux/ptrace.h b/include/linux/ptrace.h index 0a02879d546f..78512fa922b9 100644 --- a/include/linux/ptrace.h +++ b/include/linux/ptrace.h @@ -3,6 +3,8 @@ /* ptrace.h */ /* structs and defines to help the user use the ptrace system call. */ +#include <linux/compiler.h> + /* has the defines to get at the registers. */ #define PTRACE_TRACEME 0 @@ -23,4 +25,26 @@ #include <asm/ptrace.h> +extern int ptrace_readdata(struct task_struct *tsk, unsigned long src, char *dst, int len); +extern int ptrace_writedata(struct task_struct *tsk, char * src, unsigned long dst, int len); +extern int ptrace_attach(struct task_struct *tsk); +extern int ptrace_detach(struct task_struct *, unsigned int); +extern void ptrace_disable(struct task_struct *); +extern int ptrace_check_attach(struct task_struct *task, int kill); +extern void __ptrace_link(struct task_struct *child, + struct task_struct *new_parent); +extern void __ptrace_unlink(struct task_struct *child); + +static inline void ptrace_link(struct task_struct *child, + struct task_struct *new_parent) +{ + if (unlikely(child->ptrace)) + __ptrace_link(child, new_parent); +} +static inline void ptrace_unlink(struct task_struct *child) +{ + if (unlikely(child->ptrace)) + __ptrace_unlink(child); +} + #endif diff --git a/include/linux/sched.h b/include/linux/sched.h index 5713927c300a..5afeecb164b9 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -270,6 +270,8 @@ struct task_struct { unsigned int time_slice, first_time_slice; struct list_head tasks; + struct list_head ptrace_children; + struct list_head ptrace_list; struct mm_struct *mm, *active_mm; struct list_head local_pages; |
