Dmitry Eremin-Solenikov(lumag) replied on github web page: platform/linux-generic/include/odp_internal.h line 13 @@ -55,10 +56,13 @@ struct odp_global_data_s { odp_cpumask_t control_cpus; odp_cpumask_t worker_cpus; int num_cpus_installed; + config_t libconfig; /*< Runtime config using libconfig */ + uint8_t libconfig_enabled; /*< Runtime config enabled */
Comment: As the last resort you can load it and then call `config_file_write()` from the helper app. I'd prefer instead if callers could provide default values fro options that they require. > Matias Elo(matiaselo) wrote: > `config_t libconfig`can always be initialized, but in case `ODP_CONF_FILE` is > not given, no configuration file is read. I'm not sure if all libconfig > functions handle this properly without crashing and I'm playing it safe here. > Maybe it's cleaner if I replace this with: > ``` > config_t *libconfig; > config_t libconfig_structure; > ``` > > Actually, this gave me an idea. It would probably make sense to save the > `odp-linux.conf` contents to a C file during configure. This way we always > have a valid default configuration and the default options have to be saved > only to one location. Any suggestions what would be a good method to save the > file during configure? >> Bill Fischofer(Bill-Fischofer-Linaro) wrote: >> `ODP_LOG()` will just print if not overridded. The point is ODP shouldn't be >> using `printf()` directly. >>> Matias Elo(matiaselo) wrote: >>> I would prefer changing OFP to match our naming convention. We use 'config' >>> in several APIs, whereas 'conf' is used only internally. >>>> Matias Elo(matiaselo) wrote: >>>> This is just an internal helper to avoid having to reference to >>>> odp_global_data when calling `config_lookup()`. It could actually be >>>> removed altogether. >>>> >>>> Since we are using libconfig only internally, what's the benefit of >>>> wrapping its functions (other than avoiding hard dependency)? We are not >>>> wrapping e.g. openssl functions. Adding wrappers for the aforementioned >>>> `_odp_config_lookup_int()` and `_odp_config_lookup_string()` would be >>>> simple, but for example` config_setting_lookup()`, which I'm using to find >>>> dpdk driver specific options, uses libconfig data types which would also >>>> have to be wrapped. >>>>> Matias Elo(matiaselo) wrote: >>>>> As we already require for example autoconf, libtool, and pkg-config, >>>>> adding libconfig dependency shouldn't be a big issue. However, if this >>>>> causes problems we can remove the hard dependency by wrapping all used >>>>> libconfig functions with dummy implementations. I would prefer not doing >>>>> this if not explicitly required. >>>>>> Matias Elo(matiaselo) wrote: >>>>>> Not that familiar with autoconf, so I pretty much copy-pasted the >>>>>> `odp_openssl.m4` to get this working. I'll take a look at >>>>>> `PKG_CHECK_MODULES `. >>>>>>> Matias Elo(matiaselo) wrote: >>>>>>> OK, will fix. >>>>>>>> Matias Elo(matiaselo) wrote: >>>>>>>> I'm usually using multiple different NICs, so I find this information >>>>>>>> useful for logging test runs. Perhaps use ODP_PRINT() here? >>>>>>>>> Matias Elo(matiaselo) wrote: >>>>>>>>> Will fix. >>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote: >>>>>>>>>> Just use `PKG_CHECK_MODULES` here rather than inventing variables >>>>>>>>>> and checks. >>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote: >>>>>>>>>>> Ideally we do not need this field. We should always return valid >>>>>>>>>>> setting. Maybe by allowing ODP modules to return default value. >>>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote: >>>>>>>>>>>> I'd prefer not to export config internals here, but rather have >>>>>>>>>>>> `_odp_config_lookup_int()`, `_odp_config_lookup_string()`, etc. >>>>>>>>>>>>> Dmitry Eremin-Solenikov(lumag) wrote: >>>>>>>>>>>>> Last line should not be necessary >>>>>>>>>>>>>> bogdanPricope wrote >>>>>>>>>>>>>> OFP is using a similar naming for the environment variable but >>>>>>>>>>>>>> with 'CONF' instead of 'CONFIG' ('OFP_CONF_FILE'). Will it makes >>>>>>>>>>>>>> sense to change the naming to avoid confusions: either >>>>>>>>>>>>>> 'ODP_CONF_FILE' in ODP or 'OFP_CONFIG_FILE' in OFP? >>>>>>>>>>>>>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote: >>>>>>>>>>>>>>> Do we really want to print this unconditionally? In any event >>>>>>>>>>>>>>> shouldn't this be `ODP_LOG()` here rather than `printf()`? >>>>>>>>>>>>>>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote: >>>>>>>>>>>>>>>> According to the [libconfig >>>>>>>>>>>>>>>> changelog](https://github.com/hyperrealm/libconfig/blob/master/ChangeLog) >>>>>>>>>>>>>>>> there are versions pre-1.0 (e.g., 0.9) which would fail this >>>>>>>>>>>>>>>> test. This needs to be reversed so that you use the newer form >>>>>>>>>>>>>>>> for v1.5 and higher levels: >>>>>>>>>>>>>>>> ``` >>>>>>>>>>>>>>>> #if (LIBCONFIG_VER_MAJOR > 1 || (LIBCONFIG_VER_MAJOR == 1 && >>>>>>>>>>>>>>>> LIBCONFIG_VER_MINOR >= 5)) ... >>>>>>>>>>>>>>>> ``` >>>>>>>>>>>>>>>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote: >>>>>>>>>>>>>>>>> Does this have to be a hard dependency? Can we have this >>>>>>>>>>>>>>>>> feature be omitted (hardcoded defaults are used) if libconfig >>>>>>>>>>>>>>>>> is not available? https://github.com/Linaro/odp/pull/499#discussion_r170598625 updated_at 2018-02-26 13:59:03