Module Name: src Committed By: pooka Date: Sun Dec 12 18:32:48 UTC 2010
Modified Files: src/usr.bin/rump_allserver: rump_allserver.c Log Message: Reboot when killed (does cleanup). To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/usr.bin/rump_allserver/rump_allserver.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/rump_allserver/rump_allserver.c diff -u src/usr.bin/rump_allserver/rump_allserver.c:1.3 src/usr.bin/rump_allserver/rump_allserver.c:1.4 --- src/usr.bin/rump_allserver/rump_allserver.c:1.3 Sun Dec 12 12:49:37 2010 +++ src/usr.bin/rump_allserver/rump_allserver.c Sun Dec 12 18:32:47 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: rump_allserver.c,v 1.3 2010/12/12 12:49:37 pooka Exp $ */ +/* $NetBSD: rump_allserver.c,v 1.4 2010/12/12 18:32:47 pooka Exp $ */ /*- * Copyright (c) 2010 Antti Kantee. All Rights Reserved. @@ -27,15 +27,18 @@ #include <sys/cdefs.h> #ifndef lint -__RCSID("$NetBSD: rump_allserver.c,v 1.3 2010/12/12 12:49:37 pooka Exp $"); +__RCSID("$NetBSD: rump_allserver.c,v 1.4 2010/12/12 18:32:47 pooka Exp $"); #endif /* !lint */ #include <sys/types.h> +#include <sys/signal.h> #include <rump/rump.h> +#include <rump/rump_syscalls.h> #include <err.h> #include <errno.h> +#include <semaphore.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -59,6 +62,14 @@ exit(1); } +static sem_t sigsem; +static void +sigreboot(int sig) +{ + + sem_post(&sigsem); +} + int main(int argc, char *argv[]) { @@ -104,5 +115,11 @@ if (!sflag) rump_daemonize_done(RUMP_DAEMONIZE_SUCCESS); - pause(); + sem_init(&sigsem, 0, 0); + signal(SIGTERM, sigreboot); + signal(SIGINT, sigreboot); + sem_wait(&sigsem); + + rump_sys_reboot(0, NULL); + return 0; }