summaryrefslogtreecommitdiffstats
path: root/test/vfd_swmr_bigset_writer.c
diff options
context:
space:
mode:
authorDavid Young <dyoung@hdfgroup.org>2020-06-26 21:41:38 (GMT)
committerDavid Young <dyoung@hdfgroup.org>2020-06-26 21:41:38 (GMT)
commit26d5a950e8087fb331a4941c0553eb722f84cf15 (patch)
tree7486c009b8e3f42d8298467ead38bda68446cc2a /test/vfd_swmr_bigset_writer.c
parentbf4fca57f77284a297deac1199ab99fea2c6be17 (diff)
downloadhdf5-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.c76
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);