From 03f5dc538b5d342081b16eec31ed0e2375420053 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fredrik=20H=C3=BCbinette=20=28Hubbe=29?= <hubbe@hubbe.net>
Date: Mon, 20 Mar 2000 12:57:34 -0800
Subject: [PATCH] make watchdog exit more quitly, helps profiling..

Rev: bin/test_pike.pike:1.38
---
 bin/test_pike.pike | 30 ++++++++++++++++++++++--------
 1 file changed, 22 insertions(+), 8 deletions(-)

diff --git a/bin/test_pike.pike b/bin/test_pike.pike
index 43d76fc72e..237f42195d 100755
--- a/bin/test_pike.pike
+++ b/bin/test_pike.pike
@@ -1,6 +1,6 @@
 #!/usr/local/bin/pike
 
-/* $Id: test_pike.pike,v 1.37 2000/03/07 08:14:57 hubbe Exp $ */
+/* $Id: test_pike.pike,v 1.38 2000/03/20 20:57:34 hubbe Exp $ */
 
 import Stdio;
 
@@ -181,9 +181,9 @@ int main(int argc, string *argv)
 	  while(1)
 	  {
 	    sleep(10);
-	    if(exit_quietly) exit(0);
+	    if(exit_quietly) _exit(0);
 #ifndef __NT__
-	    if(!kill(pid, 0)) exit(0);
+	    if(!kill(pid, 0)) _exit(0);
 #endif
 //	    werror("[WATCHDOG] t=%d\n",time()-last_time);
 
@@ -192,12 +192,12 @@ int main(int argc, string *argv)
 	    {
 	      werror("\n[WATCHDOG] Pike testsuite timeout, sending SIGABRT.\n");
 	      kill(pid, signum("SIGABRT"));
-	      for(int q=0;q<60;q++) if(!kill(pid,0)) exit(0); else sleep(1);
+	      for(int q=0;q<60;q++) if(!kill(pid,0)) _exit(0); else sleep(1);
 	      werror("\n"
 		     "[WATCHDOG] This is your friendly watchdog again...\n"
 		     "[WATCHDOG] testsuite failed to die from SIGABRT, sending SIGKILL\n");
 	      kill(pid, signum("SIGKILL"));
-	      for(int q=0;q<60;q++) if(!kill(pid,0)) exit(0); else sleep(1);
+	      for(int q=0;q<60;q++) if(!kill(pid,0)) _exit(0); else sleep(1);
 	      werror("\n"
 		     "[WATCHDOG] This is your friendly watchdog AGAIN...\n"
 		     "[WATCHDOG] SIGKILL, SIGKILL, SIGKILL, DIE!\n");
@@ -205,14 +205,14 @@ int main(int argc, string *argv)
 	      kill(pid, signum("SIGKILL"));
 	      kill(pid, signum("SIGKILL"));
 	      kill(pid, signum("SIGKILL"));
-	      for(int q=0;q<60;q++) if(!kill(pid,0)) exit(0); else sleep(1);
+	      for(int q=0;q<60;q++) if(!kill(pid,0)) _exit(0); else sleep(1);
 	      werror("\n"
 		     "[WATCHDOG] Giving up, must be a device wait.. :(\n");
-	      exit(0);
+	      _exit(0);
 	    }
 	  }
 #else
-	  exit(1);
+	  _exit(1);
 #endif
 	  break;
 	  
@@ -641,7 +641,21 @@ int main(int argc, string *argv)
 
 #ifdef WATCHDOG_SIGNAL
   if(use_watchdog)
+  {
     watchdog->kill(signum("SIGKILL"));
+    watchdog->wait();
+  }
+#endif
+
+#ifdef WATCHDOG_PIPE
+  if(use_watchdog)
+  {
+    destruct(watchdog_pipe);
+#if constant(signum)
+    catch { watchdog->kill(signum("SIGKILL")); };
+#endif
+    watchdog->wait();
+  }
 #endif
 
   return errors;
-- 
GitLab