diff options
author | jhendersonHDF <jhenderson@hdfgroup.org> | 2022-09-16 16:17:30 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-16 16:17:30 (GMT) |
commit | 16aa2dbaa0e70bf81f4329a70a45c601433549bb (patch) | |
tree | 7c6debf81d393d9294a2e6d79ca36b53d485348d /src/H5FDsubfiling/H5FDioc_priv.h | |
parent | 45178c87a3099a9fef8bae6f7249ca306cf89629 (diff) | |
download | hdf5-16aa2dbaa0e70bf81f4329a70a45c601433549bb.zip hdf5-16aa2dbaa0e70bf81f4329a70a45c601433549bb.tar.gz hdf5-16aa2dbaa0e70bf81f4329a70a45c601433549bb.tar.bz2 |
Subfiling VFD updates (#2106)
Diffstat (limited to 'src/H5FDsubfiling/H5FDioc_priv.h')
-rw-r--r-- | src/H5FDsubfiling/H5FDioc_priv.h | 37 |
1 files changed, 14 insertions, 23 deletions
diff --git a/src/H5FDsubfiling/H5FDioc_priv.h b/src/H5FDsubfiling/H5FDioc_priv.h index a86810c..3b0c4d0 100644 --- a/src/H5FDsubfiling/H5FDioc_priv.h +++ b/src/H5FDsubfiling/H5FDioc_priv.h @@ -394,26 +394,15 @@ typedef struct ioc_io_queue { * input arguments for the functions which were originally * invoked. See below. */ -typedef struct _client_io_args { - int ioc; /* ID of the IO Concentrator handling this IO. */ - int64_t context_id; /* The context id provided for the read or write */ - int64_t offset; /* The file offset for the IO operation */ - int64_t elements; /* How many bytes */ - void *data; /* A pointer to the (contiguous) data segment */ - MPI_Request io_req; /* An MPI request to allow the code to loop while */ - /* making progress on multiple IOs */ -} io_args_t; - -typedef struct _client_io_func { - int (*io_function)(void *this_io); /* pointer to a completion function */ - io_args_t io_args; /* arguments passed to the completion function */ - int pending; /* The function is complete (0) or pending (1)? */ -} io_func_t; - typedef struct _io_req { - struct _io_req *prev; /* A simple list structure containing completion */ - struct _io_req *next; /* functions. These should get removed as IO ops */ - io_func_t completion_func; /* are completed */ + int ioc; /* ID of the IO Concentrator handling this IO. */ + int64_t context_id; /* The context id provided for the read or write */ + int64_t offset; /* The file offset for the IO operation */ + int64_t elements; /* How many bytes */ + void *data; /* A pointer to the (contiguous) data segment */ + MPI_Request io_transfer_req; /* MPI request for Isend/Irecv of I/O data */ + MPI_Request io_comp_req; /* MPI request signifying when actual I/O is finished */ + int io_comp_tag; /* MPI tag value used for completed I/O request */ } io_req_t; extern int *H5FD_IOC_tag_ub_val_ptr; @@ -425,10 +414,12 @@ extern "C" { H5_DLL int initialize_ioc_threads(void *_sf_context); H5_DLL int finalize_ioc_threads(void *_sf_context); -H5_DLL herr_t ioc__write_independent_async(int64_t context_id, int n_io_concentrators, int64_t offset, - int64_t elements, const void *data, io_req_t **io_req); -H5_DLL herr_t ioc__read_independent_async(int64_t context_id, int n_io_concentrators, int64_t offset, - int64_t elements, void *data, io_req_t **io_req); +H5_DLL herr_t ioc__write_independent_async(int64_t context_id, int64_t offset, int64_t elements, + const void *data, io_req_t **io_req); +H5_DLL herr_t ioc__read_independent_async(int64_t context_id, int64_t offset, int64_t elements, void *data, + io_req_t **io_req); + +H5_DLL herr_t ioc__async_completion(MPI_Request *mpi_reqs, size_t num_reqs); H5_DLL int wait_for_thread_main(void); |