support PTRACE_O_TRACEFORK, PTRACE_O_TRACEVFORK, PTRACE_O_TRACEVFORKDONE.
to start with a SIGSTOP, do not set proc->ftn->status to PS_RUNNING in __runq_add_proc(). change vfork() set CLONE_VFORK. refs #266 refs #267 refs #372 support PTRACE_GETEVENTMSG. to store ptrace event, add 'unsigned long ptrace_eventmsg;' member in struct fork_tree_node. refs #273
This commit is contained in:
@@ -349,7 +349,7 @@ int ptrace_traceme(void){
|
||||
struct fork_tree_node *child, *next;
|
||||
dkprintf("ptrace_traceme,pid=%d,proc->ftn->parent=%p\n", proc->ftn->pid, proc->ftn->parent);
|
||||
|
||||
if (proc->ftn->parent == NULL) {
|
||||
if (proc->ftn->parent == NULL || proc->ftn->ptrace) {
|
||||
error = -EPERM;
|
||||
goto out;
|
||||
}
|
||||
@@ -2183,7 +2183,7 @@ void __runq_add_proc(struct process *proc, int cpu_id)
|
||||
list_add_tail(&proc->sched_list, &v->runq);
|
||||
++v->runq_len;
|
||||
proc->cpu_id = cpu_id;
|
||||
proc->ftn->status = PS_RUNNING;
|
||||
//proc->ftn->status = PS_RUNNING; /* not set here */
|
||||
get_cpu_local_var(cpu_id)->status = CPU_STATUS_RUNNING;
|
||||
|
||||
dkprintf("runq_add_proc(): tid %d added to CPU[%d]'s runq\n",
|
||||
|
||||
Reference in New Issue
Block a user