2013年8月22日

fork 至 “sys_clone" SyS_clone

摘要: 注:glibc-2.17中fork的相应系统调用是sys_clone及SyS_clone。有人说调用的是sys_fork,但是我持否定意见,如果我们向真的来发起系统调用可以使用syscall。fork系统调用等价于直接调用的就是do_fork(CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID | SIGCHILD, NULL, NULL, NULL, &THREAD_SELF->tid)。&THREAD_SELF->tid放在svc状态下的栈上,前四个参数在r0~r3中。比较简单,sys_clone实际上是SyS_clone__ve 阅读全文

posted @ 2013-08-22 13:26 阿加 阅读(1509) 评论(0) 推荐(0) 编辑

glibc中fork系统调用传参

摘要: 因为想跟踪下在新建进程时,如何处理新建进程的vruntime,所以跟踪了下fork。以glic-2.17中ARM为例(unicore架构的没找到),实际上通过寄存器向系统调用传递的参数为:r7: __NR_clone 120r0: CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID | SIGCHLDr1: NULLr2: NULLr3: NULLr4: &THREAD_SELF->tidfork()---->__fork()---->__libc_fork()__libc_fork()---->INLINE_SYSCALL (c 阅读全文

posted @ 2013-08-22 10:09 阿加 阅读(1784) 评论(0) 推荐(0) 编辑

导航