aboutsummaryrefslogtreecommitdiffstats
path: root/tools/domain_builder/dom_kill.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/domain_builder/dom_kill.c')
-rw-r--r--tools/domain_builder/dom_kill.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/tools/domain_builder/dom_kill.c b/tools/domain_builder/dom_kill.c
index 2b8b0a5097..ddc0f8a4fd 100644
--- a/tools/domain_builder/dom_kill.c
+++ b/tools/domain_builder/dom_kill.c
@@ -15,7 +15,7 @@
#define PERR_STRING "Xen Domain Killer"
-static int do_kill_domain(int dom_id)
+static int do_kill_domain(int dom_id, int force)
{
char cmd_path[MAX_PATH];
dom0_op_t dop;
@@ -23,6 +23,7 @@ static int do_kill_domain(int dom_id)
dop.cmd = DOM0_KILLDOMAIN;
dop.u.killdomain.domain = dom_id;
+ dop.u.killdomain.force = force;
/* open the /proc command interface */
sprintf(cmd_path, "%s%s%s%s", "/proc/", PROC_XENO_ROOT, "/", PROC_CMD);
@@ -42,13 +43,18 @@ int main(int argc, char **argv)
{
int ret;
- if(argc < 2){
- printf("Usage: kill_domain <domain_id>\n");
+ if ( (argc < 2) || (argc > 3) )
+ {
+ usage:
+ printf("Usage: kill_domain [-f] <domain_id>\n");
+ printf(" -f: Forces immediate destruction of specified domain\n");
ret = -1;
goto out;
}
- ret = do_kill_domain(atoi(argv[1]));
+ if ( (argc == 3) && strcmp("-f", argv[1]) ) goto usage;
+
+ ret = do_kill_domain(atoi(argv[argc-1]), argc == 3);
out:
return ret;