>>> +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.

_______________________________________________
Devel mailing list
Devel@openvz.org
https://openvz.org/mailman/listinfo/devel

Reply via email to