settings: do not panic on backend initialization errors
There is little reason to panic on settings backend initialization error. Such behavior was introduced with initial settings subsystem support, which was adapted from MyNewt. This is not the usual way how Zephyr handles errors, so it is time to change that. There is already handling of some errors by simply returning / propagating them to caller. Rework all the paths that resulted in k_panic() to also return error codes. Signed-off-by: Marcin Niestroj <m.niestroj@emb.dev>
This commit is contained in:
parent
fed6bde788
commit
f386967b06
5 changed files with 21 additions and 22 deletions
|
@ -415,39 +415,35 @@ int settings_backend_init(void)
|
|||
|
||||
rc = flash_area_get_sectors(settings_fcb_get_flash_area(), &cnt,
|
||||
settings_fcb_area);
|
||||
if (rc == -ENODEV) {
|
||||
if (rc != 0 && rc != -ENOMEM) {
|
||||
return rc;
|
||||
} else if (rc != 0 && rc != -ENOMEM) {
|
||||
k_panic();
|
||||
}
|
||||
|
||||
config_init_settings_fcb.cf_fcb.f_sector_cnt = cnt;
|
||||
|
||||
rc = settings_fcb_src(&config_init_settings_fcb);
|
||||
|
||||
if (rc != 0) {
|
||||
rc = flash_area_open(settings_fcb_get_flash_area(), &fap);
|
||||
|
||||
if (rc == 0) {
|
||||
rc = flash_area_erase(fap, 0, fap->fa_size);
|
||||
flash_area_close(fap);
|
||||
if (rc != 0) {
|
||||
return rc;
|
||||
}
|
||||
|
||||
rc = flash_area_erase(fap, 0, fap->fa_size);
|
||||
flash_area_close(fap);
|
||||
|
||||
if (rc != 0) {
|
||||
k_panic();
|
||||
} else {
|
||||
rc = settings_fcb_src(&config_init_settings_fcb);
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
|
||||
if (rc != 0) {
|
||||
k_panic();
|
||||
rc = settings_fcb_src(&config_init_settings_fcb);
|
||||
if (rc != 0) {
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
|
||||
rc = settings_fcb_dst(&config_init_settings_fcb);
|
||||
|
||||
if (rc != 0) {
|
||||
k_panic();
|
||||
return rc;
|
||||
}
|
||||
|
||||
settings_mount_fcb_backend(&config_init_settings_fcb);
|
||||
|
|
|
@ -531,12 +531,12 @@ int settings_backend_init(void)
|
|||
|
||||
rc = settings_file_src(&config_init_settings_file);
|
||||
if (rc) {
|
||||
k_panic();
|
||||
return rc;
|
||||
}
|
||||
|
||||
rc = settings_file_dst(&config_init_settings_file);
|
||||
if (rc) {
|
||||
k_panic();
|
||||
return rc;
|
||||
}
|
||||
|
||||
settings_mount_file_backend(&config_init_settings_file);
|
||||
|
|
|
@ -33,7 +33,7 @@ int settings_subsys_init(void)
|
|||
|
||||
settings_init();
|
||||
|
||||
err = settings_backend_init(); /* func rises kernel panic once error */
|
||||
err = settings_backend_init();
|
||||
|
||||
if (!err) {
|
||||
settings_subsys_initialized = true;
|
||||
|
|
|
@ -359,10 +359,8 @@ int settings_backend_init(void)
|
|||
|
||||
rc = flash_area_get_sectors(SETTINGS_PARTITION, §or_cnt,
|
||||
&hw_flash_sector);
|
||||
if (rc == -ENODEV) {
|
||||
if (rc != 0 && rc != -ENOMEM) {
|
||||
return rc;
|
||||
} else if (rc != 0 && rc != -ENOMEM) {
|
||||
k_panic();
|
||||
}
|
||||
|
||||
nvs_sector_size = CONFIG_SETTINGS_NVS_SECTOR_SIZE_MULT *
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue