kasjer opened a new pull request, #3043:
URL: https://github.com/apache/mynewt-core/pull/3043
Function os_dev_init() is called in two places
First possibility is when device is created in
os_dev_create() AND g_os_started is not 0
This apply to devices that are created after main
function is called (including package defined syscfg functions).
Other place that calls os_dev_init is os_dev_initialize_all() This function
calls all os_dev_init() functions for requested stage. When
os_dev_initalize_all() is called only devices added by bsp (often delegated to
mcu) are created. Keep in mind that since g_os_started is not set yet condition
is not checked.
When mcuboot starts with sysinit() enabled it calls os_dev_initalize_all()
twice then executes sysinit(). Any device created in sysinit() will not be
initialized since g_os_started is not set.
This change stores device init stage number and uses it when devices are
initialized. For devices created by BSP initial stage is 0 so dev_init is not
called during device creation but postponed till os_dev_initialize_all() is
called (so despite condition change initialization sequence stays the same).
For devices created in sysinit() stage is already set to KERNEL and they are
initialized during creation even though g_os_started is not checked any more.
So there should not be any differences in behavior.
For MCUBoot, devices created in sysinit() will have dev_init called when
created just like it would happen when OS_SCHEDULING is enabled.
Only difference is that when device initialization fails at one stage but is
not marked as critical initialization will be attempted in next stage.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]