scratch some of this. I'm answering my own questions :p

I see what the _init_fini_event() does. 

The SHUTDOWN event may be before the DISABLE event in the event queue, 
but always after the FINI event.  The solution will be for the FINI 
event to disable the object rather than enqueuing the DISABLE event.

Anurag


Anurag S. Maskey wrote:
> I'm looking at the _init_event() and _fini_event() functions and 
> comparing with _init_fini_event() functions.   What's the purpose of 
> having the _init_fini_event() function? All it does it enqueue events 
> that call either the _init_event() or _fini_event() function.
>
> The last thing we do in graceful_shutdown() is enqueue a SHUTDOWN 
> event.  But because of the chain of events, some of the events don't run.
>
> What happens currently on graceful_shutdown (taking enms as an 
> example, locations and ncus are similar):
>
>    1. call nwamd_fini_enms().
>    2. call nwamd_enm_init_fini_event() which enqueues a FINI event for
>    each enm
>            [ ... wait in event queue ...]
>    3. call nwamd_enm_fini_event() which enqueues a DISABLE event
>            [ ... wait in event queue ...]
>    4. call nwamd_enm_action() which calls nwamd_enm_disable_event().
>
>
> Now, in that one event queue, the SHUTDOWN event may be before the 
> FINI or DISABLE event depending on thread timing, which renders those 
> events useless.
>
> I propose that nwamd_fini_enms() enqueue a FINI event for each enm.  
> These FINI events and the ones for location and ncus are followed by 
> the SHUTDOWN event in the event queue.
> Then when nwamd_enm_fini_event() is called, it synchronously calls 
> nwamd_enm_disable_event() and frees state. (locations and ncus are 
> similar)
>
> This makes sure that when the SHUTDOWN event is dequeued, all other 
> shutting down actions are already complete.
>
> Comments?
> Am I missing the point of the _init_fini_event() functions?
>
> Thanks,
> Anurag
>
> _______________________________________________
> nwam-dev mailing list
> nwam-dev at opensolaris.org
> http://mail.opensolaris.org/mailman/listinfo/nwam-dev

Reply via email to