summaryrefslogtreecommitdiffstats
path: root/src/H5Fpublic.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5Fpublic.h')
-rw-r--r--src/H5Fpublic.h259
1 files changed, 142 insertions, 117 deletions
diff --git a/src/H5Fpublic.h b/src/H5Fpublic.h
index 7981372..851d64d 100644
--- a/src/H5Fpublic.h
+++ b/src/H5Fpublic.h
@@ -84,8 +84,9 @@
#define H5F_OBJ_DATATYPE (0x0008u) /**< Named datatype objects */
#define H5F_OBJ_ATTR (0x0010u) /**< Attribute objects */
#define H5F_OBJ_ALL (H5F_OBJ_FILE | H5F_OBJ_DATASET | H5F_OBJ_GROUP | H5F_OBJ_DATATYPE | H5F_OBJ_ATTR)
-#define H5F_OBJ_LOCAL (0x0020u) /**< Restrict search to objects opened through current file ID
- (as opposed to objects opened through any file ID accessing this file) */
+#define H5F_OBJ_LOCAL \
+ (0x0020u) /**< Restrict search to objects opened through current file ID \
+ (as opposed to objects opened through any file ID accessing this file) */
#define H5F_FAMILY_DEFAULT (hsize_t)0
@@ -356,6 +357,8 @@ H5_DLL htri_t H5Fis_accessible(const char *container_name, hid_t fapl_id);
*
*/
H5_DLL hid_t H5Fcreate(const char *filename, unsigned flags, hid_t fcpl_id, hid_t fapl_id);
+H5_DLL hid_t H5Fcreate_async(const char *app_file, const char *app_func, unsigned app_line,
+ const char *filename, unsigned flags, hid_t fcpl_id, hid_t fapl_id, hid_t es_id);
/**
* \ingroup H5F
*
@@ -446,6 +449,8 @@ H5_DLL hid_t H5Fcreate(const char *filename, unsigned flags, hid_t fcpl_id, hid_
*
*/
H5_DLL hid_t H5Fopen(const char *filename, unsigned flags, hid_t fapl_id);
+H5_DLL hid_t H5Fopen_async(const char *app_file, const char *app_func, unsigned app_line,
+ const char *filename, unsigned flags, hid_t access_plist, hid_t es_id);
/**
* \ingroup H5F
*
@@ -472,6 +477,8 @@ H5_DLL hid_t H5Fopen(const char *filename, unsigned flags, hid_t fapl_id);
*
*/
H5_DLL hid_t H5Freopen(hid_t file_id);
+H5_DLL hid_t H5Freopen_async(const char *app_file, const char *app_func, unsigned app_line, hid_t file_id,
+ hid_t es_id);
/**
* \ingroup H5F
*
@@ -502,6 +509,8 @@ H5_DLL hid_t H5Freopen(hid_t file_id);
*
*/
H5_DLL herr_t H5Fflush(hid_t object_id, H5F_scope_t scope);
+H5_DLL herr_t H5Fflush_async(const char *app_file, const char *app_func, unsigned app_line, hid_t object_id,
+ H5F_scope_t scope, hid_t es_id);
/**
* \example H5Fclose.c
* After creating an HDF5 file with H5Fcreate(), we close it with
@@ -551,6 +560,8 @@ H5_DLL herr_t H5Fflush(hid_t object_id, H5F_scope_t scope);
*
*/
H5_DLL herr_t H5Fclose(hid_t file_id);
+H5_DLL herr_t H5Fclose_async(const char *app_file, const char *app_func, unsigned app_line, hid_t file_id,
+ hid_t es_id);
/**
* \ingroup H5F
*
@@ -988,8 +999,8 @@ H5_DLL ssize_t H5Fget_file_image(hid_t file_id, void *buf_ptr, size_t buf_len);
* </tr>
* <tr>
* <td><em>hbool_t</em> <code>open_trace_file</code> </td>
- * <td>OUT: Boolean field indicating whether the <code>trace_file_name</code> field should be used to open
- * a trace file for the cache. This field will always be set to <code>0</code> in this context.</td>
+ * <td>OUT: Boolean field indicating whether the <code>trace_file_name</code> field should be used to
+ * open a trace file for the cache. This field will always be set to <code>0</code> in this context.</td>
* </tr>
* <tr>
* <td><em>hbool_t</em> <code>close_trace_file</code> </td>
@@ -997,9 +1008,8 @@ H5_DLL ssize_t H5Fget_file_image(hid_t file_id, void *buf_ptr, size_t buf_len);
* will always be set to <code>0</code> in this context.</td></tr>
* <tr>
* <td><em>char*</em><code>trace_file_name</code> </td>
- * <td>OUT: Full path name of the trace file to be opened if the <code>open_trace_file</code> field is set
- * to <code>1</code>. This field will always be set to the empty string in this context.</td></tr>
- * <tr>
+ * <td>OUT: Full path name of the trace file to be opened if the <code>open_trace_file</code> field is
+ * set to <code>1</code>. This field will always be set to the empty string in this context.</td></tr> <tr>
* <td><em>hbool_t</em> <code>evictions_enabled</code> </td>
* <td>OUT: Boolean flag indicating whether metadata cache entry evictions are
* enabled.</td>
@@ -1042,8 +1052,8 @@ H5_DLL ssize_t H5Fget_file_image(hid_t file_id, void *buf_ptr, size_t buf_len);
* <table>
* <tr>
* <td><em>enum H5C_cache_incr_mode</em> <code>incr_mode</code> </td>
- * <td>OUT: Enumerated value indicating the operational mode of the automatic cache size increase code. At
- * present, only the following values are legal:<p>\c H5C_incr__off: Automatic cache size increase is
+ * <td>OUT: Enumerated value indicating the operational mode of the automatic cache size increase code.
+ * At present, only the following values are legal:<p>\c H5C_incr__off: Automatic cache size increase is
* disabled.</p><p>\c H5C_incr__threshold: Automatic cache size increase is enabled using the hit rate
* threshold algorithm.</p></td>
* </tr>
@@ -1071,8 +1081,8 @@ H5_DLL ssize_t H5Fget_file_image(hid_t file_id, void *buf_ptr, size_t buf_len);
* <td><em>enum H5C_cache_flash_incr_mode</em> <code>flash_incr_mode</code> </td>
* <td>OUT: Enumerated value indicating the operational mode of the flash cache size increase code. At
* present, only the following values are legal:<p>\c H5C_flash_incr__off: Flash cache size increase is
- * disabled.</p><p>\c H5C_flash_incr__add_space: Flash cache size increase is enabled using the add space
- * algorithm.</p></td>
+ * disabled.</p><p>\c H5C_flash_incr__add_space: Flash cache size increase is enabled using the add
+ * space algorithm.</p></td>
* </tr>
* <tr>
* <td><em>double</em> <code>flash_threshold</code> </td>
@@ -1083,8 +1093,8 @@ H5_DLL ssize_t H5Fget_file_image(hid_t file_id, void *buf_ptr, size_t buf_len);
* <tr>
* <td><em>double</em> <code>flash_multiple</code> </td>
* <td>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 <code>max_size</code> field above.</td>
+ * obtain the initial cache size increment. This increment may be reduced to reflect existing free
+ * space in the cache and the <code>max_size</code> field above.</td>
* </tr>
* </table>
*
@@ -1095,13 +1105,12 @@ H5_DLL ssize_t H5Fget_file_image(hid_t file_id, void *buf_ptr, size_t buf_len);
* </tr>
* <tr>
* <td><em>enum H5C_cache_decr_mode</em> <code>decr_mode</code> </td>
- * <td>OUT: Enumerated value indicating the operational mode of the automatic cache size decrease code. At
- * present, the following values are legal:<p>H5C_decr__off: Automatic cache size decrease is disabled,
- * and the remaining decrement fields are ignored.</p><p>H5C_decr__threshold: Automatic cache size
- * decrease is enabled using the hit rate threshold algorithm.</p><p>H5C_decr__age_out: Automatic cache
- * size decrease is enabled using the ageout algorithm.</p><p>H5C_decr__age_out_with_threshold:
- * Automatic cache size decrease is enabled using the ageout with hit rate threshold
- * algorithm</p></td>
+ * <td>OUT: Enumerated value indicating the operational mode of the automatic cache size decrease code.
+ * At present, the following values are legal:<p>H5C_decr__off: Automatic cache size decrease is disabled, and
+ * the remaining decrement fields are ignored.</p><p>H5C_decr__threshold: Automatic cache size decrease is
+ * enabled using the hit rate threshold algorithm.</p><p>H5C_decr__age_out: Automatic cache size decrease is
+ * enabled using the ageout algorithm.</p><p>H5C_decr__age_out_with_threshold: Automatic cache size decrease
+ * is enabled using the ageout with hit rate threshold algorithm</p></td>
* </tr>
* <tr><td><em>double</em> <code>upper_hr_threshold</code> </td>
* <td>OUT: Upper hit rate threshold. This value is only used if the decr_mode is either
@@ -1144,7 +1153,8 @@ H5_DLL ssize_t H5Fget_file_image(hid_t file_id, void *buf_ptr, size_t buf_len);
* <tr><td><em>int</em> <code>dirty_bytes_threshold</code> </td>
* <td>OUT: Threshold number of bytes of dirty metadata generation for triggering synchronizations of the
* metadata caches serving the target file in the parallel case.<p>Synchronization occurs whenever the
- * number of bytes of dirty metadata created since the last synchronization exceeds this limit.</p></td>
+ * number of bytes of dirty metadata created since the last synchronization exceeds this
+ * limit.</p></td>
* </tr>
* </table>
*
@@ -1180,59 +1190,57 @@ H5_DLL herr_t H5Fget_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr);
* <tr>
* <td><em>hbool_t</em> <code>rpt_fcn_enabled</code></td>
* <td>IN: Boolean flag indicating whether the adaptive cache resize report function is enabled. This
- * field should almost always be set to disabled (<code>0</code>). Since resize algorithm activity is reported
- * via stdout, it MUST be set to disabled (<code>0</code>) on Windows machines.<p>The report function is not
- * supported code, and can be expected to change between versions of the library. Use it at your own
+ * field should almost always be set to disabled (<code>0</code>). Since resize algorithm activity is
+ * reported via stdout, it MUST be set to disabled (<code>0</code>) on Windows machines.<p>The report function
+ * is not supported code, and can be expected to change between versions of the library. Use it at your own
* risk.</p></td>
* </tr>
* <tr>
* <td><em>hbool_t</em> <code>open_trace_File</code></td>
* <td>IN: Boolean field indicating whether the <code>trace_file_name</code> field should be used to open
- * a trace file for the cache.<p>The trace file is a debuging feature that allows the capture of top level
- * metadata cache requests for purposes of debugging and/or optimization. This field should normally be set
- * to <code>0</code>, as trace file collection imposes considerable overhead.</p><p>This field should only be
- * set to <code>1</code> when the <code>trace_file_name</code> contains the full path of the desired trace
- * file, and either there is no open trace file on the cache, or the <code>close_trace_file</code> field is
- * also <code>1</code>.</p><p>The trace file feature is unsupported unless used at the direction of The HDF
- * Group. It is intended to allow The HDF Group to collect a trace of cache activity in cases of occult
- * failures and/or poor performance seen in the field, so as to aid in reproduction in the lab. If you use it
- * absent the direction of The HDF Group, you are on your
- * own.</p></td>
+ * a trace file for the cache.<p>The trace file is a debuging feature that allows the capture of top
+ * level metadata cache requests for purposes of debugging and/or optimization. This field should normally be
+ * set to <code>0</code>, as trace file collection imposes considerable overhead.</p><p>This field should only
+ * be set to <code>1</code> when the <code>trace_file_name</code> contains the full path of the desired trace
+ * file, and either there is no open trace file on the cache, or the <code>close_trace_file</code>
+ * field is also <code>1</code>.</p><p>The trace file feature is unsupported unless used at the direction of
+ * The HDF Group. It is intended to allow The HDF Group to collect a trace of cache activity in cases of
+ * occult failures and/or poor performance seen in the field, so as to aid in reproduction in the lab. If you
+ * use it absent the direction of The HDF Group, you are on your own.</p></td>
* </tr>
* <tr><td><em>hbool_t</em> <code>close_trace_file</code></td>
* <td>IN: Boolean field indicating whether the current trace file (if any) should be closed.<p>See the
- * above comments on the <code>open_trace_file</code> field. This field should be set to <code>0</code> unless
- * there is an open trace file on the cache that you wish to close.</p><p>The trace file feature is
- * unsupported unless used at the direction of The HDF Group. It is intended to allow The HDF Group to collect
- * a trace of cache activity in cases of occult failures and/or poor performance seen in the field, so as to
- * aid in reproduction in the lab. If you use it absent the direction of The HDF Group, you are on your
- * own.</p></td>
+ * above comments on the <code>open_trace_file</code> field. This field should be set to
+ * <code>0</code> unless there is an open trace file on the cache that you wish to close.</p><p>The trace file
+ * feature is unsupported unless used at the direction of The HDF Group. It is intended to allow The HDF Group
+ * to collect a trace of cache activity in cases of occult failures and/or poor performance seen in the field,
+ * so as to aid in reproduction in the lab. If you use it absent the direction of The HDF Group, you are on
+ * your own.</p></td>
* </tr>
* <tr>
* <td><em>char</em> <code>trace_file_name[]</code></td>
* <td>IN: Full path of the trace file to be opened if the <code>open_trace_file</code> field is set
- * to <code>1</code>.<p>In the parallel case, an ascii representation of the mpi rank of the process will be
- * appended to the file name to yield a unique trace file name for each process.</p><p>The length of the path
- * must not exceed #H5AC__MAX_TRACE_FILE_NAME_LEN characters.</p><p>The trace file feature is
- * unsupported unless used at the direction of The HDF Group. It is intended to allow The HDF Group to collect
- * a trace of cache activity in cases of occult failures and/or poor performance seen in the field, so as to
- * aid in reproduction in the lab. If you use it absent the direction of The HDF Group, you are on your
- * own.</p></td>
+ * to <code>1</code>.<p>In the parallel case, an ascii representation of the mpi rank of the process
+ * will be appended to the file name to yield a unique trace file name for each process.</p><p>The length of
+ * the path must not exceed #H5AC__MAX_TRACE_FILE_NAME_LEN characters.</p><p>The trace file feature is
+ * unsupported unless used at the direction of The HDF Group. It is intended to allow The HDF Group
+ * to collect a trace of cache activity in cases of occult failures and/or poor performance seen in the field,
+ * so as to aid in reproduction in the lab. If you use it absent the direction of The HDF Group, you are on
+ * your own.</p></td>
* </tr>
* <tr>
* <td><em>hbool_t</em> <code>evictions_enabled</code></td>
* <td>IN: A boolean flag indicating whether evictions from the metadata cache are enabled. This flag is
- * initially set to enabled (<code>1</code>).<p>In rare circumstances, the raw data throughput requirements
- * may be so high that the user wishes to postpone metadata writes so as to reserve I/O throughput for raw
- * data. The <code>evictions_enabled</code> field exists to allow this. However, this is an extreme step, and
- * you have no business doing it unless you have read the User Guide section on metadata caching, and have
- * considered all other options carefully.</p><p>The <code>evictions_enabled</code> field may not be set to
- * disabled (<code>0</code>) unless all adaptive cache resizing code is disabled via
- * the <code>incr_mode</code>, <code>flash_incr_mode</code>, and <code>decr_mode</code> fields.</p><p>When
- * this flag is set to disabled (<code>0</code>), the metadata cache will not attempt to evict entries to make
- * space for new entries, and thus will grow without bound.</p><p>Evictions will be re-enabled when this field
- * is set back to <code>1</code>. This should be done as soon as
- * possible.</p></td>
+ * initially set to enabled (<code>1</code>).<p>In rare circumstances, the raw data throughput
+ * requirements may be so high that the user wishes to postpone metadata writes so as to reserve I/O
+ * throughput for raw data. The <code>evictions_enabled</code> field exists to allow this. However, this is an
+ * extreme step, and you have no business doing it unless you have read the User Guide section on metadata
+ * caching, and have considered all other options carefully.</p><p>The <code>evictions_enabled</code> field
+ * may not be set to disabled (<code>0</code>) unless all adaptive cache resizing code is disabled via the
+ * <code>incr_mode</code>, <code>flash_incr_mode</code>, and <code>decr_mode</code> fields.</p><p>When this
+ * flag is set to disabled (<code>0</code>), the metadata cache will not attempt to evict entries to make
+ * space for new entries, and thus will grow without bound.</p><p>Evictions will be re-enabled when
+ * this field is set back to <code>1</code>. This should be done as soon as possible.</p></td>
* </tr>
* <tr>
* <td><em>hbool_t</em> <code>set_initial_size</code></td>
@@ -1242,24 +1250,24 @@ H5_DLL herr_t H5Fget_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr);
* <tr>
* <td><em>size_t</em> <code>initial_size</code></td>
* <td>IN: If <code>set_initial_size</code> is set to <code>1</code>, then <code>initial_size</code> must
- * contain the desired initial size in bytes. This value must lie in the closed interval <code>[min_size,
- * max_size]</code>. (see below)</td>
+ * contain the desired initial size in bytes. This value must lie in the closed interval
+ * <code>[min_size, max_size]</code>. (see below)</td>
* </tr>
* <tr><td><em>double</em> <code>min_clean_fraction</code></td>
* <td>IN: This field specifies the minimum fraction of the cache that must be kept either clean or
- * empty.<p>The value must lie in the interval [0.0, 1.0]. 0.01 is a good place to start in the serial case.
- * In the parallel case, a larger value is needed --
- * see <a href="/display/HDF5/Metadata+Caching+in+HDF5">Metadata Caching in HDF5</a> in the collection
- * "Advanced Topics in HDF5."</p></td>
+ * empty.<p>The value must lie in the interval [0.0, 1.0]. 0.01 is a good place to start in the serial
+ * case. In the parallel case, a larger value is needed -- see <a
+ * href="/display/HDF5/Metadata+Caching+in+HDF5">Metadata Caching in HDF5</a> in the collection "Advanced
+ * Topics in HDF5."</p></td>
* </tr>
* <tr><td><em>size_t</em> <code>max_size</code></td>
- * <td>IN: Upper bound (in bytes) on the range of values that the adaptive cache resize code can select as
- * the maximum cache size.</td>
+ * <td>IN: Upper bound (in bytes) on the range of values that the adaptive cache resize code can select
+ * as the maximum cache size.</td>
* </tr>
* <tr>
* <td><em>size_t</em> <code>min_size</code></td>
- * <td>IN: Lower bound (in bytes) on the range of values that the adaptive cache resize code can select as
- * the maximum cache size.</td>
+ * <td>IN: Lower bound (in bytes) on the range of values that the adaptive cache resize code can select
+ * as the maximum cache size.</td>
* </tr>
* <tr><td><em>long int</em> <code>epoch_length</code></td>
* <td>IN: Number of cache accesses between runs of the adaptive cache resize code. 50,000 is a good
@@ -1272,27 +1280,25 @@ H5_DLL herr_t H5Fget_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr);
* <tr>
* <td><em>enum H5C_cache_incr_mode</em> <code>incr_mode</code></td>
* <td>IN: Enumerated value indicating the operational mode of the automatic cache size increase code. At
- * present, only two values are legal:<p>\c H5C_incr__off: Automatic cache size increase is disabled, and the
- * remaining increment fields are ignored.</p><p>\c H5C_incr__threshold: Automatic cache size increase is enabled
- * using the hit rate threshold
- * algorithm.</p></td>
+ * present, only two values are legal:<p>\c H5C_incr__off: Automatic cache size increase is disabled,
+ * and the remaining increment fields are ignored.</p><p>\c H5C_incr__threshold: Automatic cache size increase
+ * is enabled using the hit rate threshold algorithm.</p></td>
* </tr>
* <tr>
* <td><em>double</em> <code>lower_hr_threshold</code></td>
* <td>IN: Hit rate threshold used by the hit rate threshold cache size increment algorithm.<p>When the
- * hit rate over an epoch is below this threshold and the cache is full, the maximum size of the cache is
- * multiplied by increment (below), and then clipped as necessary to stay within max_size, and possibly
- * max_increment.</p><p>This field must lie in the interval [0.0, 1.0]. 0.8 or 0.9 is a good starting
+ * hit rate over an epoch is below this threshold and the cache is full, the maximum size of the
+ * cache is multiplied by increment (below), and then clipped as necessary to stay within max_size, and
+ * possibly max_increment.</p><p>This field must lie in the interval [0.0, 1.0]. 0.8 or 0.9 is a good starting
* point.</p></td>
* </tr>
* <tr>
* <td><em>double</em> <code>increment</code></td>
* <td>IN: Factor by which the hit rate threshold cache size increment algorithm multiplies the current
- * maximum cache size to obtain a tentative new cache size.<p>The actual cache size increase will be clipped
- * to satisfy the max_size specified in the general configuration, and possibly max_increment below.</p><p>The
- * parameter must be greater than or equal to 1.0 -- 2.0 is a reasonable value.</p><p>If you set it to 1.0,
- * you will effectively disable cache size
- * increases.</p></td>
+ * maximum cache size to obtain a tentative new cache size.<p>The actual cache size increase will be
+ * clipped to satisfy the max_size specified in the general configuration, and possibly max_increment
+ * below.</p><p>The parameter must be greater than or equal to 1.0 -- 2.0 is a reasonable value.</p><p>If you
+ * set it to 1.0, you will effectively disable cache size increases.</p></td>
* </tr>
* <tr>
* <td><em>hbool_t</em> <code>apply_max_increment</code></td>
@@ -1308,21 +1314,21 @@ H5_DLL herr_t H5Fget_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr);
* <td><em>enum H5C_cache_flash_incr_mode</em> <code>flash_incr_mode</code></td>
* <td>IN: Enumerated value indicating the operational mode of the flash cache size increase code. At
* present, only the following values are legal:<p>\c H5C_flash_incr__off: Flash cache size increase is
- * disabled.</p><p>\c H5C_flash_incr__add_space: Flash cache size increase is enabled using the add space
- * algorithm.</p></td>
+ * disabled.</p><p>\c H5C_flash_incr__add_space: Flash cache size increase is enabled using the add
+ * space algorithm.</p></td>
* </tr>
* <tr>
* <td><em>double</em> <code>flash_threshold</code></td>
* <td>IN: 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.<p>At present, this value must
- * lie in the range [0.1, 1.0].</p></td>
+ * entry / entry size increase which may trigger a flash cache size increase.<p>At present, this value
+ * must lie in the range [0.1, 1.0].</p></td>
* </tr>
* <tr>
* <td><em>double</em> <code>flash_multiple</code></td>
* <td>IN: 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 <code>max_size</code> field above.<p>At present, this field must lie in the range [0.1,
- * 10.0].</p></td>
+ * obtain the initial cache size increment. This increment may be reduced to reflect existing free
+ * space in the cache and the <code>max_size</code> field above.<p>At present, this field must lie in the
+ * range [0.1, 10.0].</p></td>
* </tr>
* </table>
*
@@ -1332,31 +1338,29 @@ H5_DLL herr_t H5Fget_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr);
* <td><em>enum H5C_cache_decr_mode</em> <code>decr_mode</code></td>
* <td>IN: Enumerated value indicating the operational mode of the automatic cache size decrease code. At
* present, the following values are legal:<p>\c H5C_decr__off: Automatic cache size decrease is
- * disabled.</p><p>\c H5C_decr__threshold: Automatic cache size decrease is enabled using the hit rate threshold
- * algorithm.</p><p>\c H5C_decr__age_out: Automatic cache size decrease is enabled using the ageout
- * algorithm.</p><p>\c H5C_decr__age_out_with_threshold: Automatic cache size decrease is enabled using the
- * ageout with hit rate threshold
- * algorithm</p></td>
+ * disabled.</p><p>\c H5C_decr__threshold: Automatic cache size decrease is enabled using the hit
+ * rate threshold algorithm.</p><p>\c H5C_decr__age_out: Automatic cache size decrease is enabled using the
+ * ageout algorithm.</p><p>\c H5C_decr__age_out_with_threshold: Automatic cache size decrease is enabled using
+ * the ageout with hit rate threshold algorithm</p></td>
* </tr>
* <tr>
* <td><em>double</em> <code>upper_hr_threshold</code></td>
* <td>IN: Hit rate threshold for the hit rate threshold and ageout with hit rate threshold cache size
- * decrement algorithms.<p>When \c decr_mode is \c H5C_decr__threshold, and the hit rate over a given epoch exceeds
- * the supplied threshold, the current maximum cache size is multiplied by decrement to obtain a tentative new
- * (and smaller) maximum cache size.</p><p>When \c decr_mode is \c H5C_decr__age_out_with_threshold, there is no
- * attempt to find and evict aged out entries unless the hit rate in the previous epoch exceeded the supplied
- * threshold.</p><p>This field must lie in the interval [0.0, 1.0].</p><p>For \c H5C_incr__threshold, .9995 or
- * .99995 is a good place to start.</p><p>For \c H5C_decr__age_out_with_threshold, .999 might be more
- * useful.</p></td>
+ * decrement algorithms.<p>When \c decr_mode is \c H5C_decr__threshold, and the hit rate over a given
+ * epoch exceeds the supplied threshold, the current maximum cache size is multiplied by decrement to obtain a
+ * tentative new (and smaller) maximum cache size.</p><p>When \c decr_mode is \c
+ * H5C_decr__age_out_with_threshold, there is no attempt to find and evict aged out entries unless the hit
+ * rate in the previous epoch exceeded the supplied threshold.</p><p>This field must lie in the interval
+ * [0.0, 1.0].</p><p>For \c H5C_incr__threshold, .9995 or .99995 is a good place to start.</p><p>For \c
+ * H5C_decr__age_out_with_threshold, .999 might be more useful.</p></td>
* </tr>
* <tr>
* <td><em>double</em> <code>decrement</code></td>
* <td>IN: In the hit rate threshold cache size decrease algorithm, this parameter contains the factor by
- * which the current max cache size is multiplied to produce a tentative new cache size.<p>The actual cache
- * size decrease will be clipped to satisfy the min_size specified in the general configuration, and possibly
- * max_decrement below.</p><p>The parameter must be be in the interval [0.0, 1.0].</p><p>If you set it to 1.0,
- * you will effectively disable cache size decreases. 0.9 is a reasonable starting
- * point.</p></td>
+ * which the current max cache size is multiplied to produce a tentative new cache size.<p>The actual
+ * cache size decrease will be clipped to satisfy the min_size specified in the general configuration, and
+ * possibly max_decrement below.</p><p>The parameter must be be in the interval [0.0, 1.0].</p><p>If you set
+ * it to 1.0, you will effectively disable cache size decreases. 0.9 is a reasonable starting point.</p></td>
* </tr>
* <tr>
* <td><em>hbool_t</em> <code>apply_max_decrement</code></td>
@@ -1371,8 +1375,8 @@ H5_DLL herr_t H5Fget_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr);
* <tr>
* <td><em>int</em> <code>epochs_before_eviction</code></td>
* <td>IN: In the ageout based cache size reduction algorithms, this field contains the minimum number of
- * epochs an entry must remain unaccessed in cache before the cache size reduction algorithm tries to evict
- * it. 3 is a reasonable value.</td>
+ * epochs an entry must remain unaccessed in cache before the cache size reduction algorithm tries to
+ * evict it. 3 is a reasonable value.</td>
* </tr>
* <tr>
* <td><em>hbool_t</em> <code>apply_empty_reserve</code></td>
@@ -1381,9 +1385,9 @@ H5_DLL herr_t H5Fget_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr);
* </tr>
* <tr>
* <td><em>double</em> <code>empty_reserve</code></td>
- * <td>IN: Empty reserve as a fraction of maximum cache size if applicable.<p>When so directed, the ageout
- * based algorithms will not decrease the maximum cache size unless the empty reserve can be met.</p><p>The
- * parameter must lie in the interval [0.0, 1.0]. 0.1 or 0.05 is a good place to
+ * <td>IN: Empty reserve as a fraction of maximum cache size if applicable.<p>When so directed, the
+ * ageout based algorithms will not decrease the maximum cache size unless the empty reserve can be
+ * met.</p><p>The parameter must lie in the interval [0.0, 1.0]. 0.1 or 0.05 is a good place to
* start.</p></td>
* </tr>
* </table>
@@ -1393,11 +1397,11 @@ H5_DLL herr_t H5Fget_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr);
* <tr>
* <td><em>int</em> <code>dirty_bytes_threshold</code></td>
* <td>IN: Threshold number of bytes of dirty metadata generation for triggering synchronizations of the
- * metadata caches serving the target file in the parallel case.<p>Synchronization occurs whenever the number
- * of bytes of dirty metadata created since the last synchronization exceeds this limit.</p><p>This field only
- * applies to the parallel case. While it is ignored elsewhere, it can still draw a value out of bounds
- * error.</p><p>It must be consistant across all caches on any given file.</p><p>By default, this field is set
- * to 256 KB. It shouldn't be more than half the current maximum cache size times the minimum clean
+ * metadata caches serving the target file in the parallel case.<p>Synchronization occurs whenever the
+ * number of bytes of dirty metadata created since the last synchronization exceeds this limit.</p><p>This
+ * field only applies to the parallel case. While it is ignored elsewhere, it can still draw a value out of
+ * bounds error.</p><p>It must be consistant across all caches on any given file.</p><p>By default, this field
+ * is set to 256 KB. It shouldn't be more than half the current maximum cache size times the minimum clean
* fraction.</p></td>
* </tr>
* </table>
@@ -1640,7 +1644,8 @@ H5_DLL herr_t H5Fget_info2(hid_t obj_id, H5F_info2_t *file_info);
* <tr><td>18</td><td>Fixed array data block</td></tr>
* <tr><td>19</td><td>Fixed array data block page</td></tr>
* <tr><td>20</td><td>File's superblock (version 2)</td></tr>
- * <tr><td colspan=2><sup>*</sup> All entries are of version 0 (zero) unless indicated otherwise.</td></tr>
+ * <tr><td colspan=2><sup>*</sup> All entries are of version 0 (zero) unless indicated
+ * otherwise.</td></tr>
* </table>
*
* \note On a system that is not atomic, the library might possibly read inconsistent
@@ -1927,8 +1932,7 @@ H5_DLL herr_t H5Fstop_mdc_logging(hid_t file_id);
*
* \since 1.10.0
*/
-H5_DLL herr_t H5Fget_mdc_logging_status(hid_t file_id, hbool_t *is_enabled,
- hbool_t *is_currently_logging);
+H5_DLL herr_t H5Fget_mdc_logging_status(hid_t file_id, hbool_t *is_enabled, hbool_t *is_currently_logging);
/**
* \ingroup SWMR
*
@@ -2065,6 +2069,7 @@ H5_DLL herr_t H5Fget_dset_no_attrs_hint(hid_t file_id, hbool_t *minimize);
*
*/
H5_DLL herr_t H5Fset_dset_no_attrs_hint(hid_t file_id, hbool_t minimize);
+H5_DLL herr_t H5Fwait(hid_t file_id);
#ifdef H5_HAVE_PARALLEL
/**
@@ -2159,6 +2164,26 @@ H5_DLL herr_t H5Fset_mpi_atomicity(hid_t file_id, hbool_t flag);
H5_DLL herr_t H5Fget_mpi_atomicity(hid_t file_id, hbool_t *flag);
#endif /* H5_HAVE_PARALLEL */
+/* API Wrappers for async routines */
+/* (Must be defined _after_ the function prototype) */
+/* (And must only defined when included in application code, not the library) */
+#ifndef H5F_MODULE
+#define H5Fcreate_async(...) H5Fcreate_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
+#define H5Fopen_async(...) H5Fopen_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
+#define H5Freopen_async(...) H5Freopen_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
+#define H5Fflush_async(...) H5Fflush_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
+#define H5Fclose_async(...) H5Fclose_async(__FILE__, __func__, __LINE__, __VA_ARGS__)
+
+/* Define "wrapper" versions of function calls, to allow compile-time values to
+ * be passed in by language wrapper or library layer on top of HDF5.
+ */
+#define H5Fcreate_async_wrap H5_NO_EXPAND(H5Fcreate_async)
+#define H5Fopen_async_wrap H5_NO_EXPAND(H5Fopen_async)
+#define H5Freopen_async_wrap H5_NO_EXPAND(H5Freopen_async)
+#define H5Fflush_async_wrap H5_NO_EXPAND(H5Fflush_async)
+#define H5Fclose_async_wrap H5_NO_EXPAND(H5Fclose_async)
+#endif /* H5F_MODULE */
+
/* Symbols defined for compatibility with previous versions of the HDF5 API.
*
* Use of these symbols is deprecated.