[libvirt] [PATCH 05/17] virsh: Add event completer to --enable/--disable args of perf command
Michal Privoznik
mprivozn at redhat.com
Mon Sep 14 13:53:54 UTC 2020
On 9/11/20 9:13 AM, Lin Ma wrote:
> Signed-off-by: Lin Ma <lma at suse.de>
> ---
> tools/virsh-completer-domain.c | 49 ++++++++++++++++++++++++++++++++++
> tools/virsh-completer-domain.h | 8 ++++++
> tools/virsh-domain.c | 2 ++
> 3 files changed, 59 insertions(+)
>
> diff --git a/tools/virsh-completer-domain.c b/tools/virsh-completer-domain.c
> index 4c1261b06b..122a9d5f66 100644
> --- a/tools/virsh-completer-domain.c
> +++ b/tools/virsh-completer-domain.c
> @@ -29,6 +29,7 @@
> #include "virsh.h"
> #include "virstring.h"
> #include "virxml.h"
> +#include "conf/domain_conf.h"
Including domain_conf.h looks like too much. IIUC, you need
virPerfEventTypeToString() prototype - that lives in virperf.h so
including just that should be fine.
>
> char **
> virshDomainNameCompleter(vshControl *ctl,
> @@ -338,3 +339,51 @@ virshDomainHostnameSourceCompleter(vshControl *ctl G_GNUC_UNUSED,
>
> return ret;
> }
> +
> +
> +char **
> +virshDomainPerfEnableCompleter(vshControl *ctl,
> + const vshCmd *cmd,
> + unsigned int flags)
> +{
> + size_t i = 0;
> + VIR_AUTOSTRINGLIST events = NULL;
> + const char *event = NULL;
> +
> + virCheckFlags(0, NULL);
> +
> + if (VIR_ALLOC_N(events, VIR_PERF_EVENT_LAST + 1) < 0)
> + return NULL;
> +
> + for (i = 0; i < VIR_PERF_EVENT_LAST; i++)
> + events[i] = g_strdup(virPerfEventTypeToString(i));
> +
> + if (vshCommandOptStringQuiet(ctl, cmd, "enable", &event) < 0)
> + return NULL;
> +
> + return virshCommaStringListComplete(event, (const char **)events);
> +}
> +
> +
> +char **
> +virshDomainPerfDisableCompleter(vshControl *ctl,
> + const vshCmd *cmd,
> + unsigned int flags)
> +{
> + size_t i = 0;
> + VIR_AUTOSTRINGLIST events = NULL;
> + const char *event = NULL;
> +
> + virCheckFlags(0, NULL);
> +
> + if (VIR_ALLOC_N(events, VIR_PERF_EVENT_LAST + 1) < 0)
> + return NULL;
> +
> + for (i = 0; i < VIR_PERF_EVENT_LAST; i++)
> + events[i] = g_strdup(virPerfEventTypeToString(i));
> +
> + if (vshCommandOptStringQuiet(ctl, cmd, "disable", &event) < 0)
> + return NULL;
> +
> + return virshCommaStringListComplete(event, (const char **)events);
> +}
> diff --git a/tools/virsh-completer-domain.h b/tools/virsh-completer-domain.h
> index b00b05e3bd..e3375c3c65 100644
> --- a/tools/virsh-completer-domain.h
> +++ b/tools/virsh-completer-domain.h
> @@ -62,3 +62,11 @@ virshDomainInterfaceAddrSourceCompleter(vshControl *ctl,
> char ** virshDomainHostnameSourceCompleter(vshControl *ctl,
> const vshCmd *cmd,
> unsigned int flags);
> +
> +char ** virshDomainPerfEnableCompleter(vshControl *ctl,
> + const vshCmd *cmd,
> + unsigned int flags);
> +
> +char ** virshDomainPerfDisableCompleter(vshControl *ctl,
> + const vshCmd *cmd,
> + unsigned int flags);
> diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
> index 68600d728a..1ba536466a 100644
> --- a/tools/virsh-domain.c
> +++ b/tools/virsh-domain.c
> @@ -9333,10 +9333,12 @@ static const vshCmdOptDef opts_perf[] = {
> VIRSH_COMMON_OPT_DOMAIN_FULL(0),
> {.name = "enable",
> .type = VSH_OT_STRING,
> + .completer = virshDomainPerfEnableCompleter,
> .help = N_("perf events which will be enabled")
> },
> {.name = "disable",
> .type = VSH_OT_STRING,
> + .completer = virshDomainPerfDisableCompleter,
> .help = N_("perf events which will be disabled")
> },
> VIRSH_COMMON_OPT_DOMAIN_CONFIG,
>
Michal
More information about the libvir-list
mailing list