about summary refs log tree commit diff
path: root/third_party/nix/src/libutil/monitor-fd.hh
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2022-05-18T15·39+0200
committerclbot <clbot@tvl.fyi>2022-05-19T14·08+0000
commitd127f9bd0e7b9b2e0df2de8a2227f77c0907468d (patch)
tree68455040d88b8e0c2817601db88ede450873ff8e /third_party/nix/src/libutil/monitor-fd.hh
parentc85291c602ac666421627d6934ebc6d5be1b93e1 (diff)
chore(3p/nix): unvendor tvix 0.1 r/4098
Nothing is using this now, and we'll likely never pick this up again,
but we learned a lot in the process.

Every now and then this breaks in some bizarre way on channel bumps
and it's just a waste of time to maintain that.

Change-Id: Idcf2f5acd4ca7070ce18d7149cbfc0d967dc0a44
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5632
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Reviewed-by: lukegb <lukegb@tvl.fyi>
Autosubmit: tazjin <tazjin@tvl.su>
Diffstat (limited to 'third_party/nix/src/libutil/monitor-fd.hh')
-rw-r--r--third_party/nix/src/libutil/monitor-fd.hh57
1 files changed, 0 insertions, 57 deletions
diff --git a/third_party/nix/src/libutil/monitor-fd.hh b/third_party/nix/src/libutil/monitor-fd.hh
deleted file mode 100644
index c818c58261..0000000000
--- a/third_party/nix/src/libutil/monitor-fd.hh
+++ /dev/null
@@ -1,57 +0,0 @@
-#pragma once
-
-#include <atomic>
-#include <cstdlib>
-#include <thread>
-
-#include <poll.h>
-#include <signal.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-namespace nix {
-
-class MonitorFdHup {
- private:
-  std::thread thread;
-
- public:
-  MonitorFdHup(int fd) {
-    thread = std::thread([fd]() {
-      while (true) {
-        /* Wait indefinitely until a POLLHUP occurs. */
-        struct pollfd fds[1];
-        fds[0].fd = fd;
-        /* This shouldn't be necessary, but macOS doesn't seem to
-           like a zeroed out events field.
-           See rdar://37537852.
-        */
-        fds[0].events = POLLHUP;
-        auto count = poll(fds, 1, -1);
-        if (count == -1) {
-          abort();
-        }  // can't happen
-        /* This shouldn't happen, but can on macOS due to a bug.
-           See rdar://37550628.
-
-           This may eventually need a delay or further
-           coordination with the main thread if spinning proves
-           too harmful.
-         */
-        if (count == 0) {
-          continue;
-        }
-        assert(fds[0].revents & POLLHUP);
-        triggerInterrupt();
-        break;
-      }
-    });
-  };
-
-  ~MonitorFdHup() {
-    pthread_cancel(thread.native_handle());
-    thread.join();
-  }
-};
-
-}  // namespace nix