diff options
Diffstat (limited to 'test/vfd_swmr_common.h')
-rw-r--r-- | test/vfd_swmr_common.h | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/test/vfd_swmr_common.h b/test/vfd_swmr_common.h new file mode 100644 index 0000000..8e1f877 --- /dev/null +++ b/test/vfd_swmr_common.h @@ -0,0 +1,114 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * 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://support.hdfgroup.org/ftp/HDF5/releases. * + * If you do not have access to either file, you may request a copy from * + * help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef _VFD_SWMR_COMMON_H +#define _VFD_SWMR_COMMON_H + +/***********/ +/* Headers */ +/***********/ + +#include <stdarg.h> +#include "h5test.h" + +/**********/ +/* Macros */ +/**********/ + +/* The maximum # of records to add/remove from the dataset in one step, + * used by vfd_swmr_addrem_writer and vfd_swmr_remove_reader. + */ +#define MAX_SIZE_CHANGE 10 + +#define NLEVELS 5 /* # of datasets in the SWMR test file */ + +#define NMAPPING 9 + +#define COMMON_FILENAME "vfd_swmr_data.h5" /* SWMR test file name */ +#define DTYPE_SIZE 150 /* Data size in opaque type */ + +/* The message sent by writer that the file open is done--releasing the file lock */ +#define WRITER_MESSAGE "VFD_SWMR_WRITER_MESSAGE" + +/************/ +/* Typedefs */ +/************/ + +typedef struct _estack_state { + H5E_auto_t efunc; + void *edata; +} estack_state_t; + +/* Information about a symbol/dataset */ +typedef struct { + char *name; /* Dataset name for symbol */ + hid_t dsid; /* Dataset ID for symbol */ + hsize_t nrecords; /* Number of records for the symbol */ +} symbol_info_t; + +/* A symbol's record */ +typedef struct { + uint64_t rec_id; /* ID for this record (unique in symbol) */ + uint8_t info[DTYPE_SIZE]; /* "Other" information for this record */ +} symbol_t; + +typedef enum _testsel { + TEST_NONE = 0 +, TEST_NULL +, TEST_OOB +} testsel_t; + +/********************/ +/* Global Variables */ +/********************/ +H5TEST_DLLVAR symbol_info_t *symbol_info[NLEVELS]; +H5TEST_DLLVAR unsigned symbol_count[NLEVELS]; + +/**************/ +/* Prototypes */ +/**************/ +#ifdef __cplusplus +extern "C" { +#endif + +H5TEST_DLL estack_state_t estack_get_state(void); +H5TEST_DLL estack_state_t disable_estack(void); +H5TEST_DLL void restore_estack(estack_state_t); + +H5TEST_DLL symbol_info_t * choose_dataset(unsigned *, unsigned *); +H5TEST_DLL hid_t create_symbol_datatype(void); +H5TEST_DLL int generate_name(char *name_buf, unsigned level, unsigned count); +H5TEST_DLL int generate_symbols(void); +H5TEST_DLL int shutdown_symbols(void); +H5TEST_DLL int print_metadata_retries_info(hid_t fid); + +H5TEST_DLL void block_signals(sigset_t *); +H5TEST_DLL void restore_signals(sigset_t *); +H5TEST_DLL void await_signal(hid_t); +H5TEST_DLL hid_t vfd_swmr_create_fapl(bool, bool, bool, const char *, ...) + H5_ATTR_FORMAT(printf, 4, 5); + +H5TEST_DLL void dbgf(int, const char *, ...) H5_ATTR_FORMAT(printf, 2, 3); +H5TEST_DLL void evsnprintf(char *, size_t, const char *, va_list); +H5TEST_DLL void esnprintf(char *, size_t, const char *, ...) + H5_ATTR_FORMAT(printf, 3, 4); + +H5TEST_DLL int fetch_env_ulong(const char *, unsigned long, unsigned long *); + +#ifdef __cplusplus +} +#endif + +extern int verbosity; + +#endif /* _SWMR_COMMON_H */ |