int main(int argc, char *argv[]) { int file_mode = O_RDONLY; int fd; parse_opts(argc, argv); if (read_mode == 0) file_mode = O_WRONLY; else if (read_mode == 1) file_mode = O_RDONLY; else usage(argv[0], EXIT_FAILURE); fd = open(SYSFS_PATH, file_mode); if (fd == -1) err(EXIT_FAILURE, "%s", SYSFS_PATH); if (read_mode) if (read_byte_offset == -1) dump_ec(fd); else if (read_byte_offset < 0 || read_byte_offset >= EC_SPACE_SIZE) usage(argv[0], EXIT_FAILURE); else read_ec_val(fd, read_byte_offset); else write_ec_val(fd, write_byte_offset, write_value); close(fd); exit(EXIT_SUCCESS); }
void checkpoint(checkpoint_handle* check, grid_parms grid, double tnow, celltype1** smc, celltype2** ec, int write_count) { MPI_Status status; MPI_Offset disp; disp = (write_count*1*grid.tasks*sizeof(double))+ (grid.rank*sizeof(double)); CHECK(MPI_File_write_at(check->Time, disp, &tnow, 1, MPI_DOUBLE, &status)); dump_smc(grid, smc, check, write_count); dump_ec(grid, ec, check, write_count); }