summaryrefslogtreecommitdiffstats
path: root/tools/src/h5perf/sio_engine.c
diff options
context:
space:
mode:
authorDana Robinson <43805+derobins@users.noreply.github.com>2022-04-26 06:24:11 (GMT)
committerGitHub <noreply@github.com>2022-04-26 06:24:11 (GMT)
commita53f47b72f64ce67ecc13381643fc1a00bfc6872 (patch)
tree508c9135860dc3ab03595fa938ae3ab7ca680c5b /tools/src/h5perf/sio_engine.c
parentb36cceee0ecda5a87544442cbcf19a92bc70a757 (diff)
downloadhdf5-a53f47b72f64ce67ecc13381643fc1a00bfc6872.zip
hdf5-a53f47b72f64ce67ecc13381643fc1a00bfc6872.tar.gz
hdf5-a53f47b72f64ce67ecc13381643fc1a00bfc6872.tar.bz2
Onion VFD: Misc cleanup (#1693)
* Removes unused definitions from module headers (#1624) * Fix these Doxygen warnings #1581 (#1589) * Fixes a typo in H5.c (#1639) * free MPI_Group/MPI_Comm/MPI_Datatype objects (#1638) * free MPI_Group/MPI_Comm/MPI_Datatype objects * fix clang-format style * Adds build and license shields to README.md (#1641) * First stab at a Github status bar * Adds a .tokeignore file for counting lines of code accurately * Yanks lines of code calculation since it wildly overcounts * not depend on doIO to free an MPI_Comm object (#1642) * free MPI datatypes previously created (#1637) * Retrieve MPI-IO hints used by MPI library after file open (#1636) H5Pget_fapl_mpio() should return an MPI info object containing all the MPI-IO hints used by the MPI library underneath, after the file is opened. Some hints, such as cb_nodes (number of I/O aggregators), are useful for HDF5 applications and I/O libraries built on top of HDF5. * OESS-168: Remove clang warnings. (#1309) * OESS-168: Remove clang warnings. * OESS-168: Address @lrknox review. * OESS-168: Remove clang warnings. (#1376) * Remove H5_NO_ALIGNMENT_RESTRICTIONS (#1426) * Do not conditionally compile code that uses a pointer dereference and assignment to copy a potentially unaligned variable to aligned automatic storage, or vice versa. Instead, always use naked `memcpy(3)`s. Disassembling the generated code reveals that the `memcpy(3)`s optimize (`-O3`) to a single `mov` instruction for x86_64, which is not strict about alignment. This change reduces the size of code and scripts by 143 lines, eases our way to cross-compilation, and avoids invoking undefined behavior. * Committing clang-format changes * Per discussion, use HD and add comments. Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> * Cleans up some HL library code that inappropriately returns htri_t values cast to herr_t (#1651) * Cleans up some HL library code that inappropriately returns htri_t values cast to herr_t * Committing clang-format changes * Formatted source Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> * Mirror vfd test fixes (#1629) * Use the FAPL that was created earlier in the test (and delete an unused variable). This allows 'make check-vfd' to pass with --enable-mirror-vfd. * Check for testing directory before creating, to avoid warning from bash. Clean out .libs directory before re-using it (after a failed test), to remove any files generated by libtool. * Committing clang-format changes * Increment error count on failed file open and skip tests for VFDs that need modified filenames. * Skip the mirror VFD for 'make check-vfd' - the mirror VFD requires networking configuration parameters and can't be provided for an automated test that is configured with an environment variable. Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> * Removes HDF Group paths, adds shellcheck fixes (#1656) For more information: https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ... https://www.shellcheck.net/wiki/SC2230 -- which is non-standard. Use builti... https://www.shellcheck.net/wiki/SC2006 -- Use $(...) notation instead of le... * HDFFV-11306 Fixed (#1657) * HDFFV-11306, * Fixed it so both h5open_f and h5close_f can be called multiple times. * Fixed an issue with open objects remaining after h5close_f was called. * Added additional tests. * comments clean-up * Develop clang format java (#1653) * added HDFFV-11306 entry (#1662) * Adds the -q flag to all swmr test programs, quieting noisy output (#1665) * Adds paths-ignore to the Github pull request workflow (#1663) * Changes Github action `hdf5 dev CI` to `PR hdf5 dev CI` (#1666) So the PR action name is not the same as the one in main.yml * Replace H5detect's build-time detection of C99 integer properties with a (#1400) * Replace H5detect's build-time detection of C99 integer properties with a table-driven routine, `H5T__init_native_int()`, that is run at library initialization time. * Improve handling of copying of dynamic libraries and clean them up after (#1681) test finishes. * Warnings fixes (#1680) * Clean stack size warnings in sio_engine (#1687) * Fixes stack size warnings in tcoords.c (#1688) * Minor things noticed while bringing VFD SWMR in line with develop (#1691) * Removed dead code, weird formatting, and other badness * Fixed remaining stack size warnings in onion VFD * Committing clang-format changes Co-authored-by: Allen Byrne <50328838+byrnHDF@users.noreply.github.com> Co-authored-by: Wei-keng Liao <wkliao@users.noreply.github.com> Co-authored-by: H. Joe Lee <hyoklee@hdfgroup.org> Co-authored-by: David Young <dyoung@hdfgroup.org> Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Quincey Koziol <koziol@lbl.gov> Co-authored-by: Scot Breitenfeld <brtnfld@hdfgroup.org> Co-authored-by: jhendersonHDF <jhenderson@hdfgroup.org>
Diffstat (limited to 'tools/src/h5perf/sio_engine.c')
-rw-r--r--tools/src/h5perf/sio_engine.c55
1 files changed, 35 insertions, 20 deletions
diff --git a/tools/src/h5perf/sio_engine.c b/tools/src/h5perf/sio_engine.c
index bdd2c08..abf8b9a 100644
--- a/tools/src/h5perf/sio_engine.c
+++ b/tools/src/h5perf/sio_engine.c
@@ -123,7 +123,6 @@ static hid_t h5dxpl = H5I_INVALID_HID; /* Dataset transfer property
* Purpose: SIO Engine where IO are executed.
* Return: results
* Programmer: Christian Chilan, April, 2008
- * Modifications:
*/
void
do_sio(parameters param, results *res)
@@ -134,18 +133,20 @@ do_sio(parameters param, results *res)
iotype iot; /* API type */
char base_name[256]; /* test file base name */
/* return codes */
- herr_t ret_code = 0; /*return code */
+ herr_t ret_code = 0; /* return code */
- char fname[FILENAME_MAX]; /* test file name */
- int i;
- /* HDF5 variables */
- herr_t hrc; /*HDF5 return code */
+ char *fname = NULL;
+ int i;
- /* Sanity check parameters */
+ /* HDF5 variables */
+ herr_t hrc; /* HDF5 return code */
/* IO type */
iot = param.io_type;
+ if (NULL == (fname = HDcalloc(FILENAME_MAX, sizeof(char))))
+ GOTOERROR(FAIL);
+
switch (iot) {
case POSIXIO:
fd.posixfd = -1;
@@ -267,8 +268,8 @@ done:
}
/* release generic resources */
- if (buffer)
- free(buffer);
+ HDfree(buffer);
+ HDfree(fname);
res->ret_code = ret_code;
}
@@ -1125,7 +1126,6 @@ done:
* Purpose: Sets file driver.
* Return: SUCCESS or FAIL
* Programmer: Christian Chilan, April, 2008
- * Modifications:
*/
hid_t
@@ -1164,9 +1164,11 @@ set_vfd(parameters *param)
H5FD_mem_t memb_map[H5FD_MEM_NTYPES];
hid_t memb_fapl[H5FD_MEM_NTYPES];
const char *memb_name[H5FD_MEM_NTYPES];
- char sv[H5FD_MEM_NTYPES][1024];
haddr_t memb_addr[H5FD_MEM_NTYPES];
H5FD_mem_t mt;
+ struct {
+ char arr[H5FD_MEM_NTYPES][1024];
+ } *sv = NULL;
HDmemset(memb_map, 0, sizeof memb_map);
HDmemset(memb_fapl, 0, sizeof memb_fapl);
@@ -1174,16 +1176,22 @@ set_vfd(parameters *param)
HDmemset(memb_addr, 0, sizeof memb_addr);
HDassert(HDstrlen(multi_letters) == H5FD_MEM_NTYPES);
+
+ if (NULL == (sv = HDcalloc(1, sizeof(*sv))))
+ return -1;
for (mt = H5FD_MEM_DEFAULT; mt < H5FD_MEM_NTYPES; mt++) {
memb_fapl[mt] = H5P_DEFAULT;
- HDsprintf(sv[mt], "%%s-%c.h5", multi_letters[mt]);
- memb_name[mt] = sv[mt];
+ HDsprintf(sv->arr[mt], "%%s-%c.h5", multi_letters[mt]);
+ memb_name[mt] = sv->arr[mt];
memb_addr[mt] = (haddr_t)MAX(mt - 1, 0) * (HADDR_MAX / 10);
}
if (H5Pset_fapl_multi(my_fapl, memb_map, memb_fapl, memb_name, memb_addr, FALSE) < 0) {
+ HDfree(sv);
return -1;
}
+
+ HDfree(sv);
}
else if (vfd == family) {
hsize_t fam_size = 1 * 1024 * 1024; /*100 MB*/
@@ -1262,14 +1270,18 @@ done:
* Purpose: Cleanup temporary file unless HDF5_NOCLEANUP is set.
* Return: void
* Programmer: Albert Cheng 2001/12/12
- * Modifications: Support for file drivers. Christian Chilan, April, 2008
*/
static void
do_cleanupfile(iotype iot, char *filename)
{
- char temp[4096 + sizeof("-?.h5")];
- int j;
- hid_t driver;
+ char * temp = NULL;
+ size_t temp_sz;
+ int j;
+ hid_t driver;
+
+ temp_sz = (4096 + sizeof("-?.h5")) * sizeof(char);
+ if (NULL == (temp = HDcalloc(1, temp_sz)))
+ goto done;
if (clean_file_g == -1)
clean_file_g = (HDgetenv(HDF5_NOCLEANUP) == NULL) ? 1 : 0;
@@ -1286,7 +1298,7 @@ do_cleanupfile(iotype iot, char *filename)
if (driver == H5FD_FAMILY) {
for (j = 0; /*void*/; j++) {
- HDsnprintf(temp, sizeof temp, filename, j);
+ HDsnprintf(temp, temp_sz, filename, j);
if (HDaccess(temp, F_OK) < 0)
break;
@@ -1305,10 +1317,10 @@ do_cleanupfile(iotype iot, char *filename)
}
else if (driver == H5FD_MULTI) {
H5FD_mem_t mt;
- assert(HDstrlen(multi_letters) == H5FD_MEM_NTYPES);
+ HDassert(HDstrlen(multi_letters) == H5FD_MEM_NTYPES);
for (mt = H5FD_MEM_DEFAULT; mt < H5FD_MEM_NTYPES; mt++) {
- HDsnprintf(temp, sizeof temp, "%s-%c.h5", filename, multi_letters[mt]);
+ HDsnprintf(temp, temp_sz, "%s-%c.h5", filename, multi_letters[mt]);
HDremove(temp); /*don't care if it fails*/
}
}
@@ -1325,4 +1337,7 @@ do_cleanupfile(iotype iot, char *filename)
break;
}
}
+
+done:
+ HDfree(temp);
}