PERFORCE change 167065 for review

John Baldwin jhb at freebsd.org
Fri Aug 7 12:44:47 UTC 2009


On Thursday 06 August 2009 11:16:41 am Julian Elischer wrote:
> John Baldwin wrote:
> > On Thursday 06 August 2009 10:04:18 am Marko Zec wrote:
> >> http://perforce.freebsd.org/chv.cgi?CH=167065
> >>
> >> Change 167065 by zec at zec_tpx32 on 2009/08/06 14:03:58
> >>
> >> 	Merge Julian's updates to V_ instructions document.
> >> 	Submitted by:	julian
> >>
> >> Affected files ...
> >>
> >> .. //depot/projects/vimage/porting_to_vimage.txt#10 edit
> >>
> >> Differences ...
> >>
> >> ==== //depot/projects/vimage/porting_to_vimage.txt#10 (text+ko) ====
> >>
> >> -#endif /* !_FOO_VFOO_H_ */
> >> -=========================================================
> >> +On BOOT, the order of evaluation will be:
> >> +  In a NON-VIMAGE kernel where the module is compiled:
> >> +     MODEVENT, SYSINIT and VNET_SYSINIT both runm with order defined by 
> > their
> >> +     order declarations. {good foot shooting aterial if you get it 
wrong!}
> >>  
> >> +  In a VIMAGE kernel where the module is compiled:
> >> +     MODEVNET, SYSINIT and VNET_SYSINIT both runm with order defined by 
> > their
> >> +     order declarations.  AND in addition, the VNET_SYSINIT being
> >> +     repeated once for every new jail/vnet.
> >>  
> >> +On loading a vnet enabled kernel module after boot:
> >> +      MODEVENT("event = load");
> >> +      SYSINIT()
> >> +      VNET_SYSINIT() for every existing jail
> >> +        AND in addition, VNET_SYSINIT being called for each new jail 
> > created.
> >>  
> >> +On unloading of module:
> >> +      MODEVENT("event = quiesce")
> >> +      MODEVENT("event = unload")
> >> +      VNET_SYSUNINIT called for every jail/vnet
> >> +      SYSUNINIT
> >>  
> >> +On system shutdown:
> >> +      effectively the same as unload
> >> +	{with exception of modevent?}
> > 
> > On system shutdown MOD_SHUTDOWN is the only MODEVENT handler invoked.
> > 
> >> +NOTICE that while the order of the SYSINIT and VNET_SYSINIT is reversed 
> > from
> >> +that of SYSUNINIT and VNET_SYSUNINIT, MODEVENTS do not follow
> >> +this rule and thus it is dangerous to initialise and uninitialise
> >> +things which are order dependent using MODEVENTs.
> > 
> > This is no longer true.  MOD_QUIESCE and MOD_UNLOAD events now run in the 
> > reverse of the order that MOD_LOAD is invoked for a given kld during 
> > kldunload.  This is true in both 7 and 8 now for several months.
> 
> I meant the order within the entries for the same module.
> Since MODEVENT is called first during load, it would, by the
> assumption that everything is reversed easy to assume that MODEVENT
> is called AFTER the SYSINITS during unload.  This is in fact not the 
> case, and I have the scars to prove it.
> It might be make some sense if the "QUIESCE" was called before the 
> SYSINIT/SYSUNINIT and the UNLOAD called after.. with a millisecond 
> sleep between them.

I'm not sure you need the millisecond sleep.  This is a bit tricky to resolve 
and is a general problem with mixing module events with sysuninit.  I'm not 
really entirely sure what the best answer to that is aside from documenting 
it as such for now.

-- 
John Baldwin


More information about the p4-projects mailing list