From 2b1c361bee7ecb1dc6d68b8ddadbaaf85f03587f Mon Sep 17 00:00:00 2001 From: "kaf24@labyrinth.cl.cam.ac.uk" Date: Mon, 24 Feb 2003 17:56:39 +0000 Subject: bitkeeper revision 1.96 (3e5a5cd7-6YCRyx9vceH0j_ljuOe-Q) hypervisor-ifs: new file Many files: Allow forced killing of domains with 'kill_domain -f'. task_structs now reference counted. .del-network.h~823d28e86ebe9d9b: Delete: xenolinux-2.4.21-pre4-sparse/include/asm-xeno/hypervisor-ifs/network.h .del-hypervisor-if.h~d1f6a7dd4307ddfe: Delete: xenolinux-2.4.21-pre4-sparse/include/asm-xeno/hypervisor-ifs/hypervisor-if.h .del-block.h~81aa08f4e2012da6: Delete: xenolinux-2.4.21-pre4-sparse/include/asm-xeno/hypervisor-ifs/block.h --- tools/domain_builder/dom0_ops.h | 1 + tools/domain_builder/dom_kill.c | 14 ++++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) (limited to 'tools') diff --git a/tools/domain_builder/dom0_ops.h b/tools/domain_builder/dom0_ops.h index d98ce1b1eb..6c60a93ff6 100644 --- a/tools/domain_builder/dom0_ops.h +++ b/tools/domain_builder/dom0_ops.h @@ -27,6 +27,7 @@ typedef struct dom0_newdomain_st typedef struct dom0_killdomain_st { unsigned int domain; + int force; } dom0_killdomain_t; typedef struct dom0_getmemlist_st 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 \n"); + if ( (argc < 2) || (argc > 3) ) + { + usage: + printf("Usage: kill_domain [-f] \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; -- cgit v1.2.3