summaryrefslogtreecommitdiffstats
path: root/src/H5VLiod.h
blob: 93842d28b98fd819eecf44f5d1024b9d93c79be3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 * Copyright by The HDF Group.                                               *
 * Copyright by the Board of Trustees of the University of Illinois.         *
 * All rights reserved.                                                      *
 *                                                                           *
 * This file is part of HDF5.  The full HDF5 copyright notice, including     *
 * terms governing use, modification, and redistribution, is contained in    *
 * the files COPYING and Copyright.html.  COPYING can be found at the root   *
 * of the source code distribution tree; Copyright.html can be found at the  *
 * root level of an installed copy of the electronic HDF5 document set and   *
 * is linked from the top-level documents page.  It can also be found at     *
 * http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have          *
 * access to either file, you may request a copy from help@hdfgroup.org.     *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

/*
 * Programmer:  Mohamad Chaarawi <chaarawi@hdfgroup.gov>
 *              January, 2012
 *
 * Purpose:	The public header file for the IOD VOL plugin.
 */
#ifndef H5VLiod_H
#define H5VLiod_H

#ifdef H5_HAVE_EFF

#include "axe.h"
#include "iod_api.h"
#include "iod_types.h"
#ifdef H5_HAVE_IOD_CORRUPT_TOOL
#include "iod_corrupt_tool.h"
#endif
#include "mercury.h"
#include "mercury_handler.h"
#include "mercury_macros.h"
#include "mercury_proc_string.h"
#include "na_mpi.h"

#define H5VL_IOD	(H5VL_iod_init())
#else
#define H5VL_IOD	(-1)
#endif

#ifdef __cplusplus
extern "C" {
#endif

#ifdef H5_HAVE_EFF

#define H5D_XFER_INJECT_CORRUPTION_NAME "inject_corruption"
#define H5D_XFER_CHECKSUM_NAME "checksum"
#define H5D_XFER_CHECKSUM_PTR_NAME "checksum_ptr"

#define H5D_CRT_DIMS_ORDER_NAME "dims_order"
#define H5D_CRT_STRIPE_COUNT_NAME "stripe_count"
#define H5D_CRT_STRIPE_SIZE_NAME "stripe_size"
#define H5D_CRT_APPEND_ONLY_NAME "append_only"

#define H5O_CRT_ENABLE_CHECKSUM_NAME "enable_obj_checksum"

#define H5O_XFER_REPLICA_ID_NAME "replica_id"
#define H5O_XFER_LAYOUT_TYPE_NAME "layout_type"
#define H5O_XFER_SELECTION_NAME "prefetched_selection"
#define H5O_XFER_KEY_TYPE_NAME "prefetched_keytype"
#define H5O_XFER_LOW_KEY_BUF_NAME "low_key_range"
#define H5O_XFER_HIGH_KEY_BUF_NAME "high_key_range"

typedef enum H5FF_layout_t {
    H5_DEFAULT_LAYOUT = 0,
    H5_LOCAL_NODE,
    H5_CONTROLLED_LAYOUT
} H5FF_layout_t;

typedef enum H5FF_dset_dim_layout_t {
    H5D_ROW_MAJOR = 0,
    H5D_COL_MAJOR
} H5FF_dset_dim_layout_t;

H5_DLL H5VL_class_t *H5VL_iod_init(void);
H5_DLL herr_t H5Pset_fapl_iod(hid_t fapl_id, MPI_Comm comm, MPI_Info info);
H5_DLL herr_t EFF_start_server(MPI_Comm comm, MPI_Info info);
H5_DLL herr_t EFF_init(MPI_Comm comm, MPI_Info info);
H5_DLL herr_t EFF_finalize(void);

H5_DLL herr_t H5Pset_dxpl_replica(hid_t dxpl_id, hrpl_t replica_id);
H5_DLL herr_t H5Pget_dxpl_replica(hid_t dxpl_id, hrpl_t *replica_id);
H5_DLL herr_t H5Pset_prefetch_layout(hid_t dxpl_id, H5FF_layout_t layout);
H5_DLL herr_t H5Pget_prefetch_layout(hid_t dxpl_id, H5FF_layout_t *layout);
H5_DLL herr_t H5Pset_prefetch_selection(hid_t dxpl_id, hid_t file_space);
    //H5_DLL herr_t H5Pget_prefetch_selection(hid_t dxpl_id, hid_t *file_space);
H5_DLL herr_t H5Pset_prefetch_range(hid_t dxpl_id, hid_t keymem_type, 
                                    const void *low_key, const void *high_key);
    //H5_DLL herr_t H5Pget_prefetch_range(hid_t dxpl_id, hid_t *keymem_type, 
    //void **low_key, void **high_key);

H5_DLL herr_t H5Pset_ocpl_enable_checksum(hid_t ocpl_id, hbool_t flag);
H5_DLL herr_t H5Pget_ocpl_enable_checksum(hid_t ocpl_id, hbool_t *flag);
H5_DLL herr_t H5Pset_dxpl_checksum(hid_t dxpl_id, uint64_t value);
H5_DLL herr_t H5Pget_dxpl_checksum(hid_t dxpl_id, uint64_t *value);
H5_DLL herr_t H5Pset_dxpl_checksum_ptr(hid_t dxpl_id, uint64_t *value);
H5_DLL herr_t H5Pget_dxpl_checksum_ptr(hid_t dxpl_id, uint64_t **value);
H5_DLL herr_t H5Pset_metadata_integrity_scope(hid_t fapl_id, uint32_t scope);
H5_DLL herr_t H5Pget_metadata_integrity_scope(hid_t fapl_id, uint32_t *scope);
H5_DLL herr_t H5Pset_rawdata_integrity_scope(hid_t dxpl_id, uint32_t scope);
H5_DLL herr_t H5Pget_rawdata_integrity_scope(hid_t dxpl_id, uint32_t *scope);
H5_DLL herr_t H5Pset_dxpl_inject_corruption(hid_t dxpl_id, hbool_t flag);
H5_DLL herr_t H5Pget_dxpl_inject_corruption(hid_t dxpl_id, hbool_t *flag);

H5_DLL herr_t H5Pset_dcpl_append_only(hid_t dcpl_id, hbool_t flag);
H5_DLL herr_t H5Pget_dcpl_append_only(hid_t dcpl_id, hbool_t *flag);

H5_DLL herr_t H5Pset_dcpl_dim_layout(hid_t dcpl_id, H5FF_dset_dim_layout_t dims_layout);
H5_DLL herr_t H5Pget_dcpl_dim_layout(hid_t dcpl_id, H5FF_dset_dim_layout_t *dims_layout);
H5_DLL herr_t H5Pset_dcpl_stripe_count(hid_t dcpl_id, size_t stripe_count);
H5_DLL herr_t H5Pget_dcpl_stripe_count(hid_t dcpl_id, size_t *stripe_count);
H5_DLL herr_t H5Pset_dcpl_stripe_size(hid_t dcpl_id, size_t stripe_size);
H5_DLL herr_t H5Pget_dcpl_stripe_size(hid_t dcpl_id, size_t *stripe_size);

H5_DLL hid_t H5VLiod_get_file_id(const char *filename, iod_handle_t coh, 
                                 hid_t fapl_id, hid_t *rcxt_id);
H5_DLL herr_t H5VLiod_close_file_id(hid_t file_id);
H5_DLL hid_t H5Dquery_ff(hid_t dset_id, hid_t query_id, hid_t scope_id, 
                         hid_t rcxt_id);
H5_DLL herr_t H5VLiod_query_map(hid_t obj_id, iod_trans_id_t rtid, 
                                iod_obj_map_t **obj_map);
H5_DLL herr_t H5VLiod_close_map(hid_t obj_id, iod_obj_map_t *obj_map);

#endif /* H5_HAVE_EFF */

#ifdef __cplusplus
}
#endif

#endif /* _H5VLiod_H */