qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 13/26] ccid-card-passthru, dev-smartcard-reader:


From: Marc-André Lureau
Subject: Re: [Qemu-devel] [PATCH 13/26] ccid-card-passthru, dev-smartcard-reader: add debug environment variables
Date: Fri, 22 Mar 2013 15:23:43 +0100

Hi

On Mon, Mar 18, 2013 at 2:10 PM, Alon Levy <address@hidden> wrote:
> From: Alon Levy <address@hidden>
>
> This overrides whatever debug value is set on the corresponding devices
> from the command line, and is meant to ease the usage with any
> management stack. For libvirt you can set environment variables by
> extending the dom namespace, i.e:
>
> <domain type='kvm' id='3' 
> xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
>   <qemu:commandline>
>     <qemu:env name='QEMU_CCID_PASSTHRU_DEBUG' value='4'/>
>     <qemu:env name='QEMU_CCID_DEBUG' value='4'/>
>   </qemu:commandline>
> </domain>
>
> Signed-off-by: Alon Levy <address@hidden>
> ---
>  hw/ccid-card-passthru.c       | 16 ++++++++++++++++
>  hw/usb/dev-smartcard-reader.c | 16 ++++++++++++++++
>  2 files changed, 32 insertions(+)
>
> diff --git a/hw/ccid-card-passthru.c b/hw/ccid-card-passthru.c
> index 111894f..80fe514 100644
> --- a/hw/ccid-card-passthru.c
> +++ b/hw/ccid-card-passthru.c
> @@ -350,6 +350,22 @@ static int passthru_initfn(CCIDCardState *base)
>          error_report("missing chardev");
>          return -1;
>      }
> +    {
> +        char *debug_env = getenv("QEMU_CCID_PASSTHRU_DEBUG");
> +        char *inv = NULL;
> +        int debug;
> +        if (debug_env) {
> +            debug = strtol(debug_env, &inv, 10);
> +            if (inv != debug_env) {
> +                if (debug < 0 || debug > D_VERBOSE) {
> +                    fprintf(stderr, "warning: QEMU_CCID_PASSTHRU_DEBUG"
> +                            " not in [0, %d]", D_VERBOSE);
> +                } else {
> +                    card->debug = debug;
> +                }
> +            }
> +        }
> +    }
>      assert(sizeof(DEFAULT_ATR) <= MAX_ATR_SIZE);
>      memcpy(card->atr, DEFAULT_ATR, sizeof(DEFAULT_ATR));
>      card->atr_length = sizeof(DEFAULT_ATR);
> diff --git a/hw/usb/dev-smartcard-reader.c b/hw/usb/dev-smartcard-reader.c
> index caebc1c..fc950c8 100644
> --- a/hw/usb/dev-smartcard-reader.c
> +++ b/hw/usb/dev-smartcard-reader.c
> @@ -1201,6 +1201,22 @@ static int ccid_initfn(USBDevice *dev)
>      s->bulk_out_pos = 0;
>      ccid_reset_parameters(s);
>      ccid_reset(s);
> +    {
> +        char *debug_env = getenv("QEMU_CCID_DEBUG");
> +        char *inv = NULL;
> +        int debug;
> +        if (debug_env) {
> +            debug = strtol(debug_env, &inv, 10);
> +            if (inv != debug_env) {
> +                if (debug < 0 || debug > D_VERBOSE) {
> +                    fprintf(stderr, "warning: QEMU_CCID_PASSTHRU_DEBUG"
> +                            " not in [0, %d]", D_VERBOSE);
> +                } else {
> +                    s->debug = debug;
> +                }
> +            }
> +        }
> +    }
>      return 0;
>  }
>
> --
> 1.8.1.4
>
>

If not generalized (in util/cutils?) it could probably share the same
code in a function parse_debug_env("QEMU_CCID_PASSTHRU_DEBUG",
&s->debug)

-- 
Marc-André Lureau



reply via email to

[Prev in Thread] Current Thread [Next in Thread]