[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