From fd347f1b55d1a77969f2624f0063152568dabab0 Mon Sep 17 00:00:00 2001 From: "tlh20@elite.cl.cam.ac.uk" Date: Tue, 6 May 2003 09:36:15 +0000 Subject: bitkeeper revision 1.206 (3eb7820fjxOimwW6NMSeo6KyAdqZUQ) Many files: new file domctl, xi_ tools, updated domain builder, /proc/xeno/domains --- tools/internal/xi_start.c | 80 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 tools/internal/xi_start.c (limited to 'tools/internal/xi_start.c') diff --git a/tools/internal/xi_start.c b/tools/internal/xi_start.c new file mode 100644 index 0000000000..7c03180dcc --- /dev/null +++ b/tools/internal/xi_start.c @@ -0,0 +1,80 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "hypervisor_defs.h" +#include "dom0_ops.h" +#include "dom0_defs.h" +#include "mem_defs.h" + +/***********************************************************************/ + +static char *argv0 = "internal_domain_start"; + +static void ERROR (char *message) +{ + fprintf (stderr, "%s: %s\n", argv0, message); + exit (-1); +} + +static void PERROR (char *message) +{ + fprintf (stderr, "%s: %s (%s)\n", argv0, message, sys_errlist[errno]); + exit (-1); +} + +/***********************************************************************/ + +static int start_domain(int id) +{ + dom0_newdomain_t * dom_data; + char cmd_path[MAX_PATH]; + char dom_id_path[MAX_PATH]; + dom0_op_t dop; + int cmd_fd; + int id_fd; + + /* Set up the DOM0_STARTDOMAIN command */ + dop.cmd = DOM0_STARTDOMAIN; + dop.u.meminfo.domain = id; + + /* open the /proc command interface */ + sprintf(cmd_path, "%s%s%s%s", "/proc/", PROC_XENO_ROOT, "/", PROC_CMD); + cmd_fd = open(cmd_path, O_WRONLY); + if(cmd_fd < 0){ + PERROR ("Count not open PROC_CMD interface"); + } + + /* Issue the command */ + write(cmd_fd, &dop, sizeof(dom0_op_t)); + close(cmd_fd); + + return 0; +} + +/***********************************************************************/ + +int main(int argc, char **argv) +{ + int rc; + + if (argv[0] != NULL) + { + argv0 = argv[0]; + } + + if(argc != 2) + { + fprintf (stderr, "Usage: %s \n", argv0); + return -1; + } + + rc = start_domain(atol(argv[1])); + + return rc; +} -- cgit v1.2.3