mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
util: perf: use VIR_AUTOFREE instead of VIR_FREE for scalar types
By making use of GNU C's cleanup attribute handled by the VIR_AUTOFREE macro for declaring scalar variables, majority of the VIR_FREE calls can be dropped, which in turn leads to getting rid of most of our cleanup sections. Signed-off-by: Sukrit Bhatnagar <skrtbhtngr@gmail.com> Reviewed-by: Erik Skultety <eskultet@redhat.com>
This commit is contained in:
parent
b99b66f846
commit
05a8dd36c0
@ -175,12 +175,12 @@ typedef struct virPerfEventAttr *virPerfEventAttrPtr;
|
||||
static int
|
||||
virPerfRdtAttrInit(void)
|
||||
{
|
||||
char *buf = NULL;
|
||||
char *tmp = NULL;
|
||||
unsigned int attr_type = 0;
|
||||
VIR_AUTOFREE(char *) buf = NULL;
|
||||
|
||||
if (virFileReadAllQuiet("/sys/devices/intel_cqm/type", 10, &buf) < 0)
|
||||
goto error;
|
||||
return -1;
|
||||
|
||||
if ((tmp = strchr(buf, '\n')))
|
||||
*tmp = '\0';
|
||||
@ -188,19 +188,14 @@ virPerfRdtAttrInit(void)
|
||||
if (virStrToLong_ui(buf, NULL, 10, &attr_type) < 0) {
|
||||
virReportSystemError(errno, "%s",
|
||||
_("failed to get rdt event type"));
|
||||
goto error;
|
||||
return -1;
|
||||
}
|
||||
VIR_FREE(buf);
|
||||
|
||||
attrs[VIR_PERF_EVENT_CMT].attrType = attr_type;
|
||||
attrs[VIR_PERF_EVENT_MBMT].attrType = attr_type;
|
||||
attrs[VIR_PERF_EVENT_MBML].attrType = attr_type;
|
||||
|
||||
return 0;
|
||||
|
||||
error:
|
||||
VIR_FREE(buf);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
@ -209,7 +204,6 @@ virPerfEventEnable(virPerfPtr perf,
|
||||
virPerfEventType type,
|
||||
pid_t pid)
|
||||
{
|
||||
char *buf = NULL;
|
||||
struct perf_event_attr attr;
|
||||
virPerfEventPtr event = &(perf->events[type]);
|
||||
virPerfEventAttrPtr event_attr = &attrs[type];
|
||||
@ -227,6 +221,8 @@ virPerfEventEnable(virPerfPtr perf,
|
||||
}
|
||||
|
||||
if (type == VIR_PERF_EVENT_CMT) {
|
||||
VIR_AUTOFREE(char *) buf = NULL;
|
||||
|
||||
if (virFileReadAll("/sys/devices/intel_cqm/events/llc_occupancy.scale",
|
||||
10, &buf) < 0)
|
||||
goto error;
|
||||
@ -236,8 +232,6 @@ virPerfEventEnable(virPerfPtr perf,
|
||||
_("failed to get cmt scaling factor"));
|
||||
goto error;
|
||||
}
|
||||
|
||||
VIR_FREE(buf);
|
||||
}
|
||||
|
||||
memset(&attr, 0, sizeof(attr));
|
||||
@ -268,7 +262,6 @@ virPerfEventEnable(virPerfPtr perf,
|
||||
|
||||
error:
|
||||
VIR_FORCE_CLOSE(event->fd);
|
||||
VIR_FREE(buf);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user