[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] xentop: Flush batch output on SIGTERM or SIGINT.



# HG changeset patch
# User Keir Fraser <keir@xxxxxxxxxxxxx>
# Date 1191327565 -3600
# Node ID 818cc26e3926614d0e9c2431c746a56bb645337d
# Parent  d9039e8103e4901f4b509fbeeba011d73885bfba
xentop: Flush batch output on SIGTERM or SIGINT.
Signed-off-by: INAKOSHI Hiroya <inakoshi.hiroya@xxxxxxxxxxxxxx>
---
 tools/xenstat/xentop/xentop.c |   32 ++++++++++++++++++++++++--------
 1 files changed, 24 insertions(+), 8 deletions(-)

diff -r d9039e8103e4 -r 818cc26e3926 tools/xenstat/xentop/xentop.c
--- a/tools/xenstat/xentop/xentop.c     Tue Oct 02 10:53:14 2007 +0100
+++ b/tools/xenstat/xentop/xentop.c     Tue Oct 02 13:19:25 2007 +0100
@@ -28,6 +28,7 @@
 #include <sys/time.h>
 #include <time.h>
 #include <unistd.h>
+#include <signal.h>
 #if defined(__linux__)
 #include <linux/kdev_t.h>
 #endif
@@ -1011,6 +1012,13 @@ static void top(void)
        free(domains);
 }
 
+static int signal_exit;
+
+void signal_exit_handler(int sig)
+{
+       signal_exit = 1;
+}
+
 int main(int argc, char **argv)
 {
        int opt, optind = 0;
@@ -1102,14 +1110,22 @@ int main(int argc, char **argv)
                        ch = getch();
                } while (handle_key(ch));
        } else {
-                       do {
-                               gettimeofday(&curtime, NULL);
-                               top();
-                               oldtime = curtime;
-                               if ((!loop) && !(--iterations))
-                                       break;
-                               sleep(delay);
-                       } while (1);
+               struct sigaction sa = {
+                       .sa_handler = signal_exit_handler,
+                       .sa_flags = 0
+               };
+               sigemptyset(&sa.sa_mask);
+               sigaction(SIGINT, &sa, NULL);
+               sigaction(SIGTERM, &sa, NULL);
+
+               do {
+                       gettimeofday(&curtime, NULL);
+                       top();
+                       oldtime = curtime;
+                       if ((!loop) && !(--iterations))
+                               break;
+                       sleep(delay);
+               } while (!signal_exit);
        }
 
        /* Cleanup occurs in cleanup(), so no work to do here. */

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.