From: Ian Campbell <ian.campbell@citrix.com>
To: Juergen Gross <jgross@suse.com>,
xen-devel@lists.xen.org, ian.jackson@eu.citrix.com,
stefano.stabellini@eu.citrix.com, wei.liu2@citrix.com
Cc: Daniel De Graaf <dgdegra@tycho.nsa.gov>
Subject: Re: [PATCH 5/9] xenstore: modify init-xenstore-domain parameter syntax
Date: Tue, 15 Dec 2015 12:22:31 +0000 [thread overview]
Message-ID: <1450182151.16856.156.camel@citrix.com> (raw)
In-Reply-To: <1449848861-7700-6-git-send-email-jgross@suse.com>
+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@suse.com>
Looks fine to me
Acked-by: Ian Campbell <ian.campbell@citrix.com>
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@lists.xen.org
http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2015-12-15 12:22 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-11 15:47 [PATCH 0/9] xenstore: make it easier to run xenstore in a domain Juergen Gross
2015-12-11 15:47 ` [PATCH 1/9] xen: add xenstore domain flag to hypervisor Juergen Gross
2015-12-11 15:54 ` Fwd: " Juergen Gross
2015-12-15 22:18 ` Daniel De Graaf
2015-12-11 15:47 ` [PATCH 2/9] libxc: support new xenstore domain flag in libxc Juergen Gross
2015-12-11 15:47 ` [PATCH 3/9] xenstore: install init-xenstore-domain via make install Juergen Gross
2015-12-15 12:16 ` Ian Campbell
2015-12-15 12:19 ` Juergen Gross
2015-12-15 12:31 ` Ian Campbell
2015-12-15 21:41 ` Daniel De Graaf
2015-12-16 6:27 ` Juergen Gross
2015-12-16 10:01 ` Ian Campbell
2015-12-11 15:47 ` [PATCH 4/9] xenstore: add error messages to init-xenstore-domain Juergen Gross
2015-12-15 12:20 ` Ian Campbell
2015-12-15 21:54 ` Daniel De Graaf
2015-12-11 15:47 ` [PATCH 5/9] xenstore: modify init-xenstore-domain parameter syntax Juergen Gross
2015-12-15 12:22 ` Ian Campbell [this message]
2015-12-15 21:49 ` Daniel De Graaf
2015-12-11 15:47 ` [PATCH 6/9] xenstore: don't start xenstore domain if already one is active Juergen Gross
2015-12-15 12:23 ` Ian Campbell
2015-12-15 12:28 ` Juergen Gross
2015-12-15 12:32 ` Ian Campbell
2015-12-15 12:40 ` Juergen Gross
2015-12-15 12:47 ` Ian Campbell
2015-12-15 12:49 ` Juergen Gross
2015-12-11 15:47 ` [PATCH 7/9] xenstore: add init-xenstore-domain parameter to specify cmdline Juergen Gross
2015-12-15 12:24 ` Ian Campbell
2015-12-11 15:47 ` [PATCH 8/9] xenstore: write xenstore domain data to xenstore Juergen Gross
2015-12-15 12:26 ` Ian Campbell
2015-12-15 12:34 ` Juergen Gross
2015-12-15 12:49 ` Ian Campbell
2015-12-15 12:53 ` Juergen Gross
2015-12-15 13:19 ` Ian Campbell
2015-12-15 13:30 ` Juergen Gross
2015-12-17 8:26 ` Juergen Gross
2015-12-17 10:01 ` Ian Campbell
2015-12-17 10:08 ` Juergen Gross
2015-12-17 10:16 ` Ian Campbell
2015-12-11 15:47 ` [PATCH 9/9] xenstore: when running in mini-os use printk for diagnostic messages Juergen Gross
2015-12-15 12:31 ` Ian Campbell
2015-12-15 12:47 ` Juergen Gross
2015-12-15 12:52 ` Ian Campbell
2015-12-15 12:55 ` Juergen Gross
2015-12-15 14:06 ` Andrew Cooper
2015-12-15 14:57 ` Juergen Gross
2015-12-15 15:01 ` Andrew Cooper
2015-12-15 15:44 ` Juergen Gross
2015-12-17 16:38 ` Juergen Gross
2015-12-15 13:03 ` Samuel Thibault
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1450182151.16856.156.camel@citrix.com \
--to=ian.campbell@citrix.com \
--cc=dgdegra@tycho.nsa.gov \
--cc=ian.jackson@eu.citrix.com \
--cc=jgross@suse.com \
--cc=stefano.stabellini@eu.citrix.com \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.