Name: H5Fget_mdc_config
Signature:
  herr_t `H5Fget_mdc_config`(hid_t `file_id`, H5AC_cache_config_t *`config_ptr`)
Purpose:
  Obtain current metadata cache configuration for target file.
Description:
  `H5Fget_mdc_config` loads the current metadata cache configuration into the instance of `H5AC_cache_config_t` pointed to by the `config_ptr` parameter.

  Note that the version field of *`config_ptr` must be initialized --this allows the library to support old versions of the `H5AC_cache_config_t` structure.

  See the overview of the metadata cache in the special topics section of the user manual for details on metadata cache configuration. If you haven't read and understood that documentation, the results of this call will not make much sense.

Parameters:

hid_t `file_id` | IN: Identifier of the target file
H5AC_cache_config_t *`config_ptr` | IN/OUT: Pointer to the instance of H5AC_cache_config_t in which the current metadata cache configuration is to be reported. The fields of this structure are discussed below:
General configuration section:
int `version` | IN: Integer field indicating the the version of the H5AC_cache_config_t in use. This field should be set to H5AC__CURR_CACHE_CONFIG_VERSION (defined in H5ACpublic.h).
hbool_t `rpt_fcn_enabled` | OUT: Boolean flag indicating whether the adaptive cache resize report function is enabled. This field should almost always be set to FALSE. Since resize algorithm activity is reported via stdout, it MUST be set to FALSE on Windows machines. The report function is not supported code, and can be expected to change between versions of the library. Use it at your own risk.
hbool_t `open_trace_file` | OUT: Boolean field indicating whether the `trace_file_name` field should be used to open a trace file for the cache. This field will always be set to `FALSE` in this context.
hbool_t `close_trace_file` | OUT: Boolean field indicating whether the current trace file (if any) should be closed. This field will always be set to `FALSE` in this context.
char *`trace_file_name` | OUT: Full path name of the trace file to be opened if the `open_trace_file` field is `TRUE`. This field will always be set to the empty string in this context.
hbool_t `evictions_enabled` | OUT: Boolean flag indicating whether metadata cache entry evictions are enabled.
hbool_t `set_initial_size` | OUT: Boolean flag indicating whether the cache should be created with a user specified initial maximum size. If the configuration is loaded from the cache, this flag will always be FALSE.
size_t `initial_size` | OUT: Initial maximum size of the cache in bytes, if applicable. If the configuration is loaded from the cache, this field will contain the cache maximum size as of the time of the call.
double `min_clean_fraction` | OUT: Float value specifing the minimum fraction of the cache that must be kept either clean or empty when possible.
size_t `max_size` | OUT: Upper bound (in bytes) on the range of values that the adaptive cache resize code can select as the maximum cache size.
size_t `min_size` | OUT: Lower bound (in bytes) on the range of values that the adaptive cache resize code can select as the maximum cache size.
long int `epoch_length` | OUT: Number of cache accesses between runs of the adaptive cache resize code.
Increment configuration section:
enum H5C_cache_incr_mode `incr_mode` | OUT: Enumerated value indicating the operational mode of the automatic cache size increase code. At present, only the following values are legal: H5C_incr__off: Automatic cache size increase is disabled. H5C_incr__threshold: Automatic cache size increase is enabled using the hit rate threshold algorithm.
double `lower_hr_threshold` | OUT: Hit rate threshold used in the hit rate threshold cache size increase algorithm.
double `increment` | OUT: The factor by which the current maximum cache size is multiplied to obtain an initial new maximum cache size if a size increase is triggered in the hit rate threshold cache size increase algorithm.
hbool_t `apply_max_increment` | OUT: Boolean flag indicating whether an upper limit will be applied to the size of cache size increases.
size_t `max_increment` | OUT: The maximum number of bytes by which the maximum cache size can be increased in a single step -- if applicable.
enum H5C_cache_flash_incr_mode `flash_incr_mode` | OUT: Enumerated value indicating the operational mode of the flash cache size increase code. At present, only the following values are legal: H5C_flash_incr__off: Flash cache size increase is disabled. H5C_flash_incr__add_space: Flash cache size increase is enabled using the add space algorithm.
double `flash_threshold` | OUT: The factor by which the current maximum cache size is multiplied to obtain the minimum size entry / entry size increase which may trigger a flash cache size increase.
double `flash_multiple` | OUT: The factor by which the size of the triggering entry / entry size increase is multiplied to obtain the initial cache size increment. This increment may be reduced to reflect existing free space in the cache and the `max_size` field above.
Decrement configuration section:
enum H5C_cache_decr_mode `decr_mode` | OUT: Enumerated value indicating the operational mode of the automatic cache size decrease code. At present, the following values are legal: H5C_decr__off: Automatic cache size decrease is disabled, and the remaining decrement fields are ignored. H5C_decr__threshold: Automatic cache size decrease is enabled using the hit rate threshold algorithm. H5C_decr__age_out: Automatic cache size decrease is enabled using the ageout algorithm. H5C_decr__age_out_with_threshold: Automatic cache size decrease is enabled using the ageout with hit rate threshold algorithm
double `upper_hr_threshold` | OUT: Upper hit rate threshold. This value is only used if the decr_mode is either H5C_decr__threshold or H5C_decr__age_out_with_threshold.
double `decrement` | OUT: Factor by which the current max cache size is multiplied to obtain an initial value for the new cache size when cache size reduction is triggered in the hit rate threshold cache size reduction algorithm.
hbool_t `apply_max_decrement` | OUT: Boolean flag indicating whether an upper limit should be applied to the size of cache size decreases.
size_t `max_decrement` | OUT: The maximum number of bytes by which cache size can be decreased if any single step, if applicable.
int `epochs_before_eviction` | OUT: The minimum number of epochs that an entry must reside unaccessed in cache before being evicted under either of the ageout cache size reduction algorithms.
hbool_t `apply_empty_reserve` | OUT: Boolean flag indicating whether an empty reserve should be maintained under either of the ageout cache size reduction algorithms.
double `empty_reserve` | OUT: Empty reserve for use with the ageout cache size reduction algorithms, if applicable.
Parallel configuration section:
int `dirty_bytes_threshold` | OUT: Threshold number of bytes of dirty metadata generation for triggering synchronizations of the metadata caches serving the target file in the parallel case. Synchronization occurs whenever the number of bytes of dirty metadata created since the last synchronization exceeds this limit.

Returns:
  Returns a non-negative value if successful; otherwise returns a negative value.