* [PATCH] globalvar: Create Kconfig symbol for NVVAR @ 2016-04-26 9:30 Sascha Hauer 2016-04-26 18:05 ` Trent Piepho 0 siblings, 1 reply; 3+ messages in thread From: Sascha Hauer @ 2016-04-26 9:30 UTC (permalink / raw) To: Barebox List nvvar support not only needs globalvar, but also persistent environment storage. Add a separate default-y option which depends on ENV_HANDLING for this case. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> --- commands/Kconfig | 2 +- common/Kconfig | 6 ++++++ common/globalvar.c | 18 ++++++++++++++++-- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/commands/Kconfig b/commands/Kconfig index 875c5f4..1d3d530 100644 --- a/commands/Kconfig +++ b/commands/Kconfig @@ -715,7 +715,7 @@ endmenu menu "Environment" config CMD_NV - select GLOBALVAR + depends on NVVAR tristate prompt "nv" help diff --git a/common/Kconfig b/common/Kconfig index 7c09e8c..8f7bb02 100644 --- a/common/Kconfig +++ b/common/Kconfig @@ -81,6 +81,12 @@ config LOGBUF config GLOBALVAR bool +config NVVAR + bool + depends on GLOBALVAR + depends on ENV_HANDLING + default y + config STDDEV bool diff --git a/common/globalvar.c b/common/globalvar.c index 9a793ac..a777c14 100644 --- a/common/globalvar.c +++ b/common/globalvar.c @@ -90,6 +90,9 @@ int nvvar_add(const char *name, const char *value) struct param_d *p, *gp; int ret; + if (!IS_ENABLED(CONFIG_NVVAR)) + return -ENOSYS; + gp = get_param_by_name(&nv_device, name); if (gp) { ret = dev_set_param(&global_device, name, value); @@ -131,6 +134,9 @@ int nvvar_remove(const char *name) struct param_d *p; char *fname; + if (!IS_ENABLED(CONFIG_NVVAR)) + return -ENOSYS; + p = get_param_by_name(&nv_device, name); if (!p) return -ENOENT; @@ -153,6 +159,9 @@ int nvvar_load(void) DIR *dir; struct dirent *d; + if (!IS_ENABLED(CONFIG_NVVAR)) + return -ENOSYS; + dir = opendir("/env/nv"); if (!dir) return -ENOENT; @@ -185,7 +194,7 @@ static void device_param_print(struct device_d *dev) const char *p = dev_get_param(dev, param->name); const char *nv = NULL; - if (dev != &nv_device) + if (IS_ENABLED(CONFIG_NVVAR) && dev != &nv_device) nv = dev_get_param(&nv_device, param->name); printf("%s%s: %s\n", nv ? "* " : " ", param->name, p); @@ -194,6 +203,9 @@ static void device_param_print(struct device_d *dev) void nvvar_print(void) { + if (!IS_ENABLED(CONFIG_NVVAR)) + return; + device_param_print(&nv_device); } @@ -264,7 +276,9 @@ int globalvar_add_simple(const char *name, const char *value) static int globalvar_init(void) { register_device(&global_device); - register_device(&nv_device); + + if (IS_ENABLED(CONFIG_NVVAR)) + register_device(&nv_device); globalvar_add_simple("version", UTS_RELEASE); -- 2.8.0.rc3 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] globalvar: Create Kconfig symbol for NVVAR 2016-04-26 9:30 [PATCH] globalvar: Create Kconfig symbol for NVVAR Sascha Hauer @ 2016-04-26 18:05 ` Trent Piepho 2016-04-27 8:38 ` Sascha Hauer 0 siblings, 1 reply; 3+ messages in thread From: Trent Piepho @ 2016-04-26 18:05 UTC (permalink / raw) To: Sascha Hauer; +Cc: Barebox List On Tue, 2016-04-26 at 11:30 +0200, Sascha Hauer wrote: > nvvar support not only needs globalvar, but also persistent > environment storage. Add a separate default-y option which > depends on ENV_HANDLING for this case. It seems like other commands, defaultenv, saveenv, loadenv, will select ENV_HANDLING. Shouldn't CMD_NV do the same? From what I can tell, the only way to turn on ENV_HANDLING is to enable a command that uses it. One of those three above or the option to compile in an environment. But isn't it possible to not have any of those options on, yet still get an env via a flash sector or file from the OF driver or board code? And thus make use of nv. IOW, CMD_DEFAULT/LOAD/SAVEENV=n DEFAULT_ENVIRONMENT=n CMD_NV=y should work. It would allow env vars with default values, coming from a external flash env, yet not have any commands that might not be needed or wanted (e.g., production device not intended to support users modifying anything from the barebox prompt). In fact, it seems one could use nv without even having the nv command? > > Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> > --- > commands/Kconfig | 2 +- > common/Kconfig | 6 ++++++ > common/globalvar.c | 18 ++++++++++++++++-- > 3 files changed, 23 insertions(+), 3 deletions(-) > > diff --git a/commands/Kconfig b/commands/Kconfig > index 875c5f4..1d3d530 100644 > --- a/commands/Kconfig > +++ b/commands/Kconfig > @@ -715,7 +715,7 @@ endmenu > menu "Environment" > > config CMD_NV > - select GLOBALVAR > + depends on NVVAR > tristate > prompt "nv" > help > diff --git a/common/Kconfig b/common/Kconfig > index 7c09e8c..8f7bb02 100644 > --- a/common/Kconfig > +++ b/common/Kconfig > @@ -81,6 +81,12 @@ config LOGBUF > config GLOBALVAR > bool > > +config NVVAR > + bool > + depends on GLOBALVAR > + depends on ENV_HANDLING > + default y > + > config STDDEV > bool > > diff --git a/common/globalvar.c b/common/globalvar.c > index 9a793ac..a777c14 100644 > --- a/common/globalvar.c > +++ b/common/globalvar.c > @@ -90,6 +90,9 @@ int nvvar_add(const char *name, const char *value) > struct param_d *p, *gp; > int ret; > > + if (!IS_ENABLED(CONFIG_NVVAR)) > + return -ENOSYS; > + > gp = get_param_by_name(&nv_device, name); > if (gp) { > ret = dev_set_param(&global_device, name, value); > @@ -131,6 +134,9 @@ int nvvar_remove(const char *name) > struct param_d *p; > char *fname; > > + if (!IS_ENABLED(CONFIG_NVVAR)) > + return -ENOSYS; > + > p = get_param_by_name(&nv_device, name); > if (!p) > return -ENOENT; > @@ -153,6 +159,9 @@ int nvvar_load(void) > DIR *dir; > struct dirent *d; > > + if (!IS_ENABLED(CONFIG_NVVAR)) > + return -ENOSYS; > + > dir = opendir("/env/nv"); > if (!dir) > return -ENOENT; > @@ -185,7 +194,7 @@ static void device_param_print(struct device_d *dev) > const char *p = dev_get_param(dev, param->name); > const char *nv = NULL; > > - if (dev != &nv_device) > + if (IS_ENABLED(CONFIG_NVVAR) && dev != &nv_device) > nv = dev_get_param(&nv_device, param->name); > > printf("%s%s: %s\n", nv ? "* " : " ", param->name, p); > @@ -194,6 +203,9 @@ static void device_param_print(struct device_d *dev) > > void nvvar_print(void) > { > + if (!IS_ENABLED(CONFIG_NVVAR)) > + return; > + > device_param_print(&nv_device); > } > > @@ -264,7 +276,9 @@ int globalvar_add_simple(const char *name, const char *value) > static int globalvar_init(void) > { > register_device(&global_device); > - register_device(&nv_device); > + > + if (IS_ENABLED(CONFIG_NVVAR)) > + register_device(&nv_device); > > globalvar_add_simple("version", UTS_RELEASE); > _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] globalvar: Create Kconfig symbol for NVVAR 2016-04-26 18:05 ` Trent Piepho @ 2016-04-27 8:38 ` Sascha Hauer 0 siblings, 0 replies; 3+ messages in thread From: Sascha Hauer @ 2016-04-27 8:38 UTC (permalink / raw) To: Trent Piepho; +Cc: Barebox List Hi Trent, On Tue, Apr 26, 2016 at 06:05:05PM +0000, Trent Piepho wrote: > On Tue, 2016-04-26 at 11:30 +0200, Sascha Hauer wrote: > > nvvar support not only needs globalvar, but also persistent > > environment storage. Add a separate default-y option which > > depends on ENV_HANDLING for this case. > > It seems like other commands, defaultenv, saveenv, loadenv, will > select ENV_HANDLING. Shouldn't CMD_NV do the same? 'select' always has the problem that it's easy to get broken dependencies once the selected option has other dependencies, that's why I used 'depends on'. > > From what I can tell, the only way to turn on ENV_HANDLING is to enable > a command that uses it. Yes, right. So now we have to turn on loadenv/saveenv to get nvvar support. That's not good and wasn't intended. Similarly with loadenv/savenv: These commands have to be enabled to get environment storage, even though the feature should not depend on the command. > One of those three above or the option to > compile in an environment. But isn't it possible to not have any of > those options on, yet still get an env via a flash sector or file from > the OF driver or board code? And thus make use of nv. IOW, > CMD_DEFAULT/LOAD/SAVEENV=n > DEFAULT_ENVIRONMENT=n > CMD_NV=y > > should work. It would allow env vars with default values, coming from a > external flash env, yet not have any commands that might not be needed > or wanted (e.g., production device not intended to support users > modifying anything from the barebox prompt). > > In fact, it seems one could use nv without even having the nv command? Yes. I created a new series making these options user visible (default-y to not change the existing defconfigs). This should make it possible to have persistent environment, globalvar and nvvar without enabling the commands. Also using "depends on" rather than "select" should reduce dependency hassles. Let me know what you think Sascha -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-04-27 8:38 UTC | newest] Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2016-04-26 9:30 [PATCH] globalvar: Create Kconfig symbol for NVVAR Sascha Hauer 2016-04-26 18:05 ` Trent Piepho 2016-04-27 8:38 ` Sascha Hauer
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox