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