Messages in this thread | | | Date | Wed, 22 Oct 2008 14:47:50 +0200 | From | Cedric Le Goater <> | Subject | Re: [Devel] Re: [PATCH 08/10] Introduce functions to restart a process |
| |
>>> +ENTRY(i386_ret_from_resume) >>> + CFI_STARTPROC >>> + pushl %eax >>> + CFI_ADJUST_CFA_OFFSET 4 >>> + call schedule_tail >>> + GET_THREAD_INFO(%ebp) >>> + popl %eax >>> + CFI_ADJUST_CFA_OFFSET -4 >>> + movl (%esp), %eax >>> + testl %eax, %eax >>> + jz 1f >>> + pushl %esp >>> + call *%eax >>> + addl $4, %esp >>> +1: >>> + addl $256, %esp >>> + jmp ret_from_fork_tail >>> + CFI_ENDPROC >>> +END(i386_ret_from_resume) >> Could you explain why you need to do this >> >> call *%eax >> >> is it related to the freezer code ? > > It is not related to the freezer code actually. > That is needed to restart syscalls. Right now I don't have a code in my > patchset which restarts a syscall, but later I plan to add it. > In OpenVZ checkpointing we restart syscalls if process was caught in syscall > during checkpointing.
ok. I get it now. why 256 bytes of extra stack ? I'm sure it's not random.
Thanks,
C.
| |