[CRIU] [PATCH 6/6] protobuf: add criu.hex = true options to int64 fields

Ruslan Kuprieiev kupruser at gmail.com
Mon Jan 19 03:34:21 PST 2015


On 01/19/2015 12:50 PM, Ruslan Kuprieiev wrote:
>
> On 01/19/2015 12:47 PM, Pavel Emelyanov wrote:
>> On 01/19/2015 01:32 PM, Ruslan Kuprieiev wrote:
>>> On 01/19/2015 12:09 PM, Pavel Emelyanov wrote:
>>>> On 01/16/2015 11:55 PM, Ruslan Kuprieiev wrote:
>>>>> Signed-off-by: Ruslan Kuprieiev <kupruser at gmail.com>
>>>>> ---
>>>>>    protobuf/core-x86.proto | 64 
>>>>> +++++++++++++++++++++++++------------------------
>>>>>    1 file changed, 33 insertions(+), 31 deletions(-)
>>>>>
>>>>> diff --git a/protobuf/core-x86.proto b/protobuf/core-x86.proto
>>>>> index b6eb0b3..0b1066b 100644
>>>>> --- a/protobuf/core-x86.proto
>>>>> +++ b/protobuf/core-x86.proto
>>>>> @@ -1,35 +1,37 @@
>>>>> +import "opts.proto";
>>>>> +
>>>>>    message user_x86_regs_entry {
>>>>> -    required uint64            r15        =  1;
>>>>> -    required uint64            r14        =  2;
>>>>> -    required uint64            r13        =  3;
>>>>> -    required uint64            r12        =  4;
>>>>> -    required uint64            bp        =  5;
>>>>> -    required uint64            bx        =  6;
>>>>> -    required uint64            r11        =  7;
>>>>> -    required uint64            r10        =  8;
>>>>> -    required uint64            r9        =  9;
>>>>> -    required uint64            r8        = 10;
>>>>> -    required uint64            ax        = 11;
>>>>> -    required uint64            cx        = 12;
>>>>> -    required uint64            dx        = 13;
>>>>> -    required uint64            si        = 14;
>>>>> -    required uint64            di        = 15;
>>>>> -    required uint64            orig_ax        = 16;
>>>>> -    required uint64            ip        = 17;
>>>>> -    required uint64            cs        = 18;
>>>>> -    required uint64            flags        = 19;
>>>>> -    required uint64            sp        = 20;
>>>>> -    required uint64            ss        = 21;
>>>>> -    required uint64            fs_base        = 22;
>>>>> -    required uint64            gs_base        = 23;
>>>>> -    required uint64            ds        = 24;
>>>>> -    required uint64            es        = 25;
>>>>> -    required uint64            fs        = 26;
>>>>> -    required uint64            gs        = 27;
>>>>> +    required uint64            r15        =  1[(criu).hex = true];
>>>>> +    required uint64            r14        =  2[(criu).hex = true];
>>>>> +    required uint64            r13        =  3[(criu).hex = true];
>>>>> +    required uint64            r12        =  4[(criu).hex = true];
>>>>> +    required uint64            bp        =  5[(criu).hex = true];
>>>>> +    required uint64            bx        =  6[(criu).hex = true];
>>>>> +    required uint64            r11        =  7[(criu).hex = true];
>>>>> +    required uint64            r10        =  8[(criu).hex = true];
>>>>> +    required uint64            r9        =  9[(criu).hex = true];
>>>>> +    required uint64            r8        = 10[(criu).hex = true];
>>>>> +    required uint64            ax        = 11[(criu).hex = true];
>>>>> +    required uint64            cx        = 12[(criu).hex = true];
>>>>> +    required uint64            dx        = 13[(criu).hex = true];
>>>>> +    required uint64            si        = 14[(criu).hex = true];
>>>>> +    required uint64            di        = 15[(criu).hex = true];
>>>>> +    required uint64            orig_ax        = 16[(criu).hex = 
>>>>> true];
>>>>> +    required uint64            ip        = 17[(criu).hex = true];
>>>>> +    required uint64            cs        = 18[(criu).hex = true];
>>>>> +    required uint64            flags        = 19[(criu).hex = true];
>>>>> +    required uint64            sp        = 20[(criu).hex = true];
>>>>> +    required uint64            ss        = 21[(criu).hex = true];
>>>>> +    required uint64            fs_base        = 22[(criu).hex = 
>>>>> true];
>>>>> +    required uint64            gs_base        = 23[(criu).hex = 
>>>>> true];
>>>>> +    required uint64            ds        = 24[(criu).hex = true];
>>>>> +    required uint64            es        = 25[(criu).hex = true];
>>>>> +    required uint64            fs        = 26[(criu).hex = true];
>>>>> +    required uint64            gs        = 27[(criu).hex = true];
>>>> I'm not quite happy with marking all 27 fields with this. Can we
>>>> teach crit to "inherit" this option? Like this -- this object, the
>>>> user_x86_regs_entry, is referenced by thread_info_x86's gpregs field.
>>>> So let's mark the "gpregs" field with [(criu).hex = true] and make
>>>> crit apply this option to the whole "submessage" pointed by it.
>>>>
>>>> Can we?
>>>>
>>> Yes, we can. But how many of those "all hex" messages do we have?
>> Let's see... sa_entry, regs_entry-s (for all archs), ... I think
>> it's all.
>>
>>> I'm afraid that marking messages as hex might be confusing in both
>>> .proto files and CRIT source.
>> Why in CRIT sources? No, only in .proto files. CRIT should just we
>> taught to "remember" the criu.hex option into submessages.
>>
>> Thanks,
>> Pavel
>>
>
> Ok, could you drop this particular one, please, and consider the other 
> patches from this set?
> I will send an incremental one separately to support "all hex" messages.
>
>

Done. Please, see [PATCH 0/2] crit: add support for 'all hex' messages .


More information about the CRIU mailing list