int mca_sharedfp_lockedfile_read ( ompio_file_t *fh, void *buf, int count, MPI_Datatype datatype, MPI_Status *status) { int ret = OMPI_SUCCESS; OMPI_MPI_OFFSET_TYPE offset = 0; long bytesRequested = 0; size_t numofBytes; struct mca_sharedfp_base_data_t *sh = NULL; if ( fh->f_sharedfp_data == NULL ) { if ( mca_sharedfp_lockedfile_verbose ) { opal_output(ompi_sharedfp_base_framework.framework_output, "sharedfp_lockedfile_read: module not initialized\n"); } return OMPI_ERROR; } /* Calculate the number of bytes to read */ opal_datatype_type_size ( &datatype->super, &numofBytes); bytesRequested = count * numofBytes; if ( mca_sharedfp_lockedfile_verbose ) { opal_output(ompi_sharedfp_base_framework.framework_output, "sharedfp_lockedfile_read: Bytes Requested is %ld\n",bytesRequested); } /*Retrieve the shared file data struct*/ sh = fh->f_sharedfp_data; /*Request the offset to write bytesRequested bytes*/ ret = mca_sharedfp_lockedfile_request_position(sh,bytesRequested,&offset); offset /= fh->f_etype_size; if (-1 != ret ) { if ( mca_sharedfp_lockedfile_verbose ) { opal_output(ompi_sharedfp_base_framework.framework_output, "sharedfp_lockedfile_read: Offset received is %lld\n",offset); } /* Read the file */ ret = mca_common_ompio_file_read_at(fh,offset,buf,count,datatype,status); } return ret; }
int mca_sharedfp_addproc_read ( mca_io_ompio_file_t *fh, void *buf, int count, MPI_Datatype datatype, MPI_Status *status) { int ret = OMPI_SUCCESS; OMPI_MPI_OFFSET_TYPE offset = 0; long bytesRequested = 0; size_t numofBytes; struct mca_sharedfp_base_data_t *sh = NULL; if(NULL == fh->f_sharedfp_data){ opal_output(0, "sharedfp_addproc_read: shared file pointer " "structure not initialized correctly\n"); return OMPI_ERROR; } /* Calculate the number of bytes to write */ opal_datatype_type_size ( &datatype->super ,&numofBytes); bytesRequested = count * numofBytes; if ( mca_sharedfp_addproc_verbose ){ opal_output(ompi_sharedfp_base_framework.framework_output, "mca_sharedfp_addproc_read: Bytes Requested is %ld\n", bytesRequested); } /* Retrieve the shared file data struct */ sh = fh->f_sharedfp_data; /*Request to the additional process for the offset*/ ret = mca_sharedfp_addproc_request_position(sh,bytesRequested,&offset); offset /= sh->sharedfh->f_etype_size; if( OMPI_SUCCESS == ret ){ if ( mca_sharedfp_addproc_verbose ){ opal_output(ompi_sharedfp_base_framework.framework_output, "mca_sharedfp_addproc_read: Offset received is %lld\n",offset); } /* Read from the file */ ret = mca_common_ompio_file_read_at(sh->sharedfh,offset,buf,count,datatype,status); } return ret; }