[CRIU] [PATCH] compel: new catch and "release at" helpers added

Pavel Emelyanov xemul at virtuozzo.com
Fri Mar 17 08:03:48 PDT 2017


On 03/17/2017 05:59 PM, Stanislav Kinsburskiy wrote:
> 
> 
> 17.03.2017 15:43, Pavel Emelyanov пишет:
>> On 03/17/2017 04:54 PM, Stanislav Kinsburskiy wrote:
>>>
>>> 17.03.2017 14:41, Pavel Emelyanov пишет:
>>>> On 03/17/2017 04:31 PM, Stanislav Kinsburskiy wrote:
>>>>> 17.03.2017 14:28, Pavel Emelyanov пишет:
>>>>>> On 03/16/2017 02:43 PM, Stanislav Kinsburskiy wrote:
>>>>>>> These helpers are compel_run_at split result.
>>>>>> BTW, the compel_run_at itself seems to be unused.
>>>>> I use it.
>>>> Ah :) OK, can we then give this trio some better names?
>>>> Because run_at, release_at and catch do not give a valid
>>>> impression on what they really do.
>>> Well, naming is not one of my good skills. But, frankly, in this case I
>>> like the names. There are pretty clear (and meaningful) to me.
>>> What might be other options&?
>> release_at -> step_start
>> catch -> step_wait
>> run_at -> step = step_start + step_wait
>>
>> ?
> 
> Emmm... What does "step" here mean?
> It remains me GDB "step" and this is very obfuscating.

OK, makes sense. What's your proposal? "Keeping the name as is" is not nice, 
try to come up with smth else.

-- Pavel

>>>> -- Pavel
>>>>
>>>>>>> IOW, it's an asynchronious way
>>>>>>> of calling some binary code in remote process and cathing it after it's done.
>>>>>>>
>>>>>>> Signed-off-by: Stanislav Kinsburskiy <skinsbursky at virtuozzo.com>
>>>>>>> ---
>>>>>>>     compel/include/uapi/infect.h |    2 ++
>>>>>>>     compel/src/lib/infect.c      |   14 ++++++++++++++
>>>>>>>     2 files changed, 16 insertions(+)
>>>>>>>
>>>>>>> diff --git a/compel/include/uapi/infect.h b/compel/include/uapi/infect.h
>>>>>>> index da0ca3a..aebb77c 100644
>>>>>>> --- a/compel/include/uapi/infect.h
>>>>>>> +++ b/compel/include/uapi/infect.h
>>>>>>> @@ -66,6 +66,8 @@ extern int compel_syscall(struct parasite_ctl *ctl, int nr, long *ret,
>>>>>>>     		unsigned long arg6);
>>>>>>>     extern int compel_run_in_thread(struct parasite_thread_ctl *tctl, unsigned int cmd);
>>>>>>>     extern int compel_run_at(struct parasite_ctl *ctl, unsigned long ip, user_regs_struct_t *ret_regs);
>>>>>>> +extern int compel_release_at(struct parasite_ctl *ctl, unsigned long ip);
>>>>>>> +extern int compel_catch(struct parasite_ctl *ctl, user_regs_struct_t *ret_regs);
>>>>>>>     
>>>>>>>     /*
>>>>>>>      * The PTRACE_SYSCALL will trap task twice -- on
>>>>>>> diff --git a/compel/src/lib/infect.c b/compel/src/lib/infect.c
>>>>>>> index c024250..a2cb5d6 100644
>>>>>>> --- a/compel/src/lib/infect.c
>>>>>>> +++ b/compel/src/lib/infect.c
>>>>>>> @@ -581,6 +581,20 @@ int compel_run_at(struct parasite_ctl *ctl, unsigned long ip, user_regs_struct_t
>>>>>>>     	return ret;
>>>>>>>     }
>>>>>>>     
>>>>>>> +int compel_release_at(struct parasite_ctl *ctl, unsigned long ip)
>>>>>>> +{
>>>>>>> +	user_regs_struct_t regs = ctl->orig.regs;
>>>>>>> +
>>>>>>> +	return parasite_run(ctl->rpid, PTRACE_CONT, ip, 0, &regs, &ctl->orig);
>>>>>>> +}
>>>>>>> +
>>>>>>> +int compel_catch(struct parasite_ctl *ctl, user_regs_struct_t *ret_regs)
>>>>>>> +{
>>>>>>> +	user_regs_struct_t regs;
>>>>>>> +
>>>>>>> +	return parasite_trap(ctl, ctl->rpid, ret_regs ? ret_regs : &regs, &ctl->orig);
>>>>>>> +}
>>>>>>> +
>>>>>>>     static int accept_tsock(struct parasite_ctl *ctl)
>>>>>>>     {
>>>>>>>     	int sock;
>>>>>>>
>>>>>>> .
>>>>>>>
>>>>> .
>>>>>
>>> .
>>>
> 
> .
> 



More information about the CRIU mailing list