diff options
Diffstat (limited to 'src/H5FDfphdf5.h')
-rw-r--r-- | src/H5FDfphdf5.h | 35 |
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, |