param command: use param_* calls even if flash-based params are enabled

This will ensure proper locking.
This commit is contained in:
Beat Küng 2017-02-16 17:40:16 +01:00 committed by Lorenz Meier
parent 68bee1b847
commit 42967df63f
4 changed files with 29 additions and 27 deletions

View File

@ -342,11 +342,6 @@ int flash_param_save(void)
}
int flash_param_save_default(void)
{
return param_export_internal(false);
}
int flash_param_load(void)
{
@ -356,5 +351,5 @@ int flash_param_load(void)
int flash_param_import(void)
{
return 0;
return -1;
}

View File

@ -64,9 +64,8 @@ __EXPORT extern UT_array *param_values;
__EXPORT int param_set_external(param_t param, const void *val, bool mark_saved, bool notify_changes, bool is_saved);
__EXPORT const void *param_get_value_ptr_external(param_t param);
/* The interface hooks to the Flash based storage */
/* The interface hooks to the Flash based storage. The caller is responsible for locking */
__EXPORT int flash_param_save(void);
__EXPORT int flash_param_save_default(void);
__EXPORT int flash_param_load(void);
__EXPORT int flash_param_import(void);
__END_DECLS

View File

@ -803,7 +803,9 @@ param_save_default(void)
PARAM_CLOSE(fd);
#else
param_lock();
res = flash_param_save();
param_unlock();
#endif
return res;
}
@ -814,7 +816,8 @@ param_save_default(void)
int
param_load_default(void)
{
warnx("param_load_default\n");
int res = 0;
#if !defined(FLASH_BASED_PARAMS)
int fd_load = PARAM_OPEN(param_get_default_file(), O_RDONLY);
if (fd_load < 0) {
@ -835,7 +838,11 @@ param_load_default(void)
return -2;
}
return 0;
#else
// no need for locking
res = flash_param_load();
#endif
return res;
}
static void
@ -1134,7 +1141,13 @@ out:
int
param_import(int fd)
{
#if !defined(FLASH_BASED_PARAMS)
return param_import_internal(fd, false);
#else
(void)fd; // unused
// no need for locking here
return flash_param_import();
#endif
}
int

View File

@ -236,31 +236,26 @@ param_main(int argc, char *argv[])
}
#if defined(FLASH_BASED_PARAMS)
/* If flash based parameters are uses we call out
* to the following set of flash routines
/* If flash based parameters are uses we have to change some of the calls to the
* default param calls, which will in turn take care of locking and calling to the
* flash backend.
*/
static int
do_save(const char *param_file_name)
{
return flash_param_save();
}
static int
do_save_default(void)
{
return flash_param_save_default();
return param_save_default();
}
static int
do_load(const char *param_file_name)
{
return flash_param_load();
return param_load_default();
}
static int
do_import(const char *param_file_name)
{
return flash_param_import();
return param_import(-1);
}
#else
@ -289,12 +284,6 @@ do_save(const char *param_file_name)
return 0;
}
static int
do_save_default(void)
{
return param_save_default();
}
static int
do_load(const char *param_file_name)
{
@ -338,6 +327,12 @@ do_import(const char *param_file_name)
}
#endif
static int
do_save_default(void)
{
return param_save_default();
}
static int
do_show(const char *search_string)
{