diff options
author | Petri Savolainen <petri.savolainen@nokia.com> | 2020-11-04 16:38:48 +0200 |
---|---|---|
committer | Petri Savolainen <petri.savolainen@nokia.com> | 2020-11-18 15:31:08 +0200 |
commit | 893029e34f4922b7a70a696a8c29770b07080eaa (patch) | |
tree | 070f653f175db992b2dde7170f935b981668eb32 /platform/linux-generic/odp_libconfig.c | |
parent | 49232eb9088ffaee10d7cc47f625317df34cad57 (diff) |
linux-gen: system: implement configuration print call
Implemented the new odp_sys_config_print() function. It prints
libconfig file default and override values, as well as build
time config file values.
Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com>
Reviewed-by: Matias Elo <matias.elo@nokia.com>
Reviewed-by: Govindarajan Mohandoss <Govindarajan.Mohandoss@arm.com>
Diffstat (limited to 'platform/linux-generic/odp_libconfig.c')
-rw-r--r-- | platform/linux-generic/odp_libconfig.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/platform/linux-generic/odp_libconfig.c b/platform/linux-generic/odp_libconfig.c index 8b061f5fa..aeee319ce 100644 --- a/platform/linux-generic/odp_libconfig.c +++ b/platform/linux-generic/odp_libconfig.c @@ -1,10 +1,12 @@ /* Copyright (c) 2018, Linaro Limited + * Copyright (c) 2020, Nokia * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ #include <stdlib.h> +#include <stdio.h> #include <string.h> #include <libconfig.h> @@ -28,6 +30,7 @@ int _odp_libconfig_init_global(void) config_init(config); config_init(config_rt); + odp_global_ro.has_config_rt = 0; if (!config_read_string(config, config_builtin)) { ODP_ERR("Failed to read default config: %s(%d): %s\n", @@ -76,6 +79,7 @@ int _odp_libconfig_init_global(void) goto fail; } + odp_global_ro.has_config_rt = 1; return 0; fail: ODP_ERR("Config file failure\n"); @@ -183,3 +187,41 @@ int _odp_libconfig_lookup_ext_int(const char *base_path, return 0; } + +int _odp_libconfig_print(void) +{ + int c; + /* Temp file for config_write() output */ + FILE *file = tmpfile(); + + if (file == NULL) + return -1; + + if (fprintf(file, + "\nODP_CONFIG_FILE default values:\n" + "-------------------------------\n\n") < 0) + goto fail; + + config_write(&odp_global_ro.libconfig_default, file); + + if (odp_global_ro.has_config_rt) { + if (fprintf(file, + "\nODP_CONFIG_FILE override values:\n" + "--------------------------------\n\n") < 0) + goto fail; + + config_write(&odp_global_ro.libconfig_runtime, file); + } + + /* Print temp file to the log */ + rewind(file); + while ((c = fgetc(file)) != EOF) + ODP_PRINT("%c", (char)c); + + fclose(file); + return 0; + +fail: + fclose(file); + return -1; +} |