Hello,

While working on the sensors framework, I found a limitation which seems to be 
system wide and should be discussed before coming to a consensus.

By default all packages run on the default eventq. Generally, everybody uses 
the default eventq since that’s what initialization functions use which get 
called from sysinit via the package initialization functions. We have not seen 
many use cases where the app would like to change the eventq. If a developer 
would like to change the eventq he/she would have to modify the initialization 
function to do this. As we have it today, we allow setting eventqs in the app 
by exposing an API to set eventqs for a package. It is kind of bug prone as any 
timers initialized earlier would still keep using the old eventq.

I can think of three possible solutions to this problem:

1. Reinitializing timers and resetting them in the evq_set() functions. 
This solution however seems a bit counter intuitive as setting the eventq also 
resets the timers. 

2. Allow reinitialization of modules so that initialization Vs 
re-initialization can be differentiated. This would make resetting timers 
explicit. 

Initialization generally does the following:
- Initialize timers, callouts by setting the eventq
- Create and Initialize mutexes 
- Initialize module specific parameters(e.g.: Module Eventq, Base timestamps, 
etc)

Re-initialization would do the following:
- Set module eventq
- Re-initialize timers, callouts by stopping the timers, callouts and resetting 
them. 

IMO, 2. is the best solution.

I would like to hear the community’s thoughts on this.

Regards,
Vipul Rahane

Reply via email to