|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] [v2] libxl: Add API to retrieve domain console tty
Bamvor Jian Zhang writes ("[PATCH] [v2] libxl: Add API to retrieve domain
console tty"):
> This api retrieve domain console from xenstore. With this new api, it is easy
> to implement "virsh console" command in libvirt libxl driver.
It's looking pretty good.
> diff -r ab86fc0e2b45 -r d67ab7c543d5 tools/libxl/libxl.c
> --- a/tools/libxl/libxl.c Tue May 22 11:55:02 2012 +0100
> +++ b/tools/libxl/libxl.c Wed May 23 14:27:57 2012 +0800
> @@ -1188,7 +1188,8 @@ out:
...
> -int libxl_primary_console_exec(libxl_ctx *ctx, uint32_t domid_vm)
> +int libxl_console_get_tty(libxl_ctx *ctx, uint32_t domid, int cons_num,
> + libxl_console_type type, char **path)
> +{
...
> + tty = libxl__xs_read(gc, XBT_NULL, tty_path);
> + if (tty)
> + *path = strdup(tty);
> + else
> + rc = ERROR_FAIL;
Firstly, you need to log something on error here or this function will
fail without logging anything if the console is broken.
Secondly, you should use
libxl__strdup(0, tty)
to get the right error behaviour (if strdup's malloc fails). Ie,
Thirdly, this is a rather odd error handling pattern. I would write
tty = libxl__xs_read(gc, XBT_NULL, tty_path);
if (!tty) {
LOGE(ERROR,"unable to read console tty path `%s'",tty_path);
rc = ERROR_FAIL;
goto out;
}
leaving the main flow to carry on:
*path = libxl__strdup(0, tty);
rc = 0;
Fourthly, you can then leave rc uninitialised at the top of the
function. Any path which as a result gets to the exit with it
uninitialised will produce a compiler warning which would previously
have been erroneously suppressed.
> +static int libxl__primary_console_find(libxl_ctx *ctx, uint32_t domid_vm,
> + uint32_t *domid_out, int
> *cons_num_out,
> + libxl_console_type *type_out)
> {
...
> break;
> case -1:
> - LOG(ERROR,"unable to get domain type for
> domid=%"PRIu32,domid_vm);
> + LOG(ERROR,"unable to get domain type for domid=%"PRIu32,
> domid_vm);
Unrelated whitespace change.
> +int libxl_primary_console_exec(libxl_ctx *ctx, uint32_t domid_vm)
> +{
> + uint32_t domid_out;
> + int cons_num_out;
> + libxl_console_type type_out;
As Ian C says, these shouldn't be called "*_out".
> diff -r ab86fc0e2b45 -r d67ab7c543d5 tools/libxl/libxl.h
> --- a/tools/libxl/libxl.h Tue May 22 11:55:02 2012 +0100
> +++ b/tools/libxl/libxl.h Wed May 23 14:27:57 2012 +0800
> @@ -601,6 +601,16 @@ int libxl_console_exec(libxl_ctx *ctx, u
> * case of HVM guests, and before libxl_run_bootloader in case of PV
> * guests using pygrub. */
> int libxl_primary_console_exec(libxl_ctx *ctx, uint32_t domid_vm);
> +/* libxl_console_get_tty retrieves the specified domain's console tty path
> + * and stores it in path. Caller is responsible for freeing the memory.
> + */
> +int libxl_console_get_tty(libxl_ctx *ctx, uint32_t domid, int cons_num,
> + libxl_console_type type, char **path);
> +/* libxl_primary_console_get_tty retrieves the specified domain's primary
> + * console tty path and stores it in path. Caller is responsible for freeing
> + * the memory.
> + */
> +int libxl_primary_console_get_tty(libxl_ctx *ctx, uint32_t domid_vm, char
> **path);
>
> /* May be called with info_r == NULL to check for domain's existance */
> int libxl_domain_info(libxl_ctx*, libxl_dominfo *info_r,
A formatting nit: I think if we're going to have multi-line comments
associated with functions we should have a blank line either side of
the information about the function to visually associate the comment
with the right function.
Thanks,
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |