Tidying of Mirror VFD.

* Rename server-stop utility to mirror_server_stop.
* Remove external dependency on bzero().
* Modify test/use_common to use only the public API.
* Rename internal bitswap macro to follow convention.
This commit is contained in:
Jacob Smith 2020-04-07 10:16:48 -05:00
parent f771958d75
commit d97c00013d
11 changed files with 128 additions and 56 deletions

View File

@ -2788,7 +2788,7 @@
./utils/mirror_vfd/mirror_remote.c
./utils/mirror_vfd/mirror_remote.h
./utils/mirror_vfd/mirror_server.c
./utils/mirror_vfd/mirror_server_halten_sie.c
./utils/mirror_vfd/mirror_server_stop.c
./utils/mirror_vfd/mirror_writer.c
# high level libraries

View File

@ -62,7 +62,8 @@ typedef struct H5FD_mirror_t {
#define MAXADDR (((haddr_t)1<<(8*sizeof(HDoff_t)-1))-1)
#define ADDR_OVERFLOW(A) (HADDR_UNDEF==(A) || ((A) & ~(haddr_t)MAXADDR))
#define _BSWAP_64(X) \
#ifndef BSWAP_64
#define BSWAP_64(X) \
(uint64_t)( (((X) & 0x00000000000000FF) << 56) \
| (((X) & 0x000000000000FF00) << 40) \
| (((X) & 0x0000000000FF0000) << 24) \
@ -71,6 +72,7 @@ typedef struct H5FD_mirror_t {
| (((X) & 0x0000FF0000000000) >> 24) \
| (((X) & 0x00FF000000000000) >> 40) \
| (((X) & 0xFF00000000000000) >> 56))
#endif /* BSWAP_64 */
/* Debugging flabs for verbose tracing -- nonzero to enable */
#define MIRROR_DEBUG_OP_CALLS 0
@ -387,7 +389,7 @@ H5FD__mirror_xmit_decode_uint64(uint64_t *out, const unsigned char *_buf)
HDassert(_buf && out);
HDmemcpy(&n, _buf, sizeof(n));
if (TRUE == is_host_little_endian()) {
*out = _BSWAP_64(n);
*out = BSWAP_64(n);
}
else {
*out = n;
@ -484,7 +486,7 @@ H5FD__mirror_xmit_encode_uint64(unsigned char *_dest, uint64_t v)
LOG_OP_CALL("H5FD__mirror_xmit_decode_uint64");
HDassert(_dest);
if (TRUE == is_host_little_endian()) {
n = _BSWAP_64(v);
n = BSWAP_64(v);
}
HDmemcpy(_dest, &n, sizeof(n));
return 8;
@ -813,7 +815,11 @@ H5FD_mirror_xmit_encode_open(unsigned char *dest,
size_t n_writ = 0;
LOG_OP_CALL("H5FD_mirror_xmit_encode_open");
HDassert(dest && x);
HDbzero(dest, H5FD_MIRROR_XMIT_OPEN_SIZE);
/* clear entire structure, but especially its filepath string area */
for (n_writ = 0; n_writ < H5FD_MIRROR_XMIT_OPEN_SIZE; n_writ++) {
*(dest+n_writ) = 0;
}
n_writ = 0;
n_writ += H5FD_mirror_xmit_encode_header(dest,
(const H5FD_mirror_xmit_t *)&(x->pub));
n_writ += H5FD__mirror_xmit_encode_uint32(&dest[n_writ], x->flags);
@ -849,7 +855,11 @@ H5FD_mirror_xmit_encode_reply(unsigned char *dest,
size_t n_writ = 0;
LOG_OP_CALL("H5FD_mirror_xmit_encode_reply");
HDassert(dest && x);
HDbzero(dest, H5FD_MIRROR_XMIT_REPLY_SIZE);
/* clear entire structure, but especially its message string area */
for (n_writ = 0; n_writ < H5FD_MIRROR_XMIT_REPLY_SIZE; n_writ++) {
*(dest+n_writ) = 0;
}
n_writ = 0;
n_writ += H5FD_mirror_xmit_encode_header(dest,
(const H5FD_mirror_xmit_t *)&(x->pub));
n_writ += H5FD__mirror_xmit_encode_uint32(&dest[n_writ], x->status);

View File

@ -717,9 +717,6 @@ typedef struct {
#ifndef HDbsearch
#define HDbsearch(K,B,N,Z,F) bsearch(K,B,N,Z,F)
#endif /* HDbsearch */
#ifndef HDbzero
#define HDbzero(A,B) bzero((A),(B)) /* mirror VFD */
#endif /* HDbzero */
#ifndef HDcalloc
#define HDcalloc(N,Z) calloc(N,Z)
#endif /* HDcalloc */

View File

@ -101,6 +101,31 @@ static herr_t _populate_filepath(const char *dirname, const char *_basename,
static hid_t create_mirroring_split_fapl(const char *_basename,
struct mirrortest_filenames *names);
static void mybzero(void *dest, size_t size);
/* ----------------------------------------------------------------------------
* Function: mybzero
*
* Purpose: Have bzero simplicity and abstraction in (possible) absence of
* it being available.
*
* Programmer: Jacob Smith
* 2020-03-30
* ----------------------------------------------------------------------------
*/
static void
mybzero(void *dest, size_t size)
{
size_t i = 0;
char *s = NULL;
HDassert(dest != NULL);
s = (char *)dest;
for (i = 0; i < size; i++) {
*(s+i) = 0;
}
} /* end mybzero() */
/* ----------------------------------------------------------------------------
* Function: _populate_filepath
@ -349,8 +374,8 @@ test_xmit_encode_decode(void)
/* Start of buffer uint8_t
*/
HDbzero(buf, 8);
HDbzero(expected, 8);
mybzero(buf, 8);
mybzero(expected, 8);
expected[0] = 200;
out = 0;
if (H5FD__mirror_xmit_encode_uint8(buf, v) != 1) {
@ -369,8 +394,8 @@ test_xmit_encode_decode(void)
/* Middle of buffer uint8_t
*/
HDbzero(buf, 8);
HDbzero(expected, 8);
mybzero(buf, 8);
mybzero(expected, 8);
expected[3] = v;
out = 0;
if (H5FD__mirror_xmit_encode_uint8((buf+3), v) != 1) {
@ -389,8 +414,8 @@ test_xmit_encode_decode(void)
/* End of buffer uint8_t
*/
HDbzero(buf, 8);
HDbzero(expected, 8);
mybzero(buf, 8);
mybzero(expected, 8);
expected[7] = v;
out = 0;
if (H5FD__mirror_xmit_encode_uint8((buf+7), v) != 1) {
@ -419,8 +444,8 @@ test_xmit_encode_decode(void)
/* Start of buffer uint16_t
*/
HDbzero(buf, 8);
HDbzero(expected, 8);
mybzero(buf, 8);
mybzero(expected, 8);
expected[0] = 0x8F;
expected[1] = 0x02;
out = 0;
@ -440,8 +465,8 @@ test_xmit_encode_decode(void)
/* Middle of buffer uint16_t
*/
HDbzero(buf, 8);
HDbzero(expected, 8);
mybzero(buf, 8);
mybzero(expected, 8);
expected[3] = 0x8F;
expected[4] = 0x02;
out = 0;
@ -468,8 +493,8 @@ test_xmit_encode_decode(void)
/* End of buffer uint16_t
*/
HDbzero(buf, 8);
HDbzero(expected, 8);
mybzero(buf, 8);
mybzero(expected, 8);
expected[6] = 0x8F;
expected[7] = 0x02;
out = 0;
@ -499,8 +524,8 @@ test_xmit_encode_decode(void)
/* Start of buffer uint32_t
*/
HDbzero(buf, 8);
HDbzero(expected, 8);
mybzero(buf, 8);
mybzero(expected, 8);
expected[0] = 0x8F;
expected[1] = 0x02;
expected[2] = 0x00;
@ -522,8 +547,8 @@ test_xmit_encode_decode(void)
/* Middle of buffer uint32_t
*/
HDbzero(buf, 8);
HDbzero(expected, 8);
mybzero(buf, 8);
mybzero(expected, 8);
expected[3] = 0x8F;
expected[4] = 0x02;
expected[5] = 0x00;
@ -552,8 +577,8 @@ test_xmit_encode_decode(void)
/* End of buffer uint32_t
*/
HDbzero(buf, 8);
HDbzero(expected, 8);
mybzero(buf, 8);
mybzero(expected, 8);
expected[4] = 0x8F;
expected[5] = 0x02;
expected[6] = 0x00;
@ -585,8 +610,8 @@ test_xmit_encode_decode(void)
/* Start of buffer uint64_t
*/
HDbzero(buf, 16);
HDbzero(expected, 16);
mybzero(buf, 16);
mybzero(expected, 16);
expected[0] = 0x90;
expected[1] = 0xDC;
expected[2] = 0xBE;
@ -612,8 +637,8 @@ test_xmit_encode_decode(void)
/* Middle of buffer uint64_t
*/
HDbzero(buf, 16);
HDbzero(expected, 16);
mybzero(buf, 16);
mybzero(expected, 16);
expected[3] = 0x90;
expected[4] = 0xDC;
expected[5] = 0xBE;
@ -646,8 +671,8 @@ test_xmit_encode_decode(void)
/* End of buffer uint64_t
*/
HDbzero(buf, 16);
HDbzero(expected, 16);
mybzero(buf, 16);
mybzero(expected, 16);
expected[8] = 0x90;
expected[9] = 0xDC;
expected[10] = 0xBE;

View File

@ -81,7 +81,7 @@ SERVER_ARGS="$SERVER_PORT $SERVER_VERBOSITY"
nerrors=$?
echo "Stopping Mirror Server"
./mirror_server_halten_sie $SERVER_PORT
./mirror_server_stop $SERVER_PORT
###############################################################################
## Report and exit

View File

@ -21,10 +21,6 @@
#include "use.h"
#define H5D_FRIEND /*suppress error about including H5Dpkg */
#define H5D_TESTING
#include "H5Dpkg.h" /* TODO : used to verify chunk index type (yes?) -- is there a way to do this sanity-check using the public API instead? */
/* ----------------------------------------------------------------------------
* Print a common/shared usage message.
* Receives program name to show default test file name (<program_name>.h5).
@ -231,7 +227,7 @@ create_uc_file(options_t * opts)
/* Check that the chunk index type is not version 1 B-tree.
* Version 1 B-trees are not supported under SWMR.
*/
if (H5D__layout_idx_type_test(dsid, &idx_type) < 0)
if (H5Dget_chunk_index_type(dsid, &idx_type) < 0)
return -1;
if (idx_type == H5D_CHUNK_IDX_BTREE) {
HDfprintf(stderr, "ERROR: Chunk index is version 1 B-tree: aborting.\n");

View File

@ -23,22 +23,22 @@ set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};mirror_server
set (H5_DEP_EXECUTABLES ${H5_DEP_EXECUTABLES} mirror_server)
#-----------------------------------------------------------------------------
# Add the mirror_server_halten_sie executable
# Add the mirror_server_stop executable
#-----------------------------------------------------------------------------
set (mirror_server_halt_SOURCES ${HDF5_UTILS_MIRRORVFD_SOURCE_DIR}/mirror_server_halten_sie.c)
add_executable (mirror_server_halt ${mirror_server_halt_SOURCES})
target_include_directories (mirror_server_halt PRIVATE "${HDF5_UITLS_DIR};${HDF5_SRC_DIR};${HDF5_BINARY_DIR};$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:${MPI_C_INCLUDE_DIRS}>")
set (mirror_server_stop_SOURCES ${HDF5_UTILS_MIRRORVFD_SOURCE_DIR}/mirror_server_stop.c)
add_executable (mirror_server_stop ${mirror_server_stop_SOURCES})
target_include_directories (mirror_server_stop PRIVATE "${HDF5_UITLS_DIR};${HDF5_SRC_DIR};${HDF5_BINARY_DIR};$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:${MPI_C_INCLUDE_DIRS}>")
if (NOT BUILD_SHARED_LIBS)
TARGET_C_PROPERTIES (mirror_server_halt STATIC)
target_link_libraries (mirror_server_halt PRIVATE ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
TARGET_C_PROPERTIES (mirror_server_stop STATIC)
target_link_libraries (mirror_server_stop PRIVATE ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
else ()
TARGET_C_PROPERTIES (mirror_server_halt SHARED)
target_link_libraries (mirror_server_halt PRIVATE ${HDF5_TOOLS_LIBSH_TARGET} ${HDF5_LIBSH_TARGET})
TARGET_C_PROPERTIES (mirror_server_stop SHARED)
target_link_libraries (mirror_server_stop PRIVATE ${HDF5_TOOLS_LIBSH_TARGET} ${HDF5_LIBSH_TARGET})
endif ()
set_target_properties (mirror_server_halt PROPERTIES FOLDER utils)
set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};mirror_server_halt")
set (H5_DEP_EXECUTABLES ${H5_DEP_EXECUTABLES} mirror_server_halt)
set_target_properties (mirror_server_stop PROPERTIES FOLDER utils)
set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};mirror_server_stop")
set (H5_DEP_EXECUTABLES ${H5_DEP_EXECUTABLES} mirror_server_stop)
##############################################################################
##############################################################################

View File

@ -19,7 +19,7 @@ include $(top_srcdir)/config/commence.am
AM_CPPFLAGS+=-I$(top_srcdir)/src
bin_PROGRAMS = mirror_server mirror_server_halten_sie
bin_PROGRAMS = mirror_server mirror_server_stop
mirror_server_SOURCES = mirror_server.c mirror_writer.c mirror_remote.c
#mirror_writer_SOURCES = mirror_writer.c mirror_remote.c

View File

@ -135,6 +135,27 @@ struct server_run {
int listenfd;
};
/* ---------------------------------------------------------------------------
* Function: mybzero
*
* Purpose: Introduce bzero without neededing it on the system.
*
* Programmer: Jacob Smith
* 2020-03-30
* ---------------------------------------------------------------------------
*/
static void mybzero(void *dest, size_t size)
{
size_t i = 0;
char *s = NULL;
HDassert(dest);
s = (char *)dest;
for (i = 0; i < size; i++) {
*(s+i) = 0;
}
} /* end mybzero() */
/* ---------------------------------------------------------------------------
* Function: usage
@ -187,8 +208,8 @@ parse_args(int argc, char **argv, struct op_args *args_out)
args_out->log_prepend_type = 1;
args_out->verbosity = MIRROR_LOG_DEFAULT_VERBOSITY;
/* preset empty strings */
HDbzero(args_out->log_path, PATH_MAX+1);
HDbzero(args_out->writer_log_path, PATH_MAX+1);
mybzero(args_out->log_path, PATH_MAX+1);
mybzero(args_out->writer_log_path, PATH_MAX+1);
if (argv == NULL || *argv == NULL) {
mirror_log(NULL, V_ERR, "invalid argv pointer");

View File

@ -157,9 +157,32 @@ struct mirror_writer_opts {
char *logpath;
};
static void mybzero(void *dest, size_t size);
static int do_open(struct mirror_session *session,
const H5FD_mirror_xmit_open_t *xmit_open);
/* ---------------------------------------------------------------------------
* Function: mybzero
*
* Purpose: Introduce bzero without neededing it on the system.
*
* Programmer: Jacob Smith
* 2020-03-30
* ---------------------------------------------------------------------------
*/
static void mybzero(void *dest, size_t size)
{
size_t i = 0;
char *s = NULL;
HDassert(dest);
s = (char *)dest;
for (i = 0; i < size; i++) {
*(s+i) = 0;
}
} /* end mybzero() */
/* ---------------------------------------------------------------------------
* Function: session_init
@ -199,7 +222,7 @@ session_init(struct mirror_writer_opts *opts)
session->reply.pub.version = H5FD_MIRROR_XMIT_CURR_VERSION;
session->reply.pub.op = H5FD_MIRROR_OP_REPLY;
session->reply.pub.session_token = 0;
HDbzero(session->reply.message, H5FD_MIRROR_STATUS_MESSAGE_MAX);
mybzero(session->reply.message, H5FD_MIRROR_STATUS_MESSAGE_MAX);
/* Options-derived population
*/
@ -381,7 +404,7 @@ reply_ok(struct mirror_session *session)
mirror_log(session->loginfo, V_ALL, "reply_ok()");
reply->status = H5FD_MIRROR_STATUS_OK;
HDbzero(reply->message, H5FD_MIRROR_STATUS_MESSAGE_MAX);
mybzero(reply->message, H5FD_MIRROR_STATUS_MESSAGE_MAX);
return _xmit_reply(session);
} /* end reply_ok() */
@ -876,7 +899,7 @@ receive_communique(
mirror_log(session->loginfo, V_INFO, "receive_communique()");
HDbzero(comm->raw, comm->raw_size);
mybzero(comm->raw, comm->raw_size);
comm->recd_die = 0;
mirror_log(session->loginfo, V_INFO, "ready to receive"); /* TODO */