The way other packages handle this is they enqueue the startup event when their event queue is assigned. This happens automatically when you call os_eventq_designate(); the last parameter is the event to enqueue immediately.
Chris On Sat, Dec 10, 2016 at 11:30:27AM -0800, Sterling Hughes wrote: > Hi, > > I’m looking at using the default eventq (or allowing for it), in a > library I’m working on. In order to do that, I have a function: > > static struct os_eventq * > sensor_mgr_evq_get(void) > { > os_eventq_ensure(&sensor_mgr.mgr_eventq, NULL); > > return (sensor_mgr.mgr_eventq); > } > > And this function gets called within my package’s sysinit, as I want > to schedule a callout to run this function immediately on bootup: > > /** > * Initialize sensor polling callout and set it to fire on boot. > */ > os_callout_init(&sensor_mgr.mgr_wakeup_callout, > sensor_mgr_evq_get(), > sensor_mgr_wakeup_event, NULL); > os_callout_reset(&sensor_mgr.mgr_wakeup_callout, 0); > > The problem is that the default event queue is not setup until after > sysinit executes, as task setup is later on. > > What is the right way to do this? For now, I can move the > initialization from sysinit and to the main() function at task level, > however, I don’t think this is how we want to manage initialization > over time. We probably need some way for a package to have a system > initialization stage that runs after the OS has started, and the default > event queue has been set. > > Cheers, > > Sterling