[CRIU] Re: Before we do the CRIU v0.1 release

Cyrill Gorcunov gorcunov at openvz.org
Fri Jul 20 04:23:12 EDT 2012


On Fri, Jul 20, 2012 at 12:14:02PM +0400, Pavel Emelyanov wrote:
> > +message core_entry {
> > +       enum march {
> > +               UNKNOWN         = 0;
> > +               X86_64          = 1;
> > +       }
> > +
> > +       required march                  mtype           = 1;
> > +       optional thread_info_x86        thread_info     = 2;
> > +
> > +       required task_core_entry        tc              = 3;
> > +       required core_ids_entry         ids             = 4;
> > +}
> 
> Both tc and ids MUST be optional and SHOULD NOT be dumped for threads.
> Main thread MUST fail restore if these fields are missing.
> (The thread_info MUST be present on restore, but MUST remain optional.)

OK

> > +message thread_info_x86 {
> > +       required arch_x86_entry         arch_x86        = 1;
> > +       required uint64                 clear_tid_addr  = 2;
> > +}
> 
> Don't see much point in intermediate message. I.e. thread_info_x86 = { user_x86_regs, _fpregs and clear_tid_addr }

OK

> > @@ -60,15 +61,15 @@ struct thread_restore_args {
> >         struct restore_mem_zone         mem_zone;
> > 
> >         int                             pid;
> > -       int                             fd_core;
> >         mutex_t                         *rst_lock;
> > +       UserX86RegsEntry                gpregs;
> > +       u64                             clear_tid_addr;
> 
> Should be ThreadInfoX86Entry actually.

No. ThreadInfoX86Entry will have pointers to user_x86_regs and such which
is forbitten here, we provide own memory tp carry this entries and
we need to "copy by values". I mean that usually this thread_info_x86
will look like (on C level)

struct thread_info_x86 {
	user_x86_regs *p;
	...
}

and of course I can't refer to "p" from inside restorer resident code,
instead i need fully embedded user_x86_regs structure so that I can
read every register value from restorer itself.

But if you still prefer to see ThreadInfoX86Entry here I need to
put contents of dereferenced ThreadInfoX86Entry members somewhere
on restorer heap and tune up pointers value. Should I?

> >         u64                             mm_saved_auxv[AT_VECTOR_SIZE];
> > +       u64                             clear_tid_addr;
> > +       u64                             blk_sigset;
> > +       char                            comm[TASK_COMM_LEN];
> > +       CoreIdsEntry                    ids;
> > +       UserX86RegsEntry                gpregs;
> 
> Should be ThreadInfoX86Entry and TaskCoreEntry (with comm pointer pointing to on-args variable.

Hmm, ok.

> IMO task_kobj_ids_entry name is better.

Sure.

	Cyrill


More information about the CRIU mailing list