diff options
author | David Young <dyoung@hdfgroup.org> | 2020-06-26 21:41:38 (GMT) |
---|---|---|
committer | David Young <dyoung@hdfgroup.org> | 2020-06-26 21:41:38 (GMT) |
commit | 26d5a950e8087fb331a4941c0553eb722f84cf15 (patch) | |
tree | 7486c009b8e3f42d8298467ead38bda68446cc2a /test/vfd_swmr_bigset_writer.c | |
parent | bf4fca57f77284a297deac1199ab99fea2c6be17 (diff) | |
download | hdf5-26d5a950e8087fb331a4941c0553eb722f84cf15.zip hdf5-26d5a950e8087fb331a4941c0553eb722f84cf15.tar.gz hdf5-26d5a950e8087fb331a4941c0553eb722f84cf15.tar.bz2 |
Create one dataset creation property list and one file dataspace and
share them across all datasets/iterations. Extract common code into
state_destroy().
Diffstat (limited to 'test/vfd_swmr_bigset_writer.c')
-rw-r--r-- | test/vfd_swmr_bigset_writer.c | 76 |
1 files changed, 45 insertions, 31 deletions
diff --git a/test/vfd_swmr_bigset_writer.c b/test/vfd_swmr_bigset_writer.c index f3684df..b58a9cf 100644 --- a/test/vfd_swmr_bigset_writer.c +++ b/test/vfd_swmr_bigset_writer.c @@ -47,7 +47,7 @@ typedef struct _mat { typedef struct { hid_t *dataset; - hid_t dapl, memspace, file, one_by_one_sid; + hid_t dapl, dcpl, filespace, memspace, file, one_by_one_sid; unsigned ndatasets; char filename[PATH_MAX]; char progname[PATH_MAX]; @@ -65,7 +65,9 @@ typedef struct { #define ALL_HID_INITIALIZER (state_t){ \ .memspace = H5I_INVALID_HID \ , .dapl = H5I_INVALID_HID \ + , .dcpl = H5I_INVALID_HID \ , .file = H5I_INVALID_HID \ + , .filespace = H5I_INVALID_HID \ , .one_by_one_sid = H5I_INVALID_HID \ , .rows = ROWS \ , .cols = COLS \ @@ -247,6 +249,22 @@ state_init(state_t *s, int argc, char **argv) s->one_dee_max_dims[0] = s->rows; s->one_dee_max_dims[1] = H5S_UNLIMITED; + if ((s->dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) { + errx(EXIT_FAILURE, "%s.%d: H5Pcreate failed", + __func__, __LINE__); + } + + if (H5Pset_chunk(s->dcpl, RANK, s->chunk_dims) < 0) + errx(EXIT_FAILURE, "H5Pset_chunk failed"); + + s->filespace = H5Screate_simple(NELMTS(s->chunk_dims), s->chunk_dims, + s->two_dee ? two_dee_max_dims : s->one_dee_max_dims); + + if (s->filespace < 0) { + errx(EXIT_FAILURE, "%s.%d: H5Screate_simple failed", + __func__, __LINE__); + } + /* space for attributes */ if ((s->one_by_one_sid = H5Screate_simple(1, &dims, &dims)) < 0) errx(EXIT_FAILURE, "H5Screate_simple failed"); @@ -269,43 +287,43 @@ state_init(state_t *s, int argc, char **argv) } static void -create_extensible_dset(state_t *s, unsigned int which) +state_destroy(state_t *s) { - char dname[sizeof("/dataset-9999999999")]; - hid_t dcpl, ds, filespace; + if (H5Pclose(s->dcpl) < 0) + errx(EXIT_FAILURE, "H5Pclose(dcpl)"); - assert(which < s->ndatasets); + s->dcpl = badhid; - esnprintf(dname, sizeof(dname), "/dataset-%d", which); + if (H5Sclose(s->filespace) < 0) + errx(EXIT_FAILURE, "H5Sclose failed"); - assert(s->dataset[which] == badhid); + s->filespace = badhid; - filespace = H5Screate_simple(NELMTS(s->chunk_dims), s->chunk_dims, - s->two_dee ? two_dee_max_dims : s->one_dee_max_dims); + if (H5Pclose(s->dapl) < 0) + errx(EXIT_FAILURE, "H5Pclose(fapl)"); - if (filespace < 0) { - errx(EXIT_FAILURE, "%s.%d: H5Screate_simple failed", - __func__, __LINE__); - } + s->dapl = badhid; - if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) { - errx(EXIT_FAILURE, "%s.%d: H5Pcreate failed", - __func__, __LINE__); - } + if (H5Fclose(s->file) < 0) + errx(EXIT_FAILURE, "H5Fclose"); - if (H5Pset_chunk(dcpl, RANK, s->chunk_dims) < 0) - errx(EXIT_FAILURE, "H5Pset_chunk failed"); + s->file = badhid; +} - ds = H5Dcreate2(s->file, dname, H5T_STD_U32BE, filespace, - H5P_DEFAULT, dcpl, s->dapl); +static void +create_extensible_dset(state_t *s, unsigned int which) +{ + char dname[sizeof("/dataset-9999999999")]; + hid_t ds; - if (H5Pclose(dcpl) < 0) - errx(EXIT_FAILURE, "H5Pclose(dcpl)"); + assert(which < s->ndatasets); - if (H5Sclose(filespace) < 0) - errx(EXIT_FAILURE, "H5Sclose failed"); + esnprintf(dname, sizeof(dname), "/dataset-%d", which); - filespace = badhid; + assert(s->dataset[which] == badhid); + + ds = H5Dcreate2(s->file, dname, H5T_STD_U32BE, s->filespace, + H5P_DEFAULT, s->dcpl, s->dapl); if (ds < 0) errx(EXIT_FAILURE, "H5Dcreate(, \"%s\", ) failed", dname); @@ -771,17 +789,13 @@ main(int argc, char **argv) restore_signals(&oldsigs); - if (H5Pclose(s.dapl) < 0) - errx(EXIT_FAILURE, "H5Pclose(fapl)"); - if (H5Pclose(fapl) < 0) errx(EXIT_FAILURE, "H5Pclose(fapl)"); if (H5Pclose(fcpl) < 0) errx(EXIT_FAILURE, "H5Pclose(fcpl)"); - if (H5Fclose(s.file) < 0) - errx(EXIT_FAILURE, "H5Fclose"); + state_destroy(&s); free(mat); |