[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 5/9] xenstore: modify init-xenstore-domain parameter syntax
+Daniel On Fri, 2015-12-11 at 16:47 +0100, Juergen Gross wrote: > init-xenstore-domain takes only positional parameters today. Change > this to a more flexible parameter syntax allowing to specify additional > options or to omit some. > > Today the supported usage is: > > init-xenstore-domain <xenstore-kernel> <memory_mb> <flask-label> > ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ[<ramdisk-file>] > > Modify this to: > > init-xenstore-domain --kernel <xenstore-kernel> > ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ--memory <memory_mb> > ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ[--flask <flask-label>] > ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ[--ramdisk <ramdisk-file>] > > The flask label is made optional in order to support xenstore domains > without the need of a flask enabled hypervisor. > > Signed-off-by: Juergen Gross <jgross@xxxxxxxx> Looks fine to me Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx> I'd like to see Daniel opinion of all the changes to init-xenstore-domain.c in this series though. > --- > Âtools/xenstore/init-xenstore-domain.c | 79 ++++++++++++++++++++++++++++- > ------ > Â1 file changed, 63 insertions(+), 16 deletions(-) > > diff --git a/tools/xenstore/init-xenstore-domain.c b/tools/xenstore/init- > xenstore-domain.c > index c9963c6..068887c 100644 > --- a/tools/xenstore/init-xenstore-domain.c > +++ b/tools/xenstore/init-xenstore-domain.c > @@ -4,6 +4,7 @@ > Â#include <string.h> > Â#include <stdint.h> > Â#include <stdlib.h> > +#include <getopt.h> > Â#include <sys/ioctl.h> > Â#include <sys/mman.h> > Â#include <xenctrl.h> > @@ -13,16 +14,42 @@ > Â#include <xen-xsm/flask/flask.h> > Â > Âstatic uint32_t domid = -1; > +static char *kernel; > +static char *ramdisk; > +static char *flask; > +static int memory; > + > +static struct option options[] = { > + { "kernel", 1, NULL, 'k' }, > + { "memory", 1, NULL, 'm' }, > + { "flask", 1, NULL, 'f' }, > + { "ramdisk", 1, NULL, 'r' }, > + { NULL, 0, NULL, 0 } > +}; > + > +static void usage(void) > +{ > + fprintf(stderr, > +"Usage:\n" > +"\n" > +"init-xenstore-domain <options>\n" > +"\n" > +"where options may include:\n" > +"\n" > +"ÂÂ--kernel <xenstore-kernel>ÂÂkernel file of the xenstore domain, > mandatory\n" > +"ÂÂ--memory <memory size>ÂÂÂÂÂÂsize of the domain in MB, mandatory\n" > +"ÂÂ--flask <flask-label>ÂÂÂÂÂÂÂoptional flask label of the domain\n" > +"ÂÂ--ramdisk <ramdisk-file>ÂÂÂÂoptional ramdisk file for the domain\n"); > +} > Â > -static int build(xc_interface *xch, int argc, char** argv) > +static int build(xc_interface *xch) > Â{ > Â char cmdline[512]; > Â uint32_t ssid; > Â xen_domain_handle_t handle = { 0 }; > Â int rv, xs_fd; > Â struct xc_dom_image *dom = NULL; > - int maxmem = atoi(argv[2]); > - int limit_kb = (maxmem + 1)*1024; > + int limit_kb = (memory + 1)*1024; > Â > Â xs_fd = open("/dev/xen/xenbus_backend", O_RDWR); > Â if (xs_fd == -1) { > @@ -30,10 +57,14 @@ static int build(xc_interface *xch, int argc, char** > argv) > Â return -1; > Â } > Â > - rv = xc_flask_context_to_sid(xch, argv[3], strlen(argv[3]), > &ssid); > - if (rv) { > - fprintf(stderr, "xc_flask_context_to_sid failed\n"); > - goto err; > + if (flask) { > + rv = xc_flask_context_to_sid(xch, flask, strlen(flask), > &ssid); > + if (rv) { > + fprintf(stderr, "xc_flask_context_to_sid > failed\n"); > + goto err; > + } > + } else { > + ssid = SECINITSID_DOMU; > Â } > Â rv = xc_domain_create(xch, ssid, handle, 0, &domid, NULL); > Â if (rv) { > @@ -64,14 +95,14 @@ static int build(xc_interface *xch, int argc, char** > argv) > Â snprintf(cmdline, 512, "--event %d --internal-db", rv); > Â > Â dom = xc_dom_allocate(xch, cmdline, NULL); > - rv = xc_dom_kernel_file(dom, argv[1]); > + rv = xc_dom_kernel_file(dom, kernel); > Â if (rv) { > Â fprintf(stderr, "xc_dom_kernel_file failed\n"); > Â goto err; > Â } > Â > - if (argc > 4) { > - rv = xc_dom_ramdisk_file(dom, argv[4]); > + if (ramdisk) { > + rv = xc_dom_ramdisk_file(dom, ramdisk); > Â if (rv) { > Â fprintf(stderr, "xc_dom_ramdisk_file failed\n"); > Â goto err; > @@ -88,7 +119,7 @@ static int build(xc_interface *xch, int argc, char** > argv) > Â fprintf(stderr, "xc_dom_parse_image failed\n"); > Â goto err; > Â } > - rv = xc_dom_mem_init(dom, maxmem); > + rv = xc_dom_mem_init(dom, memory); > Â if (rv) { > Â fprintf(stderr, "xc_dom_mem_init failed\n"); > Â goto err; > @@ -136,15 +167,31 @@ err: > Â > Âint main(int argc, char** argv) > Â{ > + int opt; > Â xc_interface *xch; > Â struct xs_handle *xsh; > Â char buf[16]; > Â int rv, fd; > Â > - if (argc < 4 || argc > 5) { > - fprintf(stderr, > - "Use: %s <xenstore-kernel> <memory_mb> <flask- > label> [<ramdisk-file>]\n", > - argv[0]); > + while ((opt = getopt_long(argc, argv, "", options, NULL)) != -1) > { > + switch (opt) { > + case 'k': > + kernel = optarg; > + break; > + case 'm': > + memory = strtol(optarg, NULL, 10); > + break; > + case 'f': > + flask = optarg; > + break; > + case 'r': > + ramdisk = optarg; > + break; > + } > + } > + > + if (optind != argc) { > + usage(); > Â return 2; > Â } > Â > @@ -154,7 +201,7 @@ int main(int argc, char** argv) > Â return 1; > Â } > Â > - rv = build(xch, argc, argv); > + rv = build(xch); > Â > Â xc_interface_close(xch); > Â _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |