summaryrefslogtreecommitdiffstats
path: root/test/vfd_swmr_common.c
diff options
context:
space:
mode:
authorDavid Young <dyoung@hdfgroup.org>2020-04-21 20:19:19 (GMT)
committerDavid Young <dyoung@hdfgroup.org>2020-04-21 20:19:19 (GMT)
commitde18e8c95a3b6c5d7f9fee66d70546fa46046d21 (patch)
treea969288a6e4ca7e9474f577d7952c852c327694f /test/vfd_swmr_common.c
parent95105d3facd8e747401e4642d38c3cd35b708238 (diff)
downloadhdf5-de18e8c95a3b6c5d7f9fee66d70546fa46046d21.zip
hdf5-de18e8c95a3b6c5d7f9fee66d70546fa46046d21.tar.gz
hdf5-de18e8c95a3b6c5d7f9fee66d70546fa46046d21.tar.bz2
Make await_signal() await any signal instead of just SIGINT. Add a
(commented out) private version of strsignal(3), just in case we need one on some platform.
Diffstat (limited to 'test/vfd_swmr_common.c')
-rw-r--r--test/vfd_swmr_common.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/test/vfd_swmr_common.c b/test/vfd_swmr_common.c
index f851110..7afd984 100644
--- a/test/vfd_swmr_common.c
+++ b/test/vfd_swmr_common.c
@@ -93,6 +93,23 @@ restore_signals(sigset_t *oldset)
err(EXIT_FAILURE, "%s.%d: sigprocmask", __func__, __LINE__);
}
+#if 0
+static const char *
+strsignal(int signum)
+{
+ switch (signum) {
+ case SIGUSR1:
+ return "SIGUSR1";
+ case SIGINT:
+ return "SIGINT";
+ case SIGPIPE:
+ return "SIGPIPE";
+ default:
+ return "<unknown>";
+ }
+}
+#endif
+
void
await_signal(hid_t fid)
{
@@ -100,8 +117,7 @@ await_signal(hid_t fid)
struct timespec tick = {.tv_sec = 0, .tv_nsec = 1000000000 / 100};
if (sigemptyset(&sleepset) == -1 ||
- sigaddset(&sleepset, SIGINT) == -1 ||
- sigaddset(&sleepset, SIGUSR1) == -1) {
+ sigfillset(&sleepset) == -1) {
err(EXIT_FAILURE, "%s.%d: could not initialize signal masks",
__func__, __LINE__);
}
@@ -109,8 +125,8 @@ await_signal(hid_t fid)
for (;;) {
const int rc = sigtimedwait(&sleepset, NULL, &tick);
- if (rc == SIGUSR1 || rc == SIGINT) {
- printf("Received %s, wrapping things up.\n", (rc == SIGUSR1) ? "SIGUSR1" : "SIGINT");
+ if (rc != -1) {
+ fprintf(stderr, "Received %s, wrapping things up.\n", strsignal(rc));
break;
} else if (rc == -1 && errno == EAGAIN) {
estack_state_t es;