]> git.ozlabs.org Git - ccan/commitdiff
ccan/io: add debugging helper for seeing if module is in charge of an fd.
authorRusty Russell <rusty@rustcorp.com.au>
Thu, 30 Jun 2022 05:42:35 +0000 (15:12 +0930)
committerRusty Russell <rusty@rustcorp.com.au>
Thu, 30 Jun 2022 05:42:35 +0000 (15:12 +0930)
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
ccan/io/io.h
ccan/io/poll.c

index 4e3b4e936eca31be29d09d7841755d1cc9f2f1cf..eeb5e36ecdff0bfedd633b734cc2b380b92d8b2b 100644 (file)
@@ -814,4 +814,13 @@ struct timemono (*io_time_override(struct timemono (*now)(void)))(void);
  */
 int (*io_poll_override(int (*poll)(struct pollfd *fds, nfds_t nfds, int timeout)))(struct pollfd *, nfds_t, int);
 
+/**
+ * io_have_fd - do we own this file descriptor?
+ * @fd: the file descriptor.
+ * @listener: if non-NULL, set to true if it's a listening socket (io_listener).
+ *
+ * Returns NULL if we don't own it, otherwise a struct io_conn * or struct io_listener *.
+ */
+const void *io_have_fd(int fd, bool *listener);
+
 #endif /* CCAN_IO_H */
index 4cc9f4b7dc901c36ae4bf0869c0d1ebc9cee6c52..634f83d286a66669c54694daf2fab0de4ce1a416 100644 (file)
@@ -464,3 +464,15 @@ void *io_loop(struct timers *timers, struct timer **expired)
 
        return ret;
 }
+
+const void *io_have_fd(int fd, bool *listener)
+{
+       for (size_t i = 0; i < num_fds; i++) {
+               if (fds[i]->fd != fd)
+                       continue;
+               if (listener)
+                       *listener = fds[i]->listener;
+               return fds[i];
+       }
+       return NULL;
+}