x86, bts: add fork and exit handling

Impact: introduce new ptrace facility

Add arch_ptrace_untrace() function that is called when the tracer
detaches (either voluntarily or when the tracing task dies);
ptrace_disable() is only called on a voluntary detach.

Add ptrace_fork() and arch_ptrace_fork(). They are called when a
traced task is forked.

Clear DS and BTS related fields on fork.

Release DS resources and reclaim memory in ptrace_untrace(). This
releases resources already when the tracing task dies. We used to do
that when the traced task dies.

Signed-off-by: Markus Metzger <markus.t.metzger@intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
Markus Metzger
2008-12-19 15:10:24 +01:00
committed by Ingo Molnar
parent 30cd324e97
commit bf53de907d
9 changed files with 119 additions and 30 deletions

View File

@@ -1017,3 +1017,14 @@ void ds_switch_to(struct task_struct *prev, struct task_struct *next)
update_debugctlmsr(next->thread.debugctlmsr);
}
void ds_copy_thread(struct task_struct *tsk, struct task_struct *father)
{
clear_tsk_thread_flag(tsk, TIF_DS_AREA_MSR);
tsk->thread.ds_ctx = NULL;
}
void ds_exit_thread(struct task_struct *tsk)
{
WARN_ON(tsk->thread.ds_ctx);
}