diff options
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); |