1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2  * Copyright by The HDF Group.                                               *
3  * All rights reserved.                                                      *
4  *                                                                           *
5  * This file is part of HDF5.  The full HDF5 copyright notice, including     *
6  * terms governing use, modification, and redistribution, is contained in    *
7  * the COPYING file, which can be found at the root of the source code       *
8  * distribution tree, or in https://www.hdfgroup.org/licenses.               *
9  * If you do not have access to either file, you may request a copy from     *
10  * help@hdfgroup.org.                                                        *
11  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
12 
13 /*
14  * Purpose:	The public header file for the native VOL connector.
15  */
16 
17 #ifndef H5VLnative_H
18 #define H5VLnative_H
19 
20 /* Public headers needed by this file */
21 #include "H5VLpublic.h" /* Virtual Object Layer                 */
22 
23 /*****************/
24 /* Public Macros */
25 /*****************/
26 
27 /* Identifier for the native VOL connector */
28 #define H5VL_NATIVE (H5VL_native_register())
29 
30 /* Characteristics of the native VOL connector */
31 #define H5VL_NATIVE_NAME    "native"
32 #define H5VL_NATIVE_VALUE   H5_VOL_NATIVE /* enum value */
33 #define H5VL_NATIVE_VERSION 0
34 
35 /* Values for VOL connector attribute optional VOL operations */
36 #ifndef H5_NO_DEPRECATED_SYMBOLS
37 #define H5VL_NATIVE_ATTR_ITERATE_OLD 0 /* H5Aiterate (deprecated routine) */
38 #endif                                 /* H5_NO_DEPRECATED_SYMBOLS */
39 
40 /* Values for native VOL connector dataset optional VOL operations */
41 #define H5VL_NATIVE_DATASET_FORMAT_CONVERT          0 /* H5Dformat_convert (internal) */
42 #define H5VL_NATIVE_DATASET_GET_CHUNK_INDEX_TYPE    1 /* H5Dget_chunk_index_type      */
43 #define H5VL_NATIVE_DATASET_GET_CHUNK_STORAGE_SIZE  2 /* H5Dget_chunk_storage_size    */
44 #define H5VL_NATIVE_DATASET_GET_NUM_CHUNKS          3 /* H5Dget_num_chunks            */
45 #define H5VL_NATIVE_DATASET_GET_CHUNK_INFO_BY_IDX   4 /* H5Dget_chunk_info            */
46 #define H5VL_NATIVE_DATASET_GET_CHUNK_INFO_BY_COORD 5 /* H5Dget_chunk_info_by_coord   */
47 #define H5VL_NATIVE_DATASET_CHUNK_READ              6 /* H5Dchunk_read                */
48 #define H5VL_NATIVE_DATASET_CHUNK_WRITE             7 /* H5Dchunk_write               */
49 #define H5VL_NATIVE_DATASET_GET_VLEN_BUF_SIZE       8 /* H5Dvlen_get_buf_size         */
50 #define H5VL_NATIVE_DATASET_GET_OFFSET              9 /* H5Dget_offset                */
51 
52 /* Values for native VOL connector file optional VOL operations */
53 #define H5VL_NATIVE_FILE_CLEAR_ELINK_CACHE            0  /* H5Fclear_elink_file_cache            */
54 #define H5VL_NATIVE_FILE_GET_FILE_IMAGE               1  /* H5Fget_file_image                    */
55 #define H5VL_NATIVE_FILE_GET_FREE_SECTIONS            2  /* H5Fget_free_sections                 */
56 #define H5VL_NATIVE_FILE_GET_FREE_SPACE               3  /* H5Fget_freespace                     */
57 #define H5VL_NATIVE_FILE_GET_INFO                     4  /* H5Fget_info1/2                       */
58 #define H5VL_NATIVE_FILE_GET_MDC_CONF                 5  /* H5Fget_mdc_config                    */
59 #define H5VL_NATIVE_FILE_GET_MDC_HR                   6  /* H5Fget_mdc_hit_rate                  */
60 #define H5VL_NATIVE_FILE_GET_MDC_SIZE                 7  /* H5Fget_mdc_size                      */
61 #define H5VL_NATIVE_FILE_GET_SIZE                     8  /* H5Fget_filesize                      */
62 #define H5VL_NATIVE_FILE_GET_VFD_HANDLE               9  /* H5Fget_vfd_handle                    */
63 #define H5VL_NATIVE_FILE_RESET_MDC_HIT_RATE           10 /* H5Freset_mdc_hit_rate_stats          */
64 #define H5VL_NATIVE_FILE_SET_MDC_CONFIG               11 /* H5Fset_mdc_config                    */
65 #define H5VL_NATIVE_FILE_GET_METADATA_READ_RETRY_INFO 12 /* H5Fget_metadata_read_retry_info      */
66 #define H5VL_NATIVE_FILE_START_SWMR_WRITE             13 /* H5Fstart_swmr_write                  */
67 #define H5VL_NATIVE_FILE_START_MDC_LOGGING            14 /* H5Fstart_mdc_logging                 */
68 #define H5VL_NATIVE_FILE_STOP_MDC_LOGGING             15 /* H5Fstop_mdc_logging                  */
69 #define H5VL_NATIVE_FILE_GET_MDC_LOGGING_STATUS       16 /* H5Fget_mdc_logging_status            */
70 #define H5VL_NATIVE_FILE_FORMAT_CONVERT               17 /* H5Fformat_convert                    */
71 #define H5VL_NATIVE_FILE_RESET_PAGE_BUFFERING_STATS   18 /* H5Freset_page_buffering_stats        */
72 #define H5VL_NATIVE_FILE_GET_PAGE_BUFFERING_STATS     19 /* H5Fget_page_buffering_stats          */
73 #define H5VL_NATIVE_FILE_GET_MDC_IMAGE_INFO           20 /* H5Fget_mdc_image_info                */
74 #define H5VL_NATIVE_FILE_GET_EOA                      21 /* H5Fget_eoa                           */
75 #define H5VL_NATIVE_FILE_INCR_FILESIZE                22 /* H5Fincrement_filesize                */
76 #define H5VL_NATIVE_FILE_SET_LIBVER_BOUNDS            23 /* H5Fset_latest_format/libver_bounds   */
77 #define H5VL_NATIVE_FILE_GET_MIN_DSET_OHDR_FLAG       24 /* H5Fget_dset_no_attrs_hint            */
78 #define H5VL_NATIVE_FILE_SET_MIN_DSET_OHDR_FLAG       25 /* H5Fset_dset_no_attrs_hint            */
79 #define H5VL_NATIVE_FILE_GET_MPI_ATOMICITY            26 /* H5Fget_mpi_atomicity                 */
80 #define H5VL_NATIVE_FILE_SET_MPI_ATOMICITY            27 /* H5Fset_mpi_atomicity                 */
81 #define H5VL_NATIVE_FILE_POST_OPEN                    28 /* Adjust file after open, with wrapping context */
82 
83 /* Values for native VOL connector group optional VOL operations */
84 #ifndef H5_NO_DEPRECATED_SYMBOLS
85 #define H5VL_NATIVE_GROUP_ITERATE_OLD 0 /* HG5Giterate (deprecated routine) */
86 #define H5VL_NATIVE_GROUP_GET_OBJINFO 1 /* HG5Gget_objinfo (deprecated routine) */
87 #endif                                  /* H5_NO_DEPRECATED_SYMBOLS */
88 
89 /* Values for native VOL connector object optional VOL operations */
90 #define H5VL_NATIVE_OBJECT_GET_COMMENT              0 /* H5G|H5Oget_comment, H5Oget_comment_by_name   */
91 #define H5VL_NATIVE_OBJECT_SET_COMMENT              1 /* H5G|H5Oset_comment, H5Oset_comment_by_name   */
92 #define H5VL_NATIVE_OBJECT_DISABLE_MDC_FLUSHES      2 /* H5Odisable_mdc_flushes                       */
93 #define H5VL_NATIVE_OBJECT_ENABLE_MDC_FLUSHES       3 /* H5Oenable_mdc_flushes                        */
94 #define H5VL_NATIVE_OBJECT_ARE_MDC_FLUSHES_DISABLED 4 /* H5Oare_mdc_flushes_disabled                  */
95 #define H5VL_NATIVE_OBJECT_GET_NATIVE_INFO          5 /* H5Oget_native_info(_by_idx, _by_name)        */
96 
97 /*******************/
98 /* Public Typedefs */
99 /*******************/
100 
101 /********************/
102 /* Public Variables */
103 /********************/
104 
105 /*********************/
106 /* Public Prototypes */
107 /*********************/
108 
109 /*******************/
110 /* Public Typedefs */
111 /*******************/
112 
113 /********************/
114 /* Public Variables */
115 /********************/
116 
117 /*********************/
118 /* Public Prototypes */
119 /*********************/
120 
121 #ifdef __cplusplus
122 extern "C" {
123 #endif
124 
125 /* Token <--> address converters */
126 /**
127  * \ingroup H5VLNAT
128  */
129 H5_DLL herr_t H5VLnative_addr_to_token(hid_t loc_id, haddr_t addr, H5O_token_t *token);
130 /**
131  * \ingroup H5VLNAT
132  */
133 H5_DLL herr_t H5VLnative_token_to_addr(hid_t loc_id, H5O_token_t token, haddr_t *addr);
134 
135 /* Not really public but must be included here */
136 H5_DLL hid_t H5VL_native_register(void);
137 
138 #ifdef __cplusplus
139 }
140 #endif
141 
142 #endif /* H5VLnative_H */
143