#ifndef UCS_CONFIG_H_
#define UCS_CONFIG_H_
#include "types.h"
#include <ucs/stats/stats_fwd.h>
#include <ucs/type/status.h>
#include <ucs/sys/compiler_def.h>
#include <ucs/arch/global_opts.h>
#include <stddef.h>
#include <stdio.h>
BEGIN_C_DECLS
#define UCS_GLOBAL_OPTS_WARN_UNUSED_CONFIG "WARN_UNUSED_ENV_VARS"
typedef struct {
ucs_log_component_config_t log_component;
char *log_file;
size_t log_file_size;
unsigned log_file_rotate;
size_t log_buffer_size;
size_t log_data_size;
int log_print_enable;
int mpool_fifo;
unsigned handle_errors;
UCS_CONFIG_ARRAY_FIELD(int, signals) error_signals;
char *error_mail_to;
char *error_mail_footer;
char *gdb_command;
unsigned debug_signo;
ucs_log_level_t log_level_trigger;
int warn_unused_env_vars;
unsigned async_max_events;
ucs_ternary_auto_value_t enable_memtype_cache;
char *stats_dest;
char *stats_trigger;
char *tuning_path;
size_t perf_stall_loops;
unsigned async_signo;
char *memtrack_dest;
size_t memtrack_limit;
unsigned profile_mode;
char *profile_file;
size_t profile_log_size;
ucs_config_names_array_t stats_filter;
ucs_stats_formats_t stats_format;
int vfs_enable;
unsigned rcache_check_pfn;
char *module_dir;
ucs_log_level_t module_log_level;
ucs_config_allow_list_t modules;
ucs_arch_global_opts_t arch;
int vfs_thread_affinity;
} ucs_global_opts_t;
extern ucs_global_opts_t ucs_global_opts;
void ucs_global_opts_init();
ucs_status_t ucs_global_opts_set_value(const char *name, const char *value);
ucs_status_t ucs_global_opts_set_value_modifiable(const char *name,
const char *value);
ucs_status_t ucs_global_opts_get_value(const char *name, char *value,
size_t max);
ucs_status_t ucs_global_opts_clone(void *dst);
void ucs_global_opts_release();
void ucs_global_opts_print(FILE *stream, ucs_config_print_flags_t print_flags);
END_C_DECLS
#endif