PERFORCE change 167065 for review

Julian Elischer julian at elischer.org
Thu Aug 6 15:16:45 UTC 2009


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.


> 


thanks for the comments..
could you possibly change the doc to suite? I don't have a p4 tree 
right now.




More information about the p4-projects mailing list