summaryrefslogtreecommitdiffstats
path: root/src/H5FDfphdf5.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5FDfphdf5.h')
-rw-r--r--src/H5FDfphdf5.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/H5FDfphdf5.h b/src/H5FDfphdf5.h
index 733908a..20a5c83 100644
--- a/src/H5FDfphdf5.h
+++ b/src/H5FDfphdf5.h
@@ -16,6 +16,7 @@
#define H5FDFPHDF5_H__
#include "H5FDmpio.h"
+#include "H5FDpublic.h" /* for the H5FD_t structure */
#ifdef H5_HAVE_PARALLEL
# define H5FD_FPHDF5 (H5FD_fphdf5_init())
@@ -42,6 +43,38 @@
#define H5FD_FPHDF5_XFER_DUMPING_METADATA "H5FD_fphdf5_dumping_metadata"
#define H5FD_FPHDF5_XFER_DUMPING_SIZE sizeof(unsigned)
+/*
+ * For specifying that only the captain is allowed to allocate things at
+ * this time.
+ */
+#define H5FD_FPHDF5_CAPTN_ALLOC_ONLY "Only_Captain_Alloc"
+#define H5FD_FPHDF5_CAPTN_ALLOC_SIZE sizeof(unsigned)
+
+/*
+ * The description of a file belonging to this driver.
+ *
+ * The FILE_ID field is an SAP defined value. When reading/writing to the
+ * SAP, this value should be sent.
+ *
+ * The EOF field is only used just after the file is opened in order for
+ * the library to determine whether the file is empty, truncated, or
+ * okay. The FPHDF5 driver doesn't bother to keep it updated since it's
+ * an expensive operation.
+ */
+typedef struct H5FD_fphdf5_t {
+ H5FD_t pub; /*Public stuff, must be first (ick!) */
+ unsigned file_id; /*ID used by the SAP */
+ MPI_File f; /*MPIO file handle */
+ MPI_Comm comm; /*Communicator */
+ MPI_Comm barrier_comm; /*Barrier communicator */
+ MPI_Info info; /*File information */
+ int mpi_rank; /*This process's rank */
+ int mpi_size; /*Total number of processes */
+ haddr_t eof; /*End-of-file marker */
+ haddr_t eoa; /*End-of-address marker */
+ haddr_t last_eoa; /*Last known end-of-address marker */
+} H5FD_fphdf5_t;
+
extern const H5FD_class_t H5FD_fphdf5_g;
/* Function prototypes */
@@ -78,6 +111,8 @@ H5_DLL int H5FD_fphdf5_mpi_rank(H5FD_t *_file);
H5_DLL int H5FD_fphdf5_mpi_size(H5FD_t *_file);
H5_DLL unsigned H5FD_fphdf5_file_id(H5FD_t *_file);
H5_DLL hbool_t H5FD_fphdf5_is_sap(H5FD_t *_file);
+H5_DLL hbool_t H5FD_fphdf5_is_captain(H5FD_t *_file);
+H5_DLL hbool_t H5FD_is_fphdf5_driver(H5FD_t *_file);
H5_DLL herr_t H5FD_fphdf5_write_real(H5FD_t *_file, hid_t dxpl_id,
MPI_Offset mpi_off, int size,