|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 2/3] xenstore: add console xenstore entries for xenstore stubdom
On 28/01/2020 14:28, Juergen Gross wrote:
> In order to be able to connect to the console of Xenstore stubdom we
> need to create the appropriate entries in Xenstore.
>
> For the moment we don't support xenconsoled living in another domain
> than dom0, as this information isn't available other then via
> Xenstore which we are just setting up.
Ah - I see the observation here.
>
> Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
> ---
> tools/helpers/init-xenstore-domain.c | 31 ++++++++++++++++++++++++++++++-
> 1 file changed, 30 insertions(+), 1 deletion(-)
>
> diff --git a/tools/helpers/init-xenstore-domain.c
> b/tools/helpers/init-xenstore-domain.c
> index a312bc38b8..a81a15a4de 100644
> --- a/tools/helpers/init-xenstore-domain.c
> +++ b/tools/helpers/init-xenstore-domain.c
> @@ -12,6 +12,7 @@
> #include <xenstore.h>
> #include <xen/sys/xenbus_dev.h>
> #include <xen-xsm/flask/flask.h>
> +#include <xen/io/xenbus.h>
>
> #include "init-dom-json.h"
> #include "_paths.h"
> @@ -312,6 +313,15 @@ static void do_xs_write(struct xs_handle *xsh, char
> *path, char *val)
> fprintf(stderr, "writing %s to xenstore failed.\n", path);
> }
>
> +static void do_xs_write_dir_node(struct xs_handle *xsh, char *dir, char
> *node,
> + char *val)
> +{
> + char full_path[100];
> +
> + snprintf(full_path, 100, "%s/%s", dir, node);
> + do_xs_write(xsh, full_path, val);
> +}
> +
> static void do_xs_write_dom(struct xs_handle *xsh, char *path, char *val)
> {
> char full_path[64];
> @@ -325,7 +335,7 @@ int main(int argc, char** argv)
> int opt;
> xc_interface *xch;
> struct xs_handle *xsh;
> - char buf[16];
> + char buf[16], be_path[64], fe_path[64];
> int rv, fd;
> char *maxmem_str = NULL;
>
> @@ -414,6 +424,25 @@ int main(int argc, char** argv)
> if (maxmem)
> snprintf(buf, 16, "%d", maxmem * 1024);
> do_xs_write_dom(xsh, "memory/static-max", buf);
> + snprintf(be_path, 64, "/local/domain/0/backend/console/%d/0", domid);
> + snprintf(fe_path, 64, "/local/domain/%d/console", domid);
> + snprintf(buf, 16, "%d", domid);
> + do_xs_write_dir_node(xsh, be_path, "frontend-id", buf);
> + do_xs_write_dir_node(xsh, be_path, "frontend", fe_path);
> + do_xs_write_dir_node(xsh, be_path, "online", "1");
> + snprintf(buf, 16, "%d", XenbusStateInitialising);
> + do_xs_write_dir_node(xsh, be_path, "state", buf);
> + do_xs_write_dir_node(xsh, be_path, "protocol", "vt100");
> + do_xs_write_dir_node(xsh, fe_path, "backend", be_path);
> + do_xs_write_dir_node(xsh, fe_path, "backend-id", "0");
> + do_xs_write_dir_node(xsh, fe_path, "limit", "1048576");
> + do_xs_write_dir_node(xsh, fe_path, "type", "xenconsoled");
> + do_xs_write_dir_node(xsh, fe_path, "output", "pty");
> + do_xs_write_dir_node(xsh, fe_path, "tty", "");
> + snprintf(buf, 16, "%d", console_evtchn);
> + do_xs_write_dir_node(xsh, fe_path, "port", buf);
> + snprintf(buf, 16, "%ld", console_mfn);
> + do_xs_write_dir_node(xsh, fe_path, "ring-ref", buf);
Eww. Why are pty/tty details in the protocol? vt100, fine, but the
backend specifics about what it does with the data shouldn't matter to
the frontend.
I presume this is too engrained in legacy to fix?
~Andrew
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |