summaryrefslogtreecommitdiffstats
path: root/src/H5FDvfd_swmr.h
blob: 326f825d3c4695b5a0c2a67ea30b415a3a376a5a (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
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 * Copyright by Akadio, Inc.                                                 *
 * 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 COPYING file, which can be found at the root of the source code       *
 * distribution tree, or in https://www.hdfgroup.org/licenses.               *
 * If you do not have access to either file, you may request a copy from     *
 * help@hdfgroup.org.                                                        *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

/*
 * The public header file for the VFD SWMR driver.
 */
#ifndef H5FDvfd_swmr_H
#define H5FDvfd_swmr_H

#define H5FD_VFD_SWMR       (H5FDperform_init(H5FD_vfd_swmr_init))
#define H5FD_VFD_SWMR_VALUE H5_VFD_SWMR

/* Semi-unique constant used to help identify structure pointers */
#define H5FD_VFD_SWMR_READER_MAGIC 0xABC123


/* ----------------------------------------------------------------------------
 * Structure:   H5FD_vfd_swmr_reader_fapl_t
 *
 * Structure for configuring the VFD SWMR reader VFD.  This structure and the
 * associated FAPL entry and get / set routines are for HDF5 library use only, 
 * and should never be seen by the user.  
 *
 * When a file is opened in VFD SWMR mode, the VFD SWMR reader VFD is inserted 
 * at the top of the user supplied (or default) VFD stack.
 *
 * The fields of this structure are discussed indvidually below.  Note that 
 * there is no version field, since this structure should not be accessible 
 * to the user.  The set of fields is quite limited, as most of the necessary
 * configuration data is taken from the VFD SWMR configuration FAPL entry
 *
 * magic (int32_t)
 *      Semi-unique number, used to sanity-check that a given pointer is
 *      likely (or not) to be this structure type. MUST be first.
 *      If magic is not H5FD_VFD_SWMR_READER_MAGIC, the structure (and/or 
 *      pointer to) must be considered invalid.
 *
 * fapl_id (hid_t)
 *      Library-given identification number of the FAPL containing the user 
 *      supplied VFD stack.  Must be set to H5P_DEFAULT or contain a file 
 *      driver entry specifying a VFD that supports VFD SWMR
 *
 * ----------------------------------------------------------------------------
 */
typedef struct H5FD_vfd_swmr_reader_fapl_t {
    int32_t      magic;
    hid_t        fapl_id;
} H5FD_vfd_swmr_reader_fapl_t;


#ifdef __cplusplus
extern "C" {
#endif

H5_DLL hid_t  H5FD_vfd_swmr_init(void);
H5_DLL herr_t H5P_pop_vfd_swmr_reader_vfd_off_fapl(hid_t fapl_id);
H5_DLL herr_t H5P_push_vfd_swmr_reader_vfd_on_fapl(hid_t fapl_id);


#ifdef __cplusplus
}
#endif

#endif