[libvirt] [PATCH 6/9] util: Refactor 'virResctrlMonitorFreeStats'
Michal Privoznik
mprivozn at redhat.com
Tue May 28 09:01:51 UTC 2019
On 5/28/19 10:32 AM, Huaqiang,Wang wrote:
>
>
> On 2019年05月27日 23:26, Michal Privoznik wrote:
>> On 5/23/19 11:34 AM, Wang Huaqiang wrote:
>>> Refactor 'virResctrlMonitorFreeStats' to let it available to free
>>> the 'virResctrlMonitorStatsPtr' variable.
>>>
>>> Signed-off-by: Wang Huaqiang <huaqiang.wang at intel.com>
>>> ---
>>> src/qemu/qemu_driver.c | 1 +
>>> src/util/virresctrl.c | 4 +---
>>> 2 files changed, 2 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
>>> index 42b1ce2..2abed86 100644
>>> --- a/src/qemu/qemu_driver.c
>>> +++ b/src/qemu/qemu_driver.c
>>> @@ -19980,6 +19980,7 @@
>>> qemuDomainFreeResctrlMonData(virQEMUResctrlMonDataPtr resdata)
>>> VIR_FREE(resdata->name);
>>> VIR_FREE(resdata->vcpus);
>>> virResctrlMonitorFreeStats(resdata->stats, resdata->nstats);
>>> + VIR_FREE(resdata->stats);
>>> VIR_FREE(resdata);
>>> }
>>> diff --git a/src/util/virresctrl.c b/src/util/virresctrl.c
>>> index 90532cf..0f18d2b 100644
>>> --- a/src/util/virresctrl.c
>>> +++ b/src/util/virresctrl.c
>>> @@ -2764,7 +2764,7 @@ virResctrlMonitorGetStats(virResctrlMonitorPtr
>>> monitor,
>>> cleanup:
>>> VIR_FREE(datapath);
>>> VIR_FREE(filepath);
>>> - VIR_FREE(stat);
>>> + virResctrlMonitorFreeStats(&stat, 1);
>>
>> How about creating a function that frees exactly one
>> virResctrlMonitorStatsPtr and then (possibly) have a wrapper that
>> would call it 1 to n times? We can then get rid of this ugly call.
>>
>
> How about change virResctrlMonitorFreeStats to: (function name have been
> changed to
> virResctrlMonitorStatsFree)
>
> ```code
>
> void
> virResctrlMonitorStatsFree(virResctrlMonitorStatsPtr stat)
> {
> if (!stat)
> return;
>
> VIR_FREE(stat->vals);
> virStringListFree(stat->features);
> VIR_FREE(stat); /* Free virResctrlMonitorStats object */
> }
>
>
> ```
> And following code to is the way to free a list of
> @virResctrlMonitorStatsPtr objects:
>
> ```code
>
> static void
> qemuDomainFreeResctrlMonData(virQEMUResctrlMonDataPtr resdata)
> {
> ...
> size_t i = 0;
>
> for ( i = 0; i < resdata->nstats; i++)
> virResctrlMonitorStatsFree(resdata->stats[i]);
>
> virResctrlMonitorStatsFree
> ...
> }
Yes, this is exactly what I had on mind.
Michal
More information about the libvir-list
mailing list