support PTRACE_SETREGS.
In struct process, add 'unsigned long *ptrace_debugreg', instead of 'struct user *userp'.
debug registers are read/written from/to ptrace_debugreg, save/restore in schedule().
most general registers are proc->uctx.
fs_base is proc->thread.tlsblock_base.
gs_base,ds,es,fs,gs and orig_rax are uncompleted.
other members in 'struct user' are ignored, same as Linux implementation.
refs #257
refs #373
refs #263
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
| mckernel/kernel/../arch/x86/kernel/memory.c: In function '__set_pt_page':
| mckernel/kernel/../arch/x86/kernel/memory.c:367:
| warning: 'init_pt_lock_flags' may be used uninitialized in this function
| mckernel/kernel/host.c: In function 'syscall_packet_handler':
| mckernel/kernel/host.c:504:
| warning: implicit declaration of function 'find_command_line'
| mckernel/kernel/syscall.c: In function 'do_syscall':
| mckernel/kernel/syscall.c:187:
| warning: 'irqstate' may be used uninitialized in this function
| mckernel/kernel/syscall.c: In function 'sys_madvise':
| mckernel/kernel/syscall.c:2108:
| warning: 'range' may be used uninitialized in this function
Parameters of dkprintf() should be evaluated even if dkprintf() is
disabled. Because this enables to find expression of parameter obsolete
and to avoid unnecessary compiler warnings such as "unused variable".
XXX: When CLONE_VM is set but CLONE_THREAD is not the new thread is
meant to have its own thread group, i.e., when calling exit_group()
the cloner thread wouldn't be killed. However, this is a problem on
the Linux side because we do not invoke clone in mcexec when threads
are created. Thus, currently no support for this combination is
provided.