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: commits-unsubscr...@mynewt.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org