summaryrefslogtreecommitdiffstats
path: root/test/vfd_swmr_group_writer.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/vfd_swmr_group_writer.c')
-rw-r--r--test/vfd_swmr_group_writer.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/test/vfd_swmr_group_writer.c b/test/vfd_swmr_group_writer.c
index 112bcb4..a3b1833 100644
--- a/test/vfd_swmr_group_writer.c
+++ b/test/vfd_swmr_group_writer.c
@@ -12,7 +12,6 @@
*/
#include <err.h>
-#include <unistd.h> /* getopt(3) */
#define H5F_FRIEND /*suppress error about including H5Fpkg */
@@ -55,7 +54,7 @@ static void
usage(const char *progname)
{
fprintf(stderr, "usage: %s [-S] [-W] [-a steps] [-b] [-c]\n"
- " [-n iterations] [-u milliseconds]\n"
+ " [-n iterations]\n"
"\n"
"-S: do not use VFD SWMR\n"
"-W: do not wait for a signal before\n"
@@ -64,7 +63,6 @@ usage(const char *progname)
"-b: write data in big-endian byte order\n"
"-c steps: `steps` between communication between the writer and reader\n"
"-n iterations: how many times to expand each dataset\n"
- "-u ms: milliseconds interval between updates\n"
" to %s.h5\n"
"\n",
progname, progname);
@@ -84,7 +82,7 @@ state_init(state_t *s, int argc, char **argv)
esnprintf(tfile, sizeof(tfile), "%s", argv[0]);
esnprintf(s->progname, sizeof(s->progname), "%s", HDbasename(tfile));
- while ((ch = getopt(argc, argv, "SWa:bc:n:qu:")) != -1) {
+ while ((ch = getopt(argc, argv, "SWa:bc:n:q")) != -1) {
switch (ch) {
case 'S':
s->use_vfd_swmr = false;
@@ -315,8 +313,12 @@ main(int argc, char **argv)
if (s.file == badhid)
errx(EXIT_FAILURE, writer ? "H5Fcreate" : "H5Fopen");
- /* Writer creates two named pipes(FIFO) to coordinate two-way communication */
+ /* Use two named pipes(FIFO) to coordinate the writer and reader for
+ * two-way communication so that the two sides can move forward together.
+ * One is for the writer to write to the reader.
+ * The other one is for the reader to signal the writer. */
if (writer) {
+ /* Writer creates two named pipes(FIFO) */
if (HDmkfifo(fifo_writer_to_reader, 0600) < 0)
errx(EXIT_FAILURE, "HDmkfifo");
@@ -343,7 +345,7 @@ main(int argc, char **argv)
/* At communication interval, notifies the reader and waits for its response */
if (step % s.csteps == 0) {
- /* Bump up the value and notify the reader */
+ /* Bump up the value of notify to notice the reader to start to read */
notify++;
if (HDwrite(fd_writer_to_reader, &notify, sizeof(int)) < 0)
err(EXIT_FAILURE, "write failed");
@@ -381,9 +383,10 @@ main(int argc, char **argv)
/* At communication interval, waits for the writer's notice and responds back */
if (step % s.csteps == 0) {
+ /* The writer should have bumped up the value of notify.
+ * Do the same with verify and confirm it */
verify++;
- /* Receive the notify that the writer bumped up the value */
if (HDread(fd_writer_to_reader, &notify, sizeof(int)) < 0)
err(EXIT_FAILURE, "read failed");
@@ -406,7 +409,7 @@ main(int argc, char **argv)
if (H5Fclose(s.file) < 0)
errx(EXIT_FAILURE, "H5Fclose");
- /* Close the named pipes */
+ /* Both the writer and reader close the named pipes */
if (HDclose(fd_writer_to_reader) < 0)
errx(EXIT_FAILURE, "HDclose");