[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Re: xl: Add subcommand 'xl dmesg'
On Thu, 20 May 2010, Yu Zhiguo wrote: > Can be used to read and/or clear dmesg buffer. > Thanks for the patch! The implementation is good, but I think we could probably offer an higher level API in libxenlight than just a wrapper around xc_readconsolering. I think we should have a libxl_dmesg instead of libxl_readconsolering, and libxl_dmesg would print dmesg itself using the libxl logging functions. The caller can setup the logging function so that dmesg is printed to stdout in this case. > Signed-off-by: Yu Zhiguo <yuzg@xxxxxxxxxxxxxx> > > diff -r 840f269d95fb -r ab11e3eab7cc tools/libxl/libxl.c > --- a/tools/libxl/libxl.c Wed May 19 22:59:52 2010 +0100 > +++ b/tools/libxl/libxl.c Thu May 20 19:52:13 2010 +0800 > @@ -2827,6 +2827,18 @@ > return xc_send_debug_keys(ctx->xch, keys); > } > > +int libxl_readconsolering(struct libxl_ctx *ctx, char **pbuffer, > + unsigned int *pnr_chars, int clear, > + int incremental, uint32_t *pindex) > +{ > + int ret; > + > + ret = xc_readconsolering(ctx->xch, pbuffer, pnr_chars, clear, > + incremental, pindex); > + > + return ret; > +} > + > uint32_t libxl_vm_get_start_time(struct libxl_ctx *ctx, uint32_t domid) > { > char *dompath = libxl_xs_get_dompath(ctx, domid); > diff -r 840f269d95fb -r ab11e3eab7cc tools/libxl/libxl.h > --- a/tools/libxl/libxl.h Wed May 19 22:59:52 2010 +0100 > +++ b/tools/libxl/libxl.h Thu May 20 19:52:13 2010 +0800 > @@ -512,6 +512,9 @@ > char *trigger_name, uint32_t vcpuid); > int libxl_send_sysrq(struct libxl_ctx *ctx, uint32_t domid, char sysrq); > int libxl_send_debug_keys(struct libxl_ctx *ctx, char *keys); > +int libxl_readconsolering(struct libxl_ctx *ctx, char **pbuffer, > + unsigned int *pnr_chars, int clear, > + int incremental, uint32_t *pindex); > uint32_t libxl_vm_get_start_time(struct libxl_ctx *ctx, uint32_t domid); > > char *libxl_tmem_list(struct libxl_ctx *ctx, uint32_t domid, int use_long); > diff -r 840f269d95fb -r ab11e3eab7cc tools/libxl/xl_cmdimpl.c > --- a/tools/libxl/xl_cmdimpl.c Wed May 19 22:59:52 2010 +0100 > +++ b/tools/libxl/xl_cmdimpl.c Thu May 20 19:52:13 2010 +0800 > @@ -3246,6 +3246,66 @@ > exit(0); > } > > +int main_dmesg(int argc, char **argv) > +{ > + unsigned int clear = 0, index = 0, incremental = 0; > + unsigned int count = 16384 + 1, size = count; > + char *str, *ptr; > + int opt, ret; > + > + while ((opt = getopt(argc, argv, "hc")) != -1) { > + switch (opt) { > + case 'c': > + clear = 1; > + break; > + case 'h': > + help("dmesg"); > + exit(0); > + default: > + fprintf(stderr, "option not supported\n"); > + break; > + } > + } > + > + str = malloc(size); > + memset(str, 0, size); > + ret = libxl_readconsolering(&ctx, &str, &count, clear, > + incremental, &index); > + if (ret < 0) > + goto out; > + > + while (!incremental && count == size) { > + size += count - 1; > + if (size < count) > + break; > + > + ptr = realloc(str, size); > + if (!ptr) > + break; > + > + str = ptr + count; > + count = size - count; > + ret = libxl_readconsolering(&ctx, &str, &count, clear, > + 1, &index); > + if (ret < 0) { > + str = ptr; > + break; > + } > + > + count += str - ptr; > + str = ptr; > + } > + > +out: > + printf(str); > + free(str); > + > + if (ret) > + exit(1); > + > + exit(0); > +} > + > int main_top(int argc, char **argv) > { > int opt; > diff -r 840f269d95fb -r ab11e3eab7cc tools/libxl/xl_cmdimpl.h > --- a/tools/libxl/xl_cmdimpl.h Wed May 19 22:59:52 2010 +0100 > +++ b/tools/libxl/xl_cmdimpl.h Thu May 20 19:52:13 2010 +0800 > @@ -45,6 +45,7 @@ > int main_trigger(int argc, char **argv); > int main_sysrq(int argc, char **argv); > int main_debug_keys(int argc, char **argv); > +int main_dmesg(int argc, char **argv); > int main_top(int argc, char **argv); > int main_networkattach(int argc, char **argv); > int main_networklist(int argc, char **argv); > diff -r 840f269d95fb -r ab11e3eab7cc tools/libxl/xl_cmdtable.c > --- a/tools/libxl/xl_cmdtable.c Wed May 19 22:59:52 2010 +0100 > +++ b/tools/libxl/xl_cmdtable.c Thu May 20 19:52:13 2010 +0800 > @@ -191,6 +191,12 @@ > "Send debug keys to Xen", > "<Keys>", > }, > + { "dmesg", > + &main_dmesg, > + "Read and/or clear dmesg buffer", > + "[-c]", > + " -c Clear dmesg buffer as well as printing > it", > + }, > { "top", > &main_top, > "Monitor a host and the domains in real time", > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |