From: Dario Faggioli <dario.faggioli@citrix.com>
To: Jan Beulich <JBeulich@suse.com>,
xen-devel <xen-devel@lists.xenproject.org>
Cc: Wei Liu <wei.liu2@citrix.com>,
Ian Jackson <Ian.Jackson@eu.citrix.com>,
Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Subject: Re: [PATCH v2 3/3] xl: new "loglvl" command
Date: Fri, 4 Mar 2016 19:45:13 +0100 [thread overview]
Message-ID: <1457117113.2959.594.camel@citrix.com> (raw)
In-Reply-To: <56D9CA6002000078000D9935@prv-mh.provo.novell.com>
[-- Attachment #1.1: Type: text/plain, Size: 3302 bytes --]
On Fri, 2016-03-04 at 09:48 -0700, Jan Beulich wrote:
> This is pretty simplistic for now, but I'd rather have someone better
> friends with the tools improve it (if desired).
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>
> --- a/tools/libxl/libxl.c
> +++ b/tools/libxl/libxl.c
> @@ -5958,6 +5958,26 @@ int libxl_send_debug_keys(libxl_ctx *ctx
> return 0;
> }
>
> +int libxl_log_level(libxl_ctx *ctx, bool set, bool guest,
> + int *lower_thresh, int *upper_thresh)
> +{
> + int ret;
>
As per libxl coding style, this wants to be 'r'.
> + GC_INIT(ctx);
>
I don't seem to find it in CODING_STYLE, but I'd say there should be an
empty line here.
> + if (set) {
> + ret = xc_set_log_level(ctx->xch, guest, *lower_thresh,
> *upper_thresh);
> + } else {
> + ret = xc_get_log_level(ctx->xch, guest, lower_thresh,
> upper_thresh);
> + }
> + if ( ret < 0 ) {
> + LOGE(ERROR, "%s %slog level",
> + set ? "setting" : "getting", guest ? "guest " : "");
> + GC_FREE;
> + return ERROR_FAIL;
>
Libxl wants only one error/cleanup path out of the function, and
recommends using a variable called rc for hosting the libxl error code
to be returned, and goto, if necessary.
> --- a/tools/libxl/xl_cmdimpl.c
> +++ b/tools/libxl/xl_cmdimpl.c
> +int main_loglvl(int argc, char **argv)
> +{
> + static const struct option opts[] = {
> + {"guest", 0, 0, 'g'},
> + {"set", 0, 0, 's'},
> + COMMON_LONG_OPTS
> + };
> + int opt, lower_thresh = -1, upper_thresh = -1;
> + bool guest = false, set = false;
> +
> + SWITCH_FOREACH_OPT(opt, "gs:", opts, "loglvl", 0) {
> + case 'g':
> + guest = true;
> + break;
> + case 's':
> + if (*optarg != '/')
> + lower_thresh = parse_loglvl(&optarg);
> + if (*optarg == '/') {
> + ++optarg;
> + upper_thresh = parse_loglvl(&optarg);
> + }
> + set = true;
> + break;
> + }
> +
> + if (libxl_log_level(ctx, set, guest, &lower_thresh,
> &upper_thresh)) {
> + fprintf(stderr, "cannot %s %s log level\n",
> + set ? "set" : "get", guest ? "guest" : "host");
> + return 1;
>
This is indeed super-inconsistent in xl. But we're trying to improve it
(it's half done and there are patches) and using EXIT_FAILURE and
EXIT_SUCCESS for program exit codes, and this return can be classified
as such.
> + }
> +
> + if (!set)
> + printf("%s log levels: %s/%s\n", guest ? "guest" : "host",
> + format_loglvl(lower_thresh),
> format_loglvl(upper_thresh));
> +
> + return 0;
>
And this as well, of course. :-)
Thanks and Regards,
Dario
--
<<This happens because I choose it to happen!>> (Raistlin Majere)
-----------------------------------------------------------------
Dario Faggioli, Ph.D, http://about.me/dario.faggioli
Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)
[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 181 bytes --]
[-- Attachment #2: Type: text/plain, Size: 126 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2016-03-04 18:45 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-04 16:38 [PATCH v2 0/3] allow runtime log level threshold adjustments Jan Beulich
2016-03-04 16:46 ` [PATCH v2 1/3] console: allow " Jan Beulich
2016-03-04 20:55 ` Konrad Rzeszutek Wilk
2016-03-07 10:44 ` Jan Beulich
2016-03-07 14:41 ` Konrad Rzeszutek Wilk
2016-03-07 15:19 ` Jan Beulich
2016-03-04 16:47 ` [PATCH v2 2/3] libxc: wrapper for log level sysctl Jan Beulich
2016-03-05 16:00 ` Dario Faggioli
2016-03-08 16:20 ` Wei Liu
2016-03-04 16:48 ` [PATCH v2 3/3] xl: new "loglvl" command Jan Beulich
2016-03-04 18:45 ` Dario Faggioli [this message]
2016-03-07 11:46 ` Jan Beulich
2016-03-07 18:07 ` Dario Faggioli
2016-03-08 8:08 ` Jan Beulich
2016-03-08 14:05 ` George Dunlap
2016-03-08 16:09 ` Wei Liu
2016-03-08 18:05 ` Dario Faggioli
2016-03-05 15:36 ` Dario Faggioli
2016-03-07 13:20 ` Fabio Fantoni
2016-03-07 13:26 ` Jan Beulich
2016-03-08 16:20 ` Wei Liu
2016-03-14 15:23 ` Jan Beulich
2016-03-14 15:36 ` Wei Liu
2016-03-14 15:49 ` Jan Beulich
2016-03-14 16:01 ` Wei Liu
2016-03-14 17:00 ` Jan Beulich
2016-03-14 17:07 ` Ian Jackson
2016-03-15 7:37 ` Jan Beulich
2016-03-15 13:58 ` Wei Liu
2016-03-15 14:07 ` Jan Beulich
2016-03-15 14:51 ` Wei Liu
2016-03-15 15:03 ` Jan Beulich
2016-03-15 15:38 ` Ian Jackson
2016-03-16 11:22 ` Jan Beulich
2016-04-28 15:33 ` Wei Liu
2016-04-29 7:20 ` Jan Beulich
2016-05-02 11:14 ` Wei Liu
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=1457117113.2959.594.camel@citrix.com \
--to=dario.faggioli@citrix.com \
--cc=Ian.Jackson@eu.citrix.com \
--cc=JBeulich@suse.com \
--cc=stefano.stabellini@eu.citrix.com \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xenproject.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.