From 363e3ecef821b4667592d158c2abc1c4846a966c Mon Sep 17 00:00:00 2001 From: Dana Robinson <43805+derobins@users.noreply.github.com> Date: Wed, 20 Jul 2022 05:38:07 -0700 Subject: Removes the ability to build h5perf and h5perf_serial in standalone mode (#1897) This feature has been broken for some time and lacks a clear use case. --- release_docs/RELEASE.txt | 15 + tools/lib/io_timer.h | 24 +- tools/src/h5perf/pio_perf.c | 7 - tools/src/h5perf/pio_perf.h | 5 - tools/src/h5perf/sio_perf.c | 2 - tools/src/h5perf/sio_perf.h | 5 - tools/test/perform/CMakeLists.txt | 106 +----- tools/test/perform/CMakeTests.cmake | 7 - tools/test/perform/build_h5perf_alone.sh | 26 -- tools/test/perform/build_h5perf_serial_alone.sh | 26 -- tools/test/perform/pio_standalone.c | 154 -------- tools/test/perform/pio_standalone.h | 472 ----------------------- tools/test/perform/sio_standalone.c | 154 -------- tools/test/perform/sio_standalone.h | 487 ------------------------ 14 files changed, 36 insertions(+), 1454 deletions(-) delete mode 100644 tools/test/perform/build_h5perf_alone.sh delete mode 100644 tools/test/perform/build_h5perf_serial_alone.sh delete mode 100644 tools/test/perform/pio_standalone.c delete mode 100644 tools/test/perform/pio_standalone.h delete mode 100644 tools/test/perform/sio_standalone.c delete mode 100644 tools/test/perform/sio_standalone.h diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt index 12e8fd3..67d90fe 100644 --- a/release_docs/RELEASE.txt +++ b/release_docs/RELEASE.txt @@ -132,6 +132,21 @@ New Features Tools: ------ + - Building h5perf/h5perf_serial in "standalone mode" has been removed + + Building h5perf separately from the library was added circa 2008 + in HDF5 1.6.8. It's unclear what purpose this serves and the current + implementation is currently broken. The existing files require + H5private.h and the symbols we use to determine how the copied + platform-independence scheme should be used come from H5pubconf.h, + which may not match the compiler being used to build standalone h5perf. + + Due to the maintenance overhead and lack of a clear use case, support + for building h5perf and h5perf_serial separately from the HDF5 library + has been removed. + + (DER - 2022/07/15) + - The perf tool has been removed The small `perf` tool didn't really do anything special and the name diff --git a/tools/lib/io_timer.h b/tools/lib/io_timer.h index 0b0f0bb..315b30e 100644 --- a/tools/lib/io_timer.h +++ b/tools/lib/io_timer.h @@ -14,17 +14,7 @@ #ifndef IO_TIMER #define IO_TIMER -#include "hdf5.h" - -#include - -#ifdef H5_HAVE_SYS_TIME_H -#include -#endif - -#ifdef H5_HAVE_WIN32_API -#include -#endif +#include "H5private.h" /* The different types of timers we can have */ typedef enum timer_type_ { @@ -64,25 +54,17 @@ typedef struct io_time_t { struct timeval sys_timer[NUM_TIMERS]; } io_time_t; -/* External function declarations */ #ifdef __cplusplus extern "C" { -#endif /* __cplusplus */ +#endif -#ifdef STANDALONE -io_time_t *io_time_new(clock_type t); -void io_time_destroy(io_time_t *pt); -io_time_t *io_time_set(io_time_t *pt, timer_type t, int start_stop); -double io_time_get(io_time_t *pt, timer_type t); -#else H5TOOLS_DLL io_time_t *io_time_new(clock_type t); H5TOOLS_DLL void io_time_destroy(io_time_t *pt); H5TOOLS_DLL io_time_t *io_time_set(io_time_t *pt, timer_type t, int start_stop); H5TOOLS_DLL double io_time_get(io_time_t *pt, timer_type t); -#endif #ifdef __cplusplus } -#endif /* __cplusplus */ +#endif #endif /* IO_TIMER */ diff --git a/tools/src/h5perf/pio_perf.c b/tools/src/h5perf/pio_perf.c index 5f09e15..37108d7 100644 --- a/tools/src/h5perf/pio_perf.c +++ b/tools/src/h5perf/pio_perf.c @@ -80,11 +80,6 @@ #define PIO_MPI 0x2 #define PIO_HDF5 0x4 -#ifdef STANDALONE -#define DBL_EPSILON 2.2204460492503131e-16 -#define H5_DBL_ABS_EQUAL(X, Y) (fabs((X) - (Y)) < DBL_EPSILON) -#endif - /* report 0.0 in case t is zero too */ #define MB_PER_SEC(bytes, t) (H5_DBL_ABS_EQUAL((t), 0.0) ? 0.0 : ((((double)bytes) / ONE_MB) / (t))) @@ -220,10 +215,8 @@ main(int argc, char *argv[]) int exit_value = EXIT_SUCCESS; struct options *opts = NULL; -#ifndef STANDALONE /* Initialize h5tools lib */ h5tools_init(); -#endif output = stdout; diff --git a/tools/src/h5perf/pio_perf.h b/tools/src/h5perf/pio_perf.h index 8924c20..89541bf 100644 --- a/tools/src/h5perf/pio_perf.h +++ b/tools/src/h5perf/pio_perf.h @@ -13,15 +13,10 @@ #ifndef PIO_PERF_H #define PIO_PERF_H -#ifndef STANDALONE #include "io_timer.h" #include "H5private.h" #include "h5tools.h" #include "h5tools_utils.h" -#else -#include "io_timer.h" -#include "pio_standalone.h" -#endif #ifdef H5_HAVE_PARALLEL extern MPI_Info h5_io_info_g; /* MPI INFO object for IO */ diff --git a/tools/src/h5perf/sio_perf.c b/tools/src/h5perf/sio_perf.c index 2a0db61..c85ee42 100644 --- a/tools/src/h5perf/sio_perf.c +++ b/tools/src/h5perf/sio_perf.c @@ -190,10 +190,8 @@ main(int argc, char *argv[]) int exit_value = EXIT_SUCCESS; struct options *opts = NULL; -#ifndef STANDALONE /* Initialize h5tools lib */ h5tools_init(); -#endif output = stdout; diff --git a/tools/src/h5perf/sio_perf.h b/tools/src/h5perf/sio_perf.h index d998377..bff737f 100644 --- a/tools/src/h5perf/sio_perf.h +++ b/tools/src/h5perf/sio_perf.h @@ -13,15 +13,10 @@ #ifndef SIO_PERF_H #define SIO_PERF_H -#ifndef STANDALONE #include "io_timer.h" #include "H5private.h" #include "h5tools.h" #include "h5tools_utils.h" -#else -#include "io_timer.h" -#include "sio_standalone.h" -#endif /* setup the dataset no fill option if this is v1.5 or more */ #if H5_VERS_MAJOR > 1 || H5_VERS_MINOR > 4 diff --git a/tools/test/perform/CMakeLists.txt b/tools/test/perform/CMakeLists.txt index 7bf79c5..15d1467 100644 --- a/tools/test/perform/CMakeLists.txt +++ b/tools/test/perform/CMakeLists.txt @@ -1,39 +1,9 @@ cmake_minimum_required (VERSION 3.12) project (HDF5_TOOLS_TEST_PERFORM C) -# -------------------------------------------------------------------- -# Add the executables -# -------------------------------------------------------------------- - -if (HDF5_BUILD_PERFORM_STANDALONE) - #-- Adding test for h5perf_serial_alone - io_timer.c includes - set (h5perf_serial_alone_SOURCES - ${HDF5_TOOLS_DIR}/lib/io_timer.c - ${HDF5_TOOLS_SRC_H5PERF_SOURCE_DIR}/sio_perf.c - ${HDF5_TOOLS_SRC_H5PERF_SOURCE_DIR}/sio_engine.c - ${HDF5_TOOLS_TEST_PERFORM_SOURCE_DIR}/sio_standalone.c - ) - add_executable (h5perf_serial_alone ${h5perf_serial_alone_SOURCES}) - target_include_directories (h5perf_serial_alone PRIVATE "${HDF5_SRC_DIR};${HDF5_SRC_BINARY_DIR};${HDF5_TOOLS_DIR}/lib;${HDF5_TOOLS_SRC_H5PERF_SOURCE_DIR};${HDF5_TOOLS_TEST_PERFORM_SOURCE_DIR};$<$:${MPI_C_INCLUDE_DIRS}>") - if (NOT BUILD_SHARED_LIBS) - TARGET_C_PROPERTIES (h5perf_serial_alone STATIC) - target_link_libraries (h5perf_serial_alone PRIVATE ${HDF5_LIB_TARGET} "$<$:${MPI_C_LIBRARIES}>") - else () - TARGET_C_PROPERTIES (h5perf_serial_alone SHARED) - target_link_libraries (h5perf_serial_alone PRIVATE ${HDF5_LIBSH_TARGET} "$<$:${MPI_C_LIBRARIES}>") - endif () - set_target_properties (h5perf_serial_alone PROPERTIES FOLDER perform) - set_property (TARGET h5perf_serial_alone APPEND PROPERTY COMPILE_DEFINITIONS STANDALONE) - - #----------------------------------------------------------------------------- - # Add Target to clang-format - #----------------------------------------------------------------------------- - if (HDF5_ENABLE_FORMATTERS) - clang_format (HDF5_TOOLS_TEST_PERFORM_h5perf_serial_alone_FORMAT h5perf_serial_alone) - endif () -endif () - -#-- Adding test for chunk +#----------------------------------------------------------------------------- +# chunk +#----------------------------------------------------------------------------- set (chunk_SOURCES ${HDF5_TOOLS_TEST_PERFORM_SOURCE_DIR}/chunk.c ) @@ -48,14 +18,13 @@ else () endif () set_target_properties (chunk PROPERTIES FOLDER perform) -#----------------------------------------------------------------------------- -# Add Target to clang-format -#----------------------------------------------------------------------------- if (HDF5_ENABLE_FORMATTERS) clang_format (HDF5_TOOLS_TEST_PERFORM_chunk_FORMAT chunk) endif () -#-- Adding test for iopipe +#----------------------------------------------------------------------------- +# iopipe +#----------------------------------------------------------------------------- set (iopipe_SOURCES ${HDF5_TOOLS_TEST_PERFORM_SOURCE_DIR}/iopipe.c ) @@ -70,14 +39,13 @@ else () endif () set_target_properties (iopipe PROPERTIES FOLDER perform) -#----------------------------------------------------------------------------- -# Add Target to clang-format -#----------------------------------------------------------------------------- if (HDF5_ENABLE_FORMATTERS) clang_format (HDF5_TOOLS_TEST_PERFORM_iopipe_FORMAT iopipe) endif () -#-- Adding test for chunk_cache +#----------------------------------------------------------------------------- +# chunk_cache +#----------------------------------------------------------------------------- set (chunk_cache_SOURCES ${HDF5_TOOLS_TEST_PERFORM_SOURCE_DIR}/chunk_cache.c ) @@ -92,14 +60,13 @@ else () endif () set_target_properties (chunk_cache PROPERTIES FOLDER perform) -#----------------------------------------------------------------------------- -# Add Target to clang-format -#----------------------------------------------------------------------------- if (HDF5_ENABLE_FORMATTERS) clang_format (HDF5_TOOLS_TEST_PERFORM_chunk_cache_FORMAT chunk_cache) endif () -#-- Adding test for overhead +#----------------------------------------------------------------------------- +# overhead +#----------------------------------------------------------------------------- set (overhead_SOURCES ${HDF5_TOOLS_TEST_PERFORM_SOURCE_DIR}/overhead.c ) @@ -114,14 +81,13 @@ else () endif () set_target_properties (overhead PROPERTIES FOLDER perform) -#----------------------------------------------------------------------------- -# Add Target to clang-format -#----------------------------------------------------------------------------- if (HDF5_ENABLE_FORMATTERS) clang_format (HDF5_TOOLS_TEST_PERFORM_overhead_FORMAT overhead) endif () -#-- Adding test for perf_meta +#----------------------------------------------------------------------------- +# perf_meta +#----------------------------------------------------------------------------- set (perf_meta_SOURCES ${HDF5_TOOLS_TEST_PERFORM_SOURCE_DIR}/perf_meta.c ) @@ -136,14 +102,13 @@ else () endif () set_target_properties (perf_meta PROPERTIES FOLDER perform) -#----------------------------------------------------------------------------- -# Add Target to clang-format -#----------------------------------------------------------------------------- if (HDF5_ENABLE_FORMATTERS) clang_format (HDF5_TOOLS_TEST_PERFORM_perf_meta_FORMAT perf_meta) endif () -#-- Adding test for zip_perf +#----------------------------------------------------------------------------- +# zip_perf +#----------------------------------------------------------------------------- set (zip_perf_SOURCES ${HDF5_TOOLS_TEST_PERFORM_SOURCE_DIR}/zip_perf.c ) @@ -158,45 +123,10 @@ else () endif () set_target_properties (zip_perf PROPERTIES FOLDER perform) -#----------------------------------------------------------------------------- -# Add Target to clang-format -#----------------------------------------------------------------------------- if (HDF5_ENABLE_FORMATTERS) clang_format (HDF5_TOOLS_TEST_PERFORM_zip_perf_FORMAT zip_perf) endif () -if (H5_HAVE_PARALLEL AND HDF5_TEST_PARALLEL) - if (HDF5_BUILD_PERFORM_STANDALONE) - #-- Adding test for h5perf - set (h5perf_alone_SOURCES - ${HDF5_TOOLS_DIR}/lib/io_timer.c - ${HDF5_TOOLS_SRC_H5PERF_SOURCE_DIR}/pio_perf.c - ${HDF5_TOOLS_SRC_H5PERF_SOURCE_DIR}/pio_engine.c - ${HDF5_TOOLS_TEST_PERFORM_SOURCE_DIR}/pio_standalone.c - ) - add_executable (h5perf_alone ${h5perf_alone_SOURCES}) - target_include_directories (h5perf_alone PRIVATE "${HDF5_SRC_DIR};${HDF5_SRC_BINARY_DIR};${HDF5_TOOLS_DIR}/lib;${HDF5_TOOLS_SRC_H5PERF_SOURCE_DIR};${HDF5_TOOLS_TEST_PERFORM_SOURCE_DIR};$<$:${MPI_C_INCLUDE_DIRS}>") - if (NOT BUILD_SHARED_LIBS) - TARGET_C_PROPERTIES (h5perf_alone STATIC) - target_link_libraries (h5perf_alone PRIVATE ${HDF5_LIB_TARGET} ${LINK_LIBS} "$<$:${MPI_C_LIBRARIES}>") - else () - TARGET_C_PROPERTIES (h5perf_alone SHARED) - target_link_libraries (h5perf_alone PRIVATE ${HDF5_LIBSH_TARGET} ${LINK_LIBS} "$<$:${MPI_C_LIBRARIES}>") - endif () - set_target_properties (h5perf_alone PROPERTIES FOLDER perform) - set_property (TARGET h5perf_alone - APPEND PROPERTY COMPILE_DEFINITIONS STANDALONE - ) - - #----------------------------------------------------------------------------- - # Add Target to clang-format - #----------------------------------------------------------------------------- - if (HDF5_ENABLE_FORMATTERS) - clang_format (HDF5_TOOLS_TEST_PERFORM_h5perf_alone_FORMAT h5perf_alone) - endif () - endif () -endif () - if (HDF5_TEST_TOOLS) include (CMakeTests.cmake) endif () diff --git a/tools/test/perform/CMakeTests.cmake b/tools/test/perform/CMakeTests.cmake index 039d56e..c91edca 100644 --- a/tools/test/perform/CMakeTests.cmake +++ b/tools/test/perform/CMakeTests.cmake @@ -72,10 +72,6 @@ if (HDF5_TEST_SERIAL) DEPENDS "PERFORM_h5perform-clearall-objects" ) - if (HDF5_BUILD_PERFORM_STANDALONE) - add_test (NAME PERFORM_h5perf_serial_alone COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $) - endif () - if (HDF5_ENABLE_USING_MEMCHECKER) add_test (NAME PERFORM_chunk COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $) else () @@ -194,7 +190,4 @@ endif () if (H5_HAVE_PARALLEL AND HDF5_TEST_PARALLEL) add_test (NAME MPI_TEST_PERFORM_h5perf COMMAND ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS} ${MPIEXEC_PREFLAGS} $ ${MPIEXEC_POSTFLAGS}) - if (HDF5_BUILD_PERFORM_STANDALONE) - add_test (NAME MPI_TEST_PERFORM_h5perf_alone COMMAND ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS} ${MPIEXEC_PREFLAGS} $ ${MPIEXEC_POSTFLAGS}) - endif () endif () diff --git a/tools/test/perform/build_h5perf_alone.sh b/tools/test/perform/build_h5perf_alone.sh deleted file mode 100644 index 95a437b..0000000 --- a/tools/test/perform/build_h5perf_alone.sh +++ /dev/null @@ -1,26 +0,0 @@ -#! /bin/sh -x -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the COPYING file, which can be found at the root of the source code -# distribution tree, or in https://www.hdfgroup.org/licenses. -# If you do not have access to either file, you may request a copy from -# help@hdfgroup.org. -# -# Name: build_h5perf_alone.sh -# -# Puporse: Build the h5perf tool by standalone mode. -# -# Created: Albert Cheng, 2005/09/18 -# -# Modification: -# - -# Default to use h5pcc to build h5perf unless $H5CC is defined. -# -h5pcc=${H5CC:-h5pcc} -$h5pcc -DSTANDALONE pio_perf.c pio_engine.c pio_timer.c -o h5perf diff --git a/tools/test/perform/build_h5perf_serial_alone.sh b/tools/test/perform/build_h5perf_serial_alone.sh deleted file mode 100644 index d2a0660..0000000 --- a/tools/test/perform/build_h5perf_serial_alone.sh +++ /dev/null @@ -1,26 +0,0 @@ -#! /bin/sh -x -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the COPYING file, which can be found at the root of the source code -# distribution tree, or in https://www.hdfgroup.org/licenses. -# If you do not have access to either file, you may request a copy from -# help@hdfgroup.org. -# -# Name: build_h5perf_serial_alone.sh -# -# Puporse: Build the h5perf_serial tool by standalone mode. -# -# Created: Christian Chilan, 2008/09/02 -# -# Modification: -# - -# Default to use h5cc to build h5perf_serial unless $H5CC is defined. -# -h5cc=${H5CC:-h5cc} -$h5cc -DSTANDALONE sio_perf.c sio_engine.c sio_timer.c -o h5perf_serial diff --git a/tools/test/perform/pio_standalone.c b/tools/test/perform/pio_standalone.c deleted file mode 100644 index a074d2c..0000000 --- a/tools/test/perform/pio_standalone.c +++ /dev/null @@ -1,154 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the COPYING file, which can be found at the root of the source code * - * distribution tree, or in https://www.hdfgroup.org/licenses. * - * If you do not have access to either file, you may request a copy from * - * help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* This file contains the definition of functions required to build h5perf in - * STANDALONE mode. - * Created: Christian Chilan, 2005/5/18. - */ - -#include "pio_perf.h" - -/** From h5tools_utils.c **/ - -/* global variables */ -int nCols = 80; - -int -get_option(int argc, const char **argv, const char *opts, const struct h5_long_options *l_opts) -{ - static int sp = 1; /* character index in current token */ - int opt_opt = '?'; /* option character passed back to user */ - - if (sp == 1) { - /* check for more flag-like tokens */ - if (H5_optind >= argc || argv[H5_optind][0] != '-' || argv[H5_optind][1] == '\0') { - return EOF; - } - else if (HDstrcmp(argv[H5_optind], "--") == 0) { - H5_optind++; - return EOF; - } - } - - if (sp == 1 && argv[H5_optind][0] == '-' && argv[H5_optind][1] == '-') { - /* long command line option */ - const char *arg = &argv[H5_optind][2]; - int i; - - for (i = 0; l_opts && l_opts[i].name; i++) { - size_t len = HDstrlen(l_opts[i].name); - - if (HDstrncmp(arg, l_opts[i].name, len) == 0) { - /* we've found a matching long command line flag */ - opt_opt = l_opts[i].shortval; - - if (l_opts[i].has_arg != no_arg) { - if (arg[len] == '=') { - H5_optarg = &arg[len + 1]; - } - else if (H5_optind < (argc - 1) && argv[H5_optind + 1][0] != '-') { - H5_optarg = argv[++H5_optind]; - } - else if (l_opts[i].has_arg == require_arg) { - if (H5_opterr) - HDfprintf(stderr, "%s: option required for \"--%s\" flag\n", argv[0], arg); - - opt_opt = '?'; - } - } - else { - if (arg[len] == '=') { - if (H5_opterr) - HDfprintf(stderr, "%s: no option required for \"%s\" flag\n", argv[0], arg); - - opt_opt = '?'; - } - - H5_optarg = NULL; - } - - break; - } - } - - if (l_opts[i].name == NULL) { - /* exhausted all of the l_opts we have and still didn't match */ - if (H5_opterr) - HDfprintf(stderr, "%s: unknown option \"%s\"\n", argv[0], arg); - - opt_opt = '?'; - } - - H5_optind++; - sp = 1; - } - else { - char *cp; /* pointer into current token */ - - /* short command line option */ - opt_opt = argv[H5_optind][sp]; - - if (opt_opt == ':' || (cp = strchr(opts, opt_opt)) == 0) { - - if (H5_opterr) - HDfprintf(stderr, "%s: unknown option \"%c\"\n", argv[0], opt_opt); - - /* if no chars left in this token, move to next token */ - if (argv[H5_optind][++sp] == '\0') { - H5_optind++; - sp = 1; - } - - return '?'; - } - - if (*++cp == ':') { - /* if a value is expected, get it */ - if (argv[H5_optind][sp + 1] != '\0') { - /* flag value is rest of current token */ - H5_optarg = &argv[H5_optind++][sp + 1]; - } - else if (++H5_optind >= argc) { - if (H5_opterr) - HDfprintf(stderr, "%s: value expected for option \"%c\"\n", argv[0], opt_opt); - - opt_opt = '?'; - } - else { - /* flag value is next token */ - H5_optarg = argv[H5_optind++]; - } - - sp = 1; - } - else { - /* set up to look at next char in token, next time */ - if (argv[H5_optind][++sp] == '\0') { - /* no more in current token, so setup next token */ - H5_optind++; - sp = 1; - } - - H5_optarg = NULL; - } - } - - /* return the current flag character found */ - return opt_opt; -} - -void -print_version(const char *progname) -{ - printf("%s: Version %u.%u.%u%s%s\n", progname, H5_VERS_MAJOR, H5_VERS_MINOR, H5_VERS_RELEASE, - H5_VERS_SUBRELEASE[0] ? "-" : "", H5_VERS_SUBRELEASE); -} diff --git a/tools/test/perform/pio_standalone.h b/tools/test/perform/pio_standalone.h deleted file mode 100644 index e64a765..0000000 --- a/tools/test/perform/pio_standalone.h +++ /dev/null @@ -1,472 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the COPYING file, which can be found at the root of the source code * - * distribution tree, or in https://www.hdfgroup.org/licenses. * - * If you do not have access to either file, you may request a copy from * - * help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#ifndef PIO_STANDALONE_H -#define PIO_STANDALONE_H - -/* Header file for building h5perf by standalone mode. - * Created: Christian Chilan, 2005/5/18. - */ - -/** From H5private.h **/ - -#include "H5public.h" /* Include Public Definitions */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Redefine all the POSIX functions. We should never see a POSIX - * function (or any other non-HDF5 function) in the source! - */ -#define HDabort() abort() -#define HDabs(X) abs(X) -#ifdef H5_HAVE_WIN32_API -#define HDaccess(F, M) _access(F, M) -#define R_OK 4 /* Test for read permission. */ -#define W_OK 2 /* Test for write permission. */ -#define X_OK 1 /* Test for execute permission. */ -#define F_OK 0 /* Test for existence. */ -#else /* H5_HAVE_WIN32_API */ -#define HDaccess(F, M) access(F, M) -#ifndef F_OK -#define F_OK 00 -#define W_OK 02 -#define R_OK 04 -#endif -#endif /* H5_HAVE_WIN32_API */ -#define HDacos(X) acos(X) -#ifdef H5_HAVE_ALARM -#define HDalarm(N) alarm(N) -#else /* H5_HAVE_ALARM */ -#define HDalarm(N) (0) -#endif /* H5_HAVE_ALARM */ -#define HDasctime(T) asctime(T) -#define HDasin(X) asin(X) -#define HDasprintf asprintf /*varargs*/ -#define HDassert(X) assert(X) -#define HDatan(X) atan(X) -#define HDatan2(X, Y) atan2(X, Y) -#define HDatexit(F) atexit(F) -#define HDatof(S) atof(S) -#define HDatoi(S) atoi(S) -#define HDatol(S) atol(S) -#define HDbsearch(K, B, N, Z, F) bsearch(K, B, N, Z, F) -#define HDcalloc(N, Z) calloc(N, Z) -#define HDceil(X) ceil(X) -#define HDcfgetispeed(T) cfgetispeed(T) -#define HDcfgetospeed(T) cfgetospeed(T) -#define HDcfsetispeed(T, S) cfsetispeed(T, S) -#define HDcfsetospeed(T, S) cfsetospeed(T, S) -#define HDchdir(S) chdir(S) -#define HDchmod(S, M) chmod(S, M) -#define HDchown(S, O, G) chown(S, O, G) -#define HDclearerr(F) clearerr(F) -#define HDclock() clock() -#define HDclose(F) close(F) -#define HDclosedir(D) closedir(D) -#define HDcos(X) cos(X) -#define HDcosh(X) cosh(X) -#define HDcreat(S, M) creat(S, M) -#define HDctermid(S) ctermid(S) -#define HDctime(T) ctime(T) -#define HDcuserid(S) cuserid(S) -#define HDdifftime(X, Y) difftime(X, Y) -#define HDdiv(X, Y) div(X, Y) -#define HDdup(F) dup(F) -#define HDdup2(F, I) dup2(F, I) -#define HDexecv(S, AV) execv(S, AV) -#define HDexecve(S, AV, E) execve(S, AV, E) -#define HDexecvp(S, AV) execvp(S, AV) -#define HDexit(N) exit(N) -#define HD_exit(N) _exit(N) -#define HDexp(X) exp(X) -#define HDfabs(X) fabs(X) -#define HDfabsf(X) fabsf(X) -#define HDfabsl(X) fabsl(X) -#define HDfclose(F) fclose(F) -/* fcntl() variable arguments */ -#define HDfdopen(N, S) fdopen(N, S) -#define HDfeof(F) feof(F) -#define HDferror(F) ferror(F) -#define HDfflush(F) fflush(F) -#define HDfgetc(F) fgetc(F) -#define HDfgetpos(F, P) fgetpos(F, P) -#define HDfgets(S, N, F) fgets(S, N, F) -#ifdef H5_HAVE_WIN32_API -#define HDfileno(F) _fileno(F) -#else /* H5_HAVE_WIN32_API */ -#define HDfileno(F) fileno(F) -#endif /* H5_HAVE_WIN32_API */ -#define HDfloor(X) floor(X) -#define HDfmod(X, Y) fmod(X, Y) -#define HDfopen(S, M) fopen(S, M) -#define HDfork() fork() -#define HDfpathconf(F, N) fpathconf(F, N) -#define HDfprintf fprintf -#define HDfputc(C, F) fputc(C, F) -#define HDfputs(S, F) fputs(S, F) -#define HDfread(M, Z, N, F) fread(M, Z, N, F) -#define HDfree(M) free(M) -#define HDfreopen(S, M, F) freopen(S, M, F) -#define HDfrexp(X, N) frexp(X, N) -#define HDfrexpf(X, N) frexpf(X, N) -#define HDfrexpl(X, N) frexpl(X, N) -/* fscanf() variable arguments */ -#ifdef H5_HAVE_FSEEKO -#define HDfseek(F, O, W) fseeko(F, O, W) -#else -#define HDfseek(F, O, W) fseek(F, O, W) -#endif -#define HDfsetpos(F, P) fsetpos(F, P) -/* definitions related to the file stat utilities. - * Windows have its own function names. - * For Unix, if off_t is not 64bit big, try use the pseudo-standard - * xxx64 versions if available. - */ -#ifdef H5_HAVE_WIN32_API -#define HDfstat(F, B) _fstati64(F, B) -#define HDlstat(S, B) _lstati64(S, B) -#define HDstat(S, B) _stati64(S, B) -typedef struct _stati64 h5_stat_t; -typedef __int64 h5_stat_size_t; -#define HDoff_t __int64 -#elif H5_SIZEOF_OFF_T != 8 && H5_SIZEOF_OFF64_T == 8 && defined(H5_HAVE_STAT64) -#define HDfstat(F, B) fstat64(F, B) -#define HDlstat(S, B) lstat64(S, B) -#define HDstat(S, B) stat64(S, B) -typedef struct stat64 h5_stat_t; -typedef off64_t h5_stat_size_t; -#define HDoff_t off64_t -#else -#define HDfstat(F, B) fstat(F, B) -#define HDlstat(S, B) lstat(S, B) -#define HDstat(S, B) stat(S, B) -typedef struct stat h5_stat_t; -typedef off_t h5_stat_size_t; -#define HDoff_t off_t -#endif - -#define HDftell(F) ftell(F) -#define HDftruncate(F, L) ftruncate(F, L) -#define HDfwrite(M, Z, N, F) fwrite(M, Z, N, F) -#define HDgetc(F) getc(F) -#define HDgetchar() getchar() -#define HDgetcwd(S, Z) getcwd(S, Z) -#define HDgetegid() getegid() -#define HDgetenv(S) getenv(S) -#define HDgeteuid() geteuid() -#define HDgetgid() getgid() -#define HDgetgrgid(G) getgrgid(G) -#define HDgetgrnam(S) getgrnam(S) -#define HDgetgroups(Z, G) getgroups(Z, G) -#ifdef H5_HAVE_WIN32_API -#define HDgetlogin() Wgetlogin() -#else /* H5_HAVE_WIN32_API */ -#define HDgetlogin() getlogin() -#endif /* H5_HAVE_WIN32_API */ -#define HDgetpgrp() getpgrp() -#define HDgetpid() getpid() -#define HDgetppid() getppid() -#define HDgetpwnam(S) getpwnam(S) -#define HDgetpwuid(U) getpwuid(U) -#define HDgetrusage(X, S) getrusage(X, S) -/* Don't define a macro for gets() - it was removed in C11 */ -#ifdef H5_HAVE_WIN32_API -H5_DLL int Wgettimeofday(struct timeval *tv, struct timezone *tz); -#define HDgettimeofday(V, Z) Wgettimeofday(V, Z) -#else /* H5_HAVE_WIN32_API */ -#define HDgettimeofday(S, P) gettimeofday(S, P) -#endif /* H5_HAVE_WIN32_API */ -#define HDgetuid() getuid() -#define HDgmtime(T) gmtime(T) -#define HDisalnum(C) isalnum((int)(C)) /*cast for solaris warning*/ -#define HDisalpha(C) isalpha((int)(C)) /*cast for solaris warning*/ -#define HDisatty(F) isatty(F) -#define HDiscntrl(C) iscntrl((int)(C)) /*cast for solaris warning*/ -#define HDisdigit(C) isdigit((int)(C)) /*cast for solaris warning*/ -#define HDisgraph(C) isgraph((int)(C)) /*cast for solaris warning*/ -#define HDislower(C) islower((int)(C)) /*cast for solaris warning*/ -#define HDisprint(C) isprint((int)(C)) /*cast for solaris warning*/ -#define HDispunct(C) ispunct((int)(C)) /*cast for solaris warning*/ -#define HDisspace(C) isspace((int)(C)) /*cast for solaris warning*/ -#define HDisupper(C) isupper((int)(C)) /*cast for solaris warning*/ -#define HDisxdigit(C) isxdigit((int)(C)) /*cast for solaris warning*/ -#define HDkill(P, S) kill(P, S) -#define HDlabs(X) labs(X) -#define HDldexp(X, N) ldexp(X, N) -#define HDldiv(X, Y) ldiv(X, Y) -#define HDlink(OLD, NEW) link(OLD, NEW) -#define HDlocaleconv() localeconv() -#define HDlocaltime(T) localtime(T) -#define HDlog(X) log(X) -#define HDlog10(X) log10(X) -#define HDlongjmp(J, N) longjmp(J, N) -#ifdef H5_HAVE_WIN32_API -#define HDlseek(F, O, W) _lseeki64(F, O, W) -#else -#ifdef H5_HAVE_LSEEK64 -#define HDlseek(F, O, W) lseek64(F, O, W) -#else -#define HDlseek(F, O, W) lseek(F, O, W) -#endif -#endif -#define HDmalloc(Z) malloc(Z) -#define HDposix_memalign(P, A, Z) posix_memalign(P, A, Z) -#define HDmblen(S, N) mblen(S, N) -#define HDmbstowcs(P, S, Z) mbstowcs(P, S, Z) -#define HDmbtowc(P, S, Z) mbtowc(P, S, Z) -#define HDmemchr(S, C, Z) memchr(S, C, Z) -#define HDmemcmp(X, Y, Z) memcmp(X, Y, Z) -/* - * The (char*) casts are required for the DEC when optimizations are turned - * on and the source and/or destination are not aligned. - */ -#define HDmemcpy(X, Y, Z) memcpy((char *)(X), (const char *)(Y), Z) -#define HDmemmove(X, Y, Z) memmove((char *)(X), (const char *)(Y), Z) -/* - * The (void*) cast just avoids a compiler warning in H5_HAVE_VISUAL_STUDIO - */ -#ifdef H5_HAVE_VISUAL_STUDIO -#define HDmemset(X, C, Z) memset((void *)(X), C, Z) -#else /* H5_HAVE_VISUAL_STUDIO */ -#define HDmemset(X, C, Z) memset(X, C, Z) -#endif /* H5_HAVE_VISUAL_STUDIO */ -#ifdef H5_HAVE_WIN32_API -#define HDmkdir(S, M) _mkdir(S) -#else /* H5_HAVE_WIN32_API */ -#define HDmkdir(S, M) mkdir(S, M) -#endif /* H5_HAVE_WIN32_API */ -#define HDmkfifo(S, M) mkfifo(S, M) -#define HDmktime(T) mktime(T) -#define HDmodf(X, Y) modf(X, Y) -#ifdef _O_BINARY -#define HDopen(S, F, M) open(S, F | _O_BINARY, M) -#else -#define HDopen(S, F, M) open(S, F, M) -#endif -#define HDopendir(S) opendir(S) -#define HDpathconf(S, N) pathconf(S, N) -#define HDpause() pause() -#define HDperror(S) perror(S) -#define HDpipe(F) pipe(F) -#define HDpow(X, Y) pow(X, Y) -/* printf() variable arguments */ -#define HDprintf(...) HDfprintf(stdout, __VA_ARGS__) -#define HDputc(C, F) putc(C, F) -#define HDputchar(C) putchar(C) -#define HDputs(S) puts(S) -#define HDqsort(M, N, Z, F) qsort(M, N, Z, F) -#define HDraise(N) raise(N) - -#ifdef H5_HAVE_RAND_R -#define HDrandom() HDrand() -H5_DLL int HDrand(void); -#elif H5_HAVE_RANDOM -#define HDrand() random() -#define HDrandom() random() -#else -#define HDrand() rand() -#define HDrandom() rand() -#endif - -#define HDread(F, M, Z) read(F, M, Z) -#define HDreaddir(D) readdir(D) -#define HDrealloc(M, Z) realloc(M, Z) -#define HDremove(S) remove(S) -#define HDrename(OLD, NEW) rename(OLD, NEW) -#define HDrewind(F) rewind(F) -#define HDrewinddir(D) rewinddir(D) -#define HDrmdir(S) rmdir(S) -/* scanf() variable arguments */ -#define HDsetbuf(F, S) setbuf(F, S) -#define HDsetgid(G) setgid(G) -#define HDsetjmp(J) setjmp(J) -#define HDsetlocale(N, S) setlocale(N, S) -#define HDsetpgid(P, PG) setpgid(P, PG) -#define HDsetsid() setsid() -#define HDsetuid(U) setuid(U) -/* Windows does not permit setting the buffer size to values - less than 2. */ -#ifndef H5_HAVE_WIN32_API -#define HDsetvbuf(F, S, M, Z) setvbuf(F, S, M, Z) -#else -#define HDsetvbuf(F, S, M, Z) setvbuf(F, S, M, (Z > 1 ? Z : 2)) -#endif -#define HDsigaddset(S, N) sigaddset(S, N) -#define HDsigdelset(S, N) sigdelset(S, N) -#define HDsigemptyset(S) sigemptyset(S) -#define HDsigfillset(S) sigfillset(S) -#define HDsigismember(S, N) sigismember(S, N) -#define HDsiglongjmp(J, N) siglongjmp(J, N) -#define HDsignal(N, F) signal(N, F) -#define HDsigpending(S) sigpending(S) -#define HDsigprocmask(H, S, O) sigprocmask(H, S, O) -#define HDsigsetjmp(J, N) sigsetjmp(J, N) -#define HDsigsuspend(S) sigsuspend(S) -#define HDsin(X) sin(X) -#define HDsinh(X) sinh(X) -#define HDsleep(N) sleep(N) -#define HDsnprintf snprintf /*varargs*/ -#define HDsprintf sprintf /*varargs*/ -#define HDsqrt(X) sqrt(X) -#ifdef H5_HAVE_RAND_R -H5_DLL void HDsrand(unsigned int seed); -#define HDsrandom(S) HDsrand(S) -#elif H5_HAVE_RANDOM -#define HDsrand(S) srandom(S) -#define HDsrandom(S) srandom(S) -#else -#define HDsrand(S) srand(S) -#define HDsrandom(S) srand(S) -#endif - -#ifdef H5_HAVE_WIN32_API -#define HDstrcasecmp(A, B) _stricmp(A, B) -#else -#define HDstrcasecmp(X, Y) strcasecmp(X, Y) -#endif -#define HDstrcat(X, Y) strcat(X, Y) -#define HDstrchr(S, C) strchr(S, C) -#define HDstrcmp(X, Y) strcmp(X, Y) -#define HDstrcoll(X, Y) strcoll(X, Y) -#define HDstrcpy(X, Y) strcpy(X, Y) -#define HDstrcspn(X, Y) strcspn(X, Y) -#define HDstrerror(N) strerror(N) -#define HDstrftime(S, Z, F, T) strftime(S, Z, F, T) -#define HDstrlen(S) strlen(S) -#define HDstrncat(X, Y, Z) strncat(X, Y, Z) -#define HDstrncmp(X, Y, Z) strncmp(X, Y, Z) -#define HDstrncpy(X, Y, Z) strncpy(X, Y, Z) -#define HDstrpbrk(X, Y) strpbrk(X, Y) -#define HDstrrchr(S, C) strrchr(S, C) -#define HDstrspn(X, Y) strspn(X, Y) -#define HDstrstr(X, Y) strstr(X, Y) -#define HDstrtod(S, R) strtod(S, R) -#define HDstrtok(X, Y) strtok(X, Y) -#define HDstrtol(S, R, N) strtol(S, R, N) -H5_DLL int64_t HDstrtoll(const char *s, const char **rest, int base); -#define HDstrtoul(S, R, N) strtoul(S, R, N) -#ifdef H5_HAVE_WIN32_API -#define HDstrtoull(S, R, N) _strtoui64(S, R, N) -#else -#define HDstrtoull(S, R, N) strtoull(S, R, N) -#endif -#define HDstrxfrm(X, Y, Z) strxfrm(X, Y, Z) -#define HDsysconf(N) sysconf(N) -#define HDsystem(S) system(S) -#define HDtan(X) tan(X) -#define HDtanh(X) tanh(X) -#define HDtcdrain(F) tcdrain(F) -#define HDtcflow(F, A) tcflow(F, A) -#define HDtcflush(F, N) tcflush(F, N) -#define HDtcgetattr(F, T) tcgetattr(F, T) -#define HDtcgetpgrp(F) tcgetpgrp(F) -#define HDtcsendbreak(F, N) tcsendbreak(F, N) -#define HDtcsetattr(F, O, T) tcsetattr(F, O, T) -#define HDtcsetpgrp(F, N) tcsetpgrp(F, N) -#define HDtime(T) time(T) -#define HDtimes(T) times(T) -#define HDtmpfile() tmpfile() -#define HDtmpnam(S) tmpnam(S) -#define HDtolower(C) tolower(C) -#define HDtoupper(C) toupper(C) -#define HDttyname(F) ttyname(F) -#define HDtzset() tzset() -#define HDumask(N) umask(N) -#define HDuname(S) uname(S) -#define HDungetc(C, F) ungetc(C, F) -#ifdef H5_HAVE_WIN32_API -#define HDunlink(S) _unlink(S) -#else -#define HDunlink(S) unlink(S) -#endif -#define HDutime(S, T) utime(S, T) -#define HDva_arg(A, T) va_arg(A, T) -#define HDva_end(A) va_end(A) -#define HDva_start(A, P) va_start(A, P) -#define HDvasprintf(RET, FMT, A) vasprintf(RET, FMT, A) -#define HDvfprintf(F, FMT, A) vfprintf(F, FMT, A) -#define HDvprintf(FMT, A) vprintf(FMT, A) -#define HDvsprintf(S, FMT, A) vsprintf(S, FMT, A) -#define HDvsnprintf(S, N, FMT, A) vsnprintf(S, N, FMT, A) -#define HDwait(W) wait(W) -#define HDwaitpid(P, W, O) waitpid(P, W, O) -#define HDwcstombs(S, P, Z) wcstombs(S, P, Z) -#define HDwctomb(S, C) wctomb(S, C) -#define HDwrite(F, M, Z) write(F, M, Z) - -/* - * And now for a couple non-Posix functions... Watch out for systems that - * define these in terms of macros. - */ -#ifdef H5_HAVE_WIN32_API -#define HDstrdup(S) _strdup(S) -#else /* H5_HAVE_WIN32_API */ - -#if !defined strdup && !defined H5_HAVE_STRDUP -extern char * strdup(const char *s); -#endif - -#define HDstrdup(S) strdup(S) - -#endif /* H5_HAVE_WIN32_API */ - -/* - * HDF Boolean type. - */ -#ifndef FALSE -#define FALSE false -#endif -#ifndef TRUE -#define TRUE true -#endif - -/** From h5tools_utils.h **/ - -H5_DLLVAR int H5_opterr; /* getoption prints errors if this is on */ -H5_DLLVAR int H5_optind; /* token pointer */ -H5_DLLVAR const char *H5_optarg; /* flag argument (or value) */ - -enum h5_arg_level { - no_arg = 0, /* doesn't take an argument */ - require_arg, /* requires an argument */ - optional_arg /* argument is optional */ -}; - -struct h5_long_options { - const char * name; /* Name of the long option */ - enum h5_arg_level has_arg; /* Whether we should look for an arg */ - char shortval; /* The shortname equivalent of long arg - * this gets returned from get_option - */ -}; - -extern int H5_get_option(int argc, const char *const *argv, const char *opt, - const struct h5_long_options *l_opt); - -extern int nCols; /*max number of columns for outputting */ - -/* Definitions of useful routines */ -extern void print_version(const char *progname); - -#endif diff --git a/tools/test/perform/sio_standalone.c b/tools/test/perform/sio_standalone.c deleted file mode 100644 index 353dad3..0000000 --- a/tools/test/perform/sio_standalone.c +++ /dev/null @@ -1,154 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the COPYING file, which can be found at the root of the source code * - * distribution tree, or in https://www.hdfgroup.org/licenses. * - * If you do not have access to either file, you may request a copy from * - * help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* This file contains the definition of functions required to build h5perf in - * STANDALONE mode. - * Created: Christian Chilan, 2005/5/18. - */ - -#include "sio_perf.h" - -/** From h5tools_utils.c **/ - -/* global variables */ -int nCols = 80; - -int -get_option(int argc, const char **argv, const char *opts, const struct h5_long_options *l_opts) -{ - static int sp = 1; /* character index in current token */ - int opt_opt = '?'; /* option character passed back to user */ - - if (sp == 1) { - /* check for more flag-like tokens */ - if (H5_optind >= argc || argv[H5_optind][0] != '-' || argv[H5_optind][1] == '\0') { - return EOF; - } - else if (HDstrcmp(argv[H5_optind], "--") == 0) { - H5_optind++; - return EOF; - } - } - - if (sp == 1 && argv[H5_optind][0] == '-' && argv[H5_optind][1] == '-') { - /* long command line option */ - const char *arg = &argv[H5_optind][2]; - int i; - - for (i = 0; l_opts && l_opts[i].name; i++) { - size_t len = HDstrlen(l_opts[i].name); - - if (HDstrncmp(arg, l_opts[i].name, len) == 0) { - /* we've found a matching long command line flag */ - opt_opt = l_opts[i].shortval; - - if (l_opts[i].has_arg != no_arg) { - if (arg[len] == '=') { - H5_optarg = &arg[len + 1]; - } - else if (H5_optind < (argc - 1) && argv[H5_optind + 1][0] != '-') { - H5_optarg = argv[++H5_optind]; - } - else if (l_opts[i].has_arg == require_arg) { - if (H5_opterr) - HDfprintf(stderr, "%s: option required for \"--%s\" flag\n", argv[0], arg); - - opt_opt = '?'; - } - } - else { - if (arg[len] == '=') { - if (H5_opterr) - HDfprintf(stderr, "%s: no option required for \"%s\" flag\n", argv[0], arg); - - opt_opt = '?'; - } - - H5_optarg = NULL; - } - - break; - } - } - - if (l_opts[i].name == NULL) { - /* exhausted all of the l_opts we have and still didn't match */ - if (H5_opterr) - HDfprintf(stderr, "%s: unknown option \"%s\"\n", argv[0], arg); - - opt_opt = '?'; - } - - H5_optind++; - sp = 1; - } - else { - char *cp; /* pointer into current token */ - - /* short command line option */ - opt_opt = argv[H5_optind][sp]; - - if (opt_opt == ':' || (cp = strchr(opts, opt_opt)) == 0) { - - if (H5_opterr) - HDfprintf(stderr, "%s: unknown option \"%c\"\n", argv[0], opt_opt); - - /* if no chars left in this token, move to next token */ - if (argv[H5_optind][++sp] == '\0') { - H5_optind++; - sp = 1; - } - - return '?'; - } - - if (*++cp == ':') { - /* if a value is expected, get it */ - if (argv[H5_optind][sp + 1] != '\0') { - /* flag value is rest of current token */ - H5_optarg = &argv[H5_optind++][sp + 1]; - } - else if (++H5_optind >= argc) { - if (H5_opterr) - HDfprintf(stderr, "%s: value expected for option \"%c\"\n", argv[0], opt_opt); - - opt_opt = '?'; - } - else { - /* flag value is next token */ - H5_optarg = argv[H5_optind++]; - } - - sp = 1; - } - else { - /* set up to look at next char in token, next time */ - if (argv[H5_optind][++sp] == '\0') { - /* no more in current token, so setup next token */ - H5_optind++; - sp = 1; - } - - H5_optarg = NULL; - } - } - - /* return the current flag character found */ - return opt_opt; -} - -void -print_version(const char *progname) -{ - printf("%s: Version %u.%u.%u%s%s\n", progname, H5_VERS_MAJOR, H5_VERS_MINOR, H5_VERS_RELEASE, - H5_VERS_SUBRELEASE[0] ? "-" : "", H5_VERS_SUBRELEASE); -} diff --git a/tools/test/perform/sio_standalone.h b/tools/test/perform/sio_standalone.h deleted file mode 100644 index 57180e5..0000000 --- a/tools/test/perform/sio_standalone.h +++ /dev/null @@ -1,487 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the COPYING file, which can be found at the root of the source code * - * distribution tree, or in https://www.hdfgroup.org/licenses. * - * If you do not have access to either file, you may request a copy from * - * help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#ifndef SIO_STANDALONE_H -#define SIO_STANDALONE_H - -/* Header file for building h5perf by standalone mode. - * Created: Christian Chilan, 2005/5/18. - */ - -/** From H5private.h **/ - -#include "H5public.h" /* Include Public Definitions */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* maximum of two, three, or four values */ -#undef MAX -#define MAX(a, b) (((a) > (b)) ? (a) : (b)) -#define MAX2(a, b) MAX(a, b) -#define MAX3(a, b, c) MAX(a, MAX(b, c)) -#define MAX4(a, b, c, d) MAX(MAX(a, b), MAX(c, d)) - -#define H5_FLT_ABS_EQUAL(X, Y) (HDfabsf((X) - (Y)) < FLT_EPSILON) -#define H5_DBL_ABS_EQUAL(X, Y) (HDfabs((X) - (Y)) < DBL_EPSILON) -#define H5_LDBL_ABS_EQUAL(X, Y) (HDfabsl((X) - (Y)) < LDBL_EPSILON) - -#define H5_FLT_REL_EQUAL(X, Y, M) (HDfabsf(((Y) - (X)) / (X)) < (M)) -#define H5_DBL_REL_EQUAL(X, Y, M) (HDfabs(((Y) - (X)) / (X)) < (M)) -#define H5_LDBL_REL_EQUAL(X, Y, M) (HDfabsl(((Y) - (X)) / (X)) < (M)) - -/* - * Redefine all the POSIX functions. We should never see a POSIX - * function (or any other non-HDF5 function) in the source! - */ -#define HDabort() abort() -#define HDabs(X) abs(X) -#ifdef H5_HAVE_WIN32_API -#define HDaccess(F, M) _access(F, M) -#define R_OK 4 /* Test for read permission. */ -#define W_OK 2 /* Test for write permission. */ -#define X_OK 1 /* Test for execute permission. */ -#define F_OK 0 /* Test for existence. */ -#else /* H5_HAVE_WIN32_API */ -#define HDaccess(F, M) access(F, M) -#ifndef F_OK -#define F_OK 00 -#define W_OK 02 -#define R_OK 04 -#endif -#endif /* H5_HAVE_WIN32_API */ -#define HDacos(X) acos(X) -#ifdef H5_HAVE_ALARM -#define HDalarm(N) alarm(N) -#else /* H5_HAVE_ALARM */ -#define HDalarm(N) (0) -#endif /* H5_HAVE_ALARM */ -#define HDasctime(T) asctime(T) -#define HDasin(X) asin(X) -#define HDasprintf asprintf /*varargs*/ -#define HDassert(X) assert(X) -#define HDatan(X) atan(X) -#define HDatan2(X, Y) atan2(X, Y) -#define HDatexit(F) atexit(F) -#define HDatof(S) atof(S) -#define HDatoi(S) atoi(S) -#define HDatol(S) atol(S) -#define HDbsearch(K, B, N, Z, F) bsearch(K, B, N, Z, F) -#define HDcalloc(N, Z) calloc(N, Z) -#define HDceil(X) ceil(X) -#define HDcfgetispeed(T) cfgetispeed(T) -#define HDcfgetospeed(T) cfgetospeed(T) -#define HDcfsetispeed(T, S) cfsetispeed(T, S) -#define HDcfsetospeed(T, S) cfsetospeed(T, S) -#define HDchdir(S) chdir(S) -#define HDchmod(S, M) chmod(S, M) -#define HDchown(S, O, G) chown(S, O, G) -#define HDclearerr(F) clearerr(F) -#define HDclock() clock() -#define HDclose(F) close(F) -#define HDclosedir(D) closedir(D) -#define HDcos(X) cos(X) -#define HDcosh(X) cosh(X) -#define HDcreat(S, M) creat(S, M) -#define HDctermid(S) ctermid(S) -#define HDctime(T) ctime(T) -#define HDcuserid(S) cuserid(S) -#define HDdifftime(X, Y) difftime(X, Y) -#define HDdiv(X, Y) div(X, Y) -#define HDdup(F) dup(F) -#define HDdup2(F, I) dup2(F, I) -#define HDexecv(S, AV) execv(S, AV) -#define HDexecve(S, AV, E) execve(S, AV, E) -#define HDexecvp(S, AV) execvp(S, AV) -#define HDexit(N) exit(N) -#define HD_exit(N) _exit(N) -#define HDexp(X) exp(X) -#define HDfabs(X) fabs(X) -#define HDfabsf(X) fabsf(X) -#define HDfabsl(X) fabsl(X) -#define HDfclose(F) fclose(F) -/* fcntl() variable arguments */ -#define HDfdopen(N, S) fdopen(N, S) -#define HDfeof(F) feof(F) -#define HDferror(F) ferror(F) -#define HDfflush(F) fflush(F) -#define HDfgetc(F) fgetc(F) -#define HDfgetpos(F, P) fgetpos(F, P) -#define HDfgets(S, N, F) fgets(S, N, F) -#ifdef H5_HAVE_WIN32_API -#define HDfileno(F) _fileno(F) -#else /* H5_HAVE_WIN32_API */ -#define HDfileno(F) fileno(F) -#endif /* H5_HAVE_WIN32_API */ -#define HDfloor(X) floor(X) -#define HDfmod(X, Y) fmod(X, Y) -#define HDfopen(S, M) fopen(S, M) -#define HDfork() fork() -#define HDfpathconf(F, N) fpathconf(F, N) -#define HDfprintf fprintf -#define HDfputc(C, F) fputc(C, F) -#define HDfputs(S, F) fputs(S, F) -#define HDfread(M, Z, N, F) fread(M, Z, N, F) -#define HDfree(M) free(M) -#define HDfreopen(S, M, F) freopen(S, M, F) -#define HDfrexp(X, N) frexp(X, N) -#define HDfrexpf(X, N) frexpf(X, N) -#define HDfrexpl(X, N) frexpl(X, N) -/* fscanf() variable arguments */ -#ifdef H5_HAVE_FSEEKO -#define HDfseek(F, O, W) fseeko(F, O, W) -#else -#define HDfseek(F, O, W) fseek(F, O, W) -#endif -#define HDfsetpos(F, P) fsetpos(F, P) -/* definitions related to the file stat utilities. - * Windows have its own function names. - * For Unix, if off_t is not 64bit big, try use the pseudo-standard - * xxx64 versions if available. - */ -#ifdef H5_HAVE_WIN32_API -#define HDfstat(F, B) _fstati64(F, B) -#define HDlstat(S, B) _lstati64(S, B) -#define HDstat(S, B) _stati64(S, B) -typedef struct _stati64 h5_stat_t; -typedef __int64 h5_stat_size_t; -#define HDoff_t __int64 -#elif H5_SIZEOF_OFF_T != 8 && H5_SIZEOF_OFF64_T == 8 && defined(H5_HAVE_STAT64) -#define HDfstat(F, B) fstat64(F, B) -#define HDlstat(S, B) lstat64(S, B) -#define HDstat(S, B) stat64(S, B) -typedef struct stat64 h5_stat_t; -typedef off64_t h5_stat_size_t; -#define HDoff_t off64_t -#else -#define HDfstat(F, B) fstat(F, B) -#define HDlstat(S, B) lstat(S, B) -#define HDstat(S, B) stat(S, B) -typedef struct stat h5_stat_t; -typedef off_t h5_stat_size_t; -#define HDoff_t off_t -#endif - -#define HDftell(F) ftell(F) -#define HDftruncate(F, L) ftruncate(F, L) -#define HDfwrite(M, Z, N, F) fwrite(M, Z, N, F) -#define HDgetc(F) getc(F) -#define HDgetchar() getchar() -#define HDgetcwd(S, Z) getcwd(S, Z) -#define HDgetegid() getegid() -#define HDgetenv(S) getenv(S) -#define HDgeteuid() geteuid() -#define HDgetgid() getgid() -#define HDgetgrgid(G) getgrgid(G) -#define HDgetgrnam(S) getgrnam(S) -#define HDgetgroups(Z, G) getgroups(Z, G) -#ifdef H5_HAVE_WIN32_API -#define HDgetlogin() Wgetlogin() -#else /* H5_HAVE_WIN32_API */ -#define HDgetlogin() getlogin() -#endif /* H5_HAVE_WIN32_API */ -#define HDgetpgrp() getpgrp() -#define HDgetpid() getpid() -#define HDgetppid() getppid() -#define HDgetpwnam(S) getpwnam(S) -#define HDgetpwuid(U) getpwuid(U) -#define HDgetrusage(X, S) getrusage(X, S) -/* Don't define a macro for gets() - it was removed in C11 */ -#ifdef H5_HAVE_WIN32_API -H5_DLL int Wgettimeofday(struct timeval *tv, struct timezone *tz); -#define HDgettimeofday(V, Z) Wgettimeofday(V, Z) -#else /* H5_HAVE_WIN32_API */ -#define HDgettimeofday(S, P) gettimeofday(S, P) -#endif /* H5_HAVE_WIN32_API */ -#define HDgetuid() getuid() -#define HDgmtime(T) gmtime(T) -#define HDisalnum(C) isalnum((int)(C)) /*cast for solaris warning*/ -#define HDisalpha(C) isalpha((int)(C)) /*cast for solaris warning*/ -#define HDisatty(F) isatty(F) -#define HDiscntrl(C) iscntrl((int)(C)) /*cast for solaris warning*/ -#define HDisdigit(C) isdigit((int)(C)) /*cast for solaris warning*/ -#define HDisgraph(C) isgraph((int)(C)) /*cast for solaris warning*/ -#define HDislower(C) islower((int)(C)) /*cast for solaris warning*/ -#define HDisprint(C) isprint((int)(C)) /*cast for solaris warning*/ -#define HDispunct(C) ispunct((int)(C)) /*cast for solaris warning*/ -#define HDisspace(C) isspace((int)(C)) /*cast for solaris warning*/ -#define HDisupper(C) isupper((int)(C)) /*cast for solaris warning*/ -#define HDisxdigit(C) isxdigit((int)(C)) /*cast for solaris warning*/ -#define HDkill(P, S) kill(P, S) -#define HDlabs(X) labs(X) -#define HDldexp(X, N) ldexp(X, N) -#define HDldiv(X, Y) ldiv(X, Y) -#define HDlink(OLD, NEW) link(OLD, NEW) -#define HDlocaleconv() localeconv() -#define HDlocaltime(T) localtime(T) -#define HDlog(X) log(X) -#define HDlog10(X) log10(X) -#define HDlongjmp(J, N) longjmp(J, N) -#ifdef H5_HAVE_WIN32_API -#define HDlseek(F, O, W) _lseeki64(F, O, W) -#else -#ifdef H5_HAVE_LSEEK64 -#define HDlseek(F, O, W) lseek64(F, O, W) -#else -#define HDlseek(F, O, W) lseek(F, O, W) -#endif -#endif -#define HDmalloc(Z) malloc(Z) -#define HDposix_memalign(P, A, Z) posix_memalign(P, A, Z) -#define HDmblen(S, N) mblen(S, N) -#define HDmbstowcs(P, S, Z) mbstowcs(P, S, Z) -#define HDmbtowc(P, S, Z) mbtowc(P, S, Z) -#define HDmemchr(S, C, Z) memchr(S, C, Z) -#define HDmemcmp(X, Y, Z) memcmp(X, Y, Z) -/* - * The (char*) casts are required for the DEC when optimizations are turned - * on and the source and/or destination are not aligned. - */ -#define HDmemcpy(X, Y, Z) memcpy((char *)(X), (const char *)(Y), Z) -#define HDmemmove(X, Y, Z) memmove((char *)(X), (const char *)(Y), Z) -/* - * The (void*) cast just avoids a compiler warning in H5_HAVE_VISUAL_STUDIO - */ -#ifdef H5_HAVE_VISUAL_STUDIO -#define HDmemset(X, C, Z) memset((void *)(X), C, Z) -#else /* H5_HAVE_VISUAL_STUDIO */ -#define HDmemset(X, C, Z) memset(X, C, Z) -#endif /* H5_HAVE_VISUAL_STUDIO */ -#ifdef H5_HAVE_WIN32_API -#define HDmkdir(S, M) _mkdir(S) -#else /* H5_HAVE_WIN32_API */ -#define HDmkdir(S, M) mkdir(S, M) -#endif /* H5_HAVE_WIN32_API */ -#define HDmkfifo(S, M) mkfifo(S, M) -#define HDmktime(T) mktime(T) -#define HDmodf(X, Y) modf(X, Y) -#ifdef _O_BINARY -#define HDopen(S, F, M) open(S, F | _O_BINARY, M) -#else -#define HDopen(S, F, M) open(S, F, M) -#endif -#define HDopendir(S) opendir(S) -#define HDpathconf(S, N) pathconf(S, N) -#define HDpause() pause() -#define HDperror(S) perror(S) -#define HDpipe(F) pipe(F) -#define HDpow(X, Y) pow(X, Y) -/* printf() variable arguments */ -#define HDprintf(...) HDfprintf(stdout, __VA_ARGS__) -#define HDputc(C, F) putc(C, F) -#define HDputchar(C) putchar(C) -#define HDputs(S) puts(S) -#define HDqsort(M, N, Z, F) qsort(M, N, Z, F) -#define HDraise(N) raise(N) - -#ifdef H5_HAVE_RAND_R -#define HDrandom() HDrand() -H5_DLL int HDrand(void); -#elif H5_HAVE_RANDOM -#define HDrand() random() -#define HDrandom() random() -#else -#define HDrand() rand() -#define HDrandom() rand() -#endif - -#define HDread(F, M, Z) read(F, M, Z) -#define HDreaddir(D) readdir(D) -#define HDrealloc(M, Z) realloc(M, Z) -#define HDremove(S) remove(S) -#define HDrename(OLD, NEW) rename(OLD, NEW) -#define HDrewind(F) rewind(F) -#define HDrewinddir(D) rewinddir(D) -#define HDrmdir(S) rmdir(S) -/* scanf() variable arguments */ -#define HDsetbuf(F, S) setbuf(F, S) -#define HDsetgid(G) setgid(G) -#define HDsetjmp(J) setjmp(J) -#define HDsetlocale(N, S) setlocale(N, S) -#define HDsetpgid(P, PG) setpgid(P, PG) -#define HDsetsid() setsid() -#define HDsetuid(U) setuid(U) -/* Windows does not permit setting the buffer size to values - less than 2. */ -#ifndef H5_HAVE_WIN32_API -#define HDsetvbuf(F, S, M, Z) setvbuf(F, S, M, Z) -#else -#define HDsetvbuf(F, S, M, Z) setvbuf(F, S, M, (Z > 1 ? Z : 2)) -#endif -#define HDsigaddset(S, N) sigaddset(S, N) -#define HDsigdelset(S, N) sigdelset(S, N) -#define HDsigemptyset(S) sigemptyset(S) -#define HDsigfillset(S) sigfillset(S) -#define HDsigismember(S, N) sigismember(S, N) -#define HDsiglongjmp(J, N) siglongjmp(J, N) -#define HDsignal(N, F) signal(N, F) -#define HDsigpending(S) sigpending(S) -#define HDsigprocmask(H, S, O) sigprocmask(H, S, O) -#define HDsigsetjmp(J, N) sigsetjmp(J, N) -#define HDsigsuspend(S) sigsuspend(S) -#define HDsin(X) sin(X) -#define HDsinh(X) sinh(X) -#define HDsleep(N) sleep(N) -#define HDsnprintf snprintf /*varargs*/ -#define HDsprintf sprintf /*varargs*/ -#define HDsqrt(X) sqrt(X) -#ifdef H5_HAVE_RAND_R -H5_DLL void HDsrand(unsigned int seed); -#define HDsrandom(S) HDsrand(S) -#elif H5_HAVE_RANDOM -#define HDsrand(S) srandom(S) -#define HDsrandom(S) srandom(S) -#else -#define HDsrand(S) srand(S) -#define HDsrandom(S) srand(S) -#endif - -#ifdef H5_HAVE_WIN32_API -#define HDstrcasecmp(A, B) _stricmp(A, B) -#else -#define HDstrcasecmp(X, Y) strcasecmp(X, Y) -#endif -#define HDstrcat(X, Y) strcat(X, Y) -#define HDstrchr(S, C) strchr(S, C) -#define HDstrcmp(X, Y) strcmp(X, Y) -#define HDstrcoll(X, Y) strcoll(X, Y) -#define HDstrcpy(X, Y) strcpy(X, Y) -#define HDstrcspn(X, Y) strcspn(X, Y) -#define HDstrerror(N) strerror(N) -#define HDstrftime(S, Z, F, T) strftime(S, Z, F, T) -#define HDstrlen(S) strlen(S) -#define HDstrncat(X, Y, Z) strncat(X, Y, Z) -#define HDstrncmp(X, Y, Z) strncmp(X, Y, Z) -#define HDstrncpy(X, Y, Z) strncpy(X, Y, Z) -#define HDstrpbrk(X, Y) strpbrk(X, Y) -#define HDstrrchr(S, C) strrchr(S, C) -#define HDstrspn(X, Y) strspn(X, Y) -#define HDstrstr(X, Y) strstr(X, Y) -#define HDstrtod(S, R) strtod(S, R) -#define HDstrtok(X, Y) strtok(X, Y) -#define HDstrtol(S, R, N) strtol(S, R, N) -H5_DLL int64_t HDstrtoll(const char *s, const char **rest, int base); -#define HDstrtoul(S, R, N) strtoul(S, R, N) -#ifdef H5_HAVE_WIN32_API -#define HDstrtoull(S, R, N) _strtoui64(S, R, N) -#else -#define HDstrtoull(S, R, N) strtoull(S, R, N) -#endif -#define HDstrxfrm(X, Y, Z) strxfrm(X, Y, Z) -#define HDsysconf(N) sysconf(N) -#define HDsystem(S) system(S) -#define HDtan(X) tan(X) -#define HDtanh(X) tanh(X) -#define HDtcdrain(F) tcdrain(F) -#define HDtcflow(F, A) tcflow(F, A) -#define HDtcflush(F, N) tcflush(F, N) -#define HDtcgetattr(F, T) tcgetattr(F, T) -#define HDtcgetpgrp(F) tcgetpgrp(F) -#define HDtcsendbreak(F, N) tcsendbreak(F, N) -#define HDtcsetattr(F, O, T) tcsetattr(F, O, T) -#define HDtcsetpgrp(F, N) tcsetpgrp(F, N) -#define HDtime(T) time(T) -#define HDtimes(T) times(T) -#define HDtmpfile() tmpfile() -#define HDtmpnam(S) tmpnam(S) -#define HDtolower(C) tolower(C) -#define HDtoupper(C) toupper(C) -#define HDttyname(F) ttyname(F) -#define HDtzset() tzset() -#define HDumask(N) umask(N) -#define HDuname(S) uname(S) -#define HDungetc(C, F) ungetc(C, F) -#ifdef H5_HAVE_WIN32_API -#define HDunlink(S) _unlink(S) -#else -#define HDunlink(S) unlink(S) -#endif -#define HDutime(S, T) utime(S, T) -#define HDva_arg(A, T) va_arg(A, T) -#define HDva_end(A) va_end(A) -#define HDva_start(A, P) va_start(A, P) -#define HDvasprintf(RET, FMT, A) vasprintf(RET, FMT, A) -#define HDvfprintf(F, FMT, A) vfprintf(F, FMT, A) -#define HDvprintf(FMT, A) vprintf(FMT, A) -#define HDvsprintf(S, FMT, A) vsprintf(S, FMT, A) -#define HDvsnprintf(S, N, FMT, A) vsnprintf(S, N, FMT, A) -#define HDwait(W) wait(W) -#define HDwaitpid(P, W, O) waitpid(P, W, O) -#define HDwcstombs(S, P, Z) wcstombs(S, P, Z) -#define HDwctomb(S, C) wctomb(S, C) -#define HDwrite(F, M, Z) write(F, M, Z) - -/* - * And now for a couple non-Posix functions... Watch out for systems that - * define these in terms of macros. - */ -#ifdef H5_HAVE_WIN32_API -#define HDstrdup(S) _strdup(S) -#else /* H5_HAVE_WIN32_API */ - -#if !defined strdup && !defined H5_HAVE_STRDUP -extern char * strdup(const char *s); -#endif - -#define HDstrdup(S) strdup(S) - -#endif /* H5_HAVE_WIN32_API */ - -/* - * HDF Boolean type. - */ -#ifndef FALSE -#define FALSE false -#endif -#ifndef TRUE -#define TRUE true -#endif - -/** From h5tools_utils.h **/ - -H5_DLLVAR int H5_opterr; /* getoption prints errors if this is on */ -H5_DLLVAR int H5_optind; /* token pointer */ -H5_DLLVAR const char *H5_optarg; /* flag argument (or value) */ - -enum h5_arg_level { - no_arg = 0, /* doesn't take an argument */ - require_arg, /* requires an argument */ - optional_arg /* argument is optional */ -}; - -struct h5_long_options { - const char * name; /* Name of the long option */ - enum h5_arg_level has_arg; /* Whether we should look for an arg */ - char shortval; /* The shortname equivalent of long arg - * this gets returned from get_option - */ -}; - -extern int H5_get_option(int argc, const char *const *argv, const char *opt, - const struct h5_long_options *l_opt); - -extern int nCols; /*max number of columns for outputting */ - -/* Definitions of useful routines */ -extern void print_version(const char *progname); - -#endif -- cgit v0.12