[CRIU] [PATCH 6/6] protobuf: add criu.hex = true options to int64 fields
Pavel Emelyanov
xemul at parallels.com
Mon Jan 19 02:47:01 PST 2015
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
More information about the CRIU
mailing list