Re: [PATCH 02/27] qemu: monitor: Return struct from qemuMonitor(Text|Json)QueryCPUs

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

 



On Fri, Aug 05, 2016 at 03:55:58PM +0200, Peter Krempa wrote:
> Prepare to extract more data by returning a array of structs rather than
> just an array of thread ids. Additionally report fatal errors separately
> from qemu not being able to produce data.
> ---
>  src/qemu/qemu_monitor.c      | 31 ++++++++++++------
>  src/qemu/qemu_monitor.h      |  6 ++++
>  src/qemu/qemu_monitor_json.c | 77 +++++++++++++++++++++++---------------------
>  src/qemu/qemu_monitor_json.h |  3 +-
>  src/qemu/qemu_monitor_text.c | 39 +++++++++++-----------
>  src/qemu/qemu_monitor_text.h |  3 +-
>  tests/qemumonitorjsontest.c  | 39 +++++++++++++++-------
>  7 files changed, 119 insertions(+), 79 deletions(-)

[...]

> diff --git a/src/qemu/qemu_monitor_text.c b/src/qemu/qemu_monitor_text.c
> index ca04965..ef325ac 100644
> --- a/src/qemu/qemu_monitor_text.c
> +++ b/src/qemu/qemu_monitor_text.c
> @@ -502,12 +502,15 @@ int qemuMonitorTextSystemReset(qemuMonitorPtr mon)
> 
>  int
>  qemuMonitorTextQueryCPUs(qemuMonitorPtr mon,
> -                         int **pids)
> +                         struct qemuMonitorQueryCpusEntry **entries,
> +                         size_t *nentries)
>  {
>      char *qemucpus = NULL;
>      char *line;
> -    pid_t *cpupids = NULL;
> -    size_t ncpupids = 0;
> +    struct qemuMonitorQueryCpusEntry *cpus = NULL;
> +    size_t ncpus;

This was already pointed out, need's to be initialized.

> +    struct qemuMonitorQueryCpusEntry cpu = {0};
> +    int ret = -2; /* -2 denotes a non-fatal error to get the data */
> 
>      if (qemuMonitorHMPCommand(mon, "info cpus", &qemucpus) < 0)
>          return -1;
> @@ -529,15 +532,17 @@ qemuMonitorTextQueryCPUs(qemuMonitorPtr mon,
> 
>          /* Extract host Thread ID */
>          if ((offset = strstr(line, "thread_id=")) == NULL)
> -            goto error;
> +            goto cleanup;
> 
>          if (virStrToLong_i(offset + strlen("thread_id="), &end, 10, &tid) < 0)
> -            goto error;
> +            goto cleanup;
>          if (end == NULL || !c_isspace(*end))
> -            goto error;
> +            goto cleanup;
> 
> -        if (VIR_APPEND_ELEMENT_COPY(cpupids, ncpupids, tid) < 0)
> -            goto error;
> +        cpu.tid = tid;
> +
> +        if (VIR_APPEND_ELEMENT_COPY(cpus, ncpus, cpu) < 0)
> +            goto cleanup;

You should set 'ret = -1' in this case.

> 
>          VIR_DEBUG("tid=%d", tid);
> 

ACK

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]