How do you assign an event queue if you are relying on the default event queue being there?
Can you point me to an example of where this is done? Sterling > On Dec 10, 2016, at 12:08 PM, Christopher Collins <[email protected]> wrote: > > 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
