From 8beecdb132e2502aa285f52f23675da16d652d9b Mon Sep 17 00:00:00 2001 From: "Michael D. Lowis" Date: Wed, 30 Oct 2019 09:31:05 -0400 Subject: [PATCH] added telemetry viewer script changed job.c to only output when poll returns non zero --- bin/view-telem | 4 ++++ src/lib/job.c | 10 ++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) create mode 100755 bin/view-telem diff --git a/bin/view-telem b/bin/view-telem new file mode 100755 index 0000000..2b406a8 --- /dev/null +++ b/bin/view-telem @@ -0,0 +1,4 @@ +#!/bin/sh +while [[ 1 ]]; do + cat ~/tide-telem +done \ No newline at end of file diff --git a/src/lib/job.c b/src/lib/job.c index 89fa953..a2094d2 100644 --- a/src/lib/job.c +++ b/src/lib/job.c @@ -167,18 +167,20 @@ bool job_poll(int ms) if (job->writefn) JobFds[njobs].events |= POLLOUT; if (JobFds[njobs].events) njobs++; } + /* Poll until a job is ready, call the functions based on events */ long ret = poll(JobFds, njobs, ms); - telem_send("POLL(njobs: %d, ms: %d, ret: %d)\n", njobs, ms, ret); - if (ret < 0) + if (ret != 0) { - perror("poll() failed: "); - exit(1); + telem_send("POLL(njobs: %d, ms: %d, ret: %d)\n", njobs, ms, ret); } + + /* process all jobs with events reported */ for (int i = 0; i < njobs; i++) { job_process(JobFds[i].fd, JobFds[i].revents); } + /* reap zombie processes */ for (int status; waitpid(-1, &status, WNOHANG) > 0;); return (ret > 0); -- 2.52.0