polypath: Log pid of long-running interface monitor
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 1 Oct 2014 22:42:04 +0000 (23:42 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 21 Oct 2014 00:07:11 +0000 (01:07 +0100)
This new reporting is going to be particularly useful for privsep,
which has a child and also a grandchild.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
polypath.c

index b867632..8249207 100644 (file)
@@ -463,7 +463,8 @@ static void child_monitor(struct polypath *st, int childfd)
 }
 
 static void start_subproc(struct polypath *st, void (*make_fdpair)(int[2]),
-                         void (*child)(struct polypath *st, int childfd))
+                         void (*child)(struct polypath *st, int childfd),
+                         const char *desc)
 {
     int pfds[2];
 
@@ -487,12 +488,15 @@ static void start_subproc(struct polypath *st, void (*make_fdpair)(int[2]),
     st->monitor_pid=pid;
     st->monitor_fd=pfds[0];
     setnonblock(st->monitor_fd);
+
+    lg_perror(LG,M_NOTICE,0, "%s: spawning %s [pid %ld]",
+             st->uc.cc.cl.description, desc, (long)st->monitor_pid);
 }
 
 static void polypath_phase_startmonitor(void *sst, uint32_t newphase)
 {
     struct polypath *st=sst;
-    start_subproc(st,pipe_cloexec,child_monitor);
+    start_subproc(st,pipe_cloexec,child_monitor,"interface monitor");
     register_for_poll(st,polypath_beforepoll,
                      polypath_afterpoll_monitor,"polypath");
 }