提交 dbe3bad9 编写于 作者: E Eric Blake

maint: use lighter-weight function for straight appends

It costs quite a few processor cycles to go through printf parsing
just to determine that we only meant to append.

* src/xen/xend_internal.c (xend_op_ext): Consolidate multiple
printfs into one.
* src/qemu/qemu_command.c (qemuBuildWatchdogDevStr)
(qemuBuildUSBInputDevStr, qemuBuildSoundDevStr)
(qemuBuildSoundCodecStr, qemuBuildVideoDevStr): Likewise.
(qemuBuildCpuArgStr, qemuBuildCommandLine): Prefer virBufferAdd
over virBufferVsprintf for trivial appends.
* src/phyp/phyp_driver.c (phypExec, phypUUIDTable_Push)
(phypUUIDTable_Pull): Likewise.
* src/conf/nwfilter_conf.c (macProtocolIDFormatter)
(arpOpcodeFormatter, formatIPProtocolID, printStringItems)
(virNWFilterPrintStateMatchFlags, virNWIPAddressFormat)
(virNWFilterDefFormat): Likewise.
* src/security/virt-aa-helper.c (main): Likewise.
* src/util/sexpr.c (sexpr2string): Likewise.
* src/xenxs/xen_sxpr.c (xenFormatSxprChr): Likewise.
* src/xenxs/xen_xm.c (xenFormatXMDisk): Likewise.
上级 1afaafe3
...@@ -488,7 +488,7 @@ macProtocolIDFormatter(virBufferPtr buf, ...@@ -488,7 +488,7 @@ macProtocolIDFormatter(virBufferPtr buf,
if (intMapGetByInt(macProtoMap, if (intMapGetByInt(macProtoMap,
nwf->p.ethHdrFilter.dataProtocolID.u.u16, nwf->p.ethHdrFilter.dataProtocolID.u.u16,
&str)) { &str)) {
virBufferVSprintf(buf, "%s", str); virBufferAdd(buf, str, -1);
} else { } else {
if (nwf->p.ethHdrFilter.dataProtocolID.datatype == DATATYPE_UINT16) if (nwf->p.ethHdrFilter.dataProtocolID.datatype == DATATYPE_UINT16)
asHex = false; asHex = false;
...@@ -591,7 +591,7 @@ arpOpcodeFormatter(virBufferPtr buf, ...@@ -591,7 +591,7 @@ arpOpcodeFormatter(virBufferPtr buf,
if (intMapGetByInt(arpOpcodeMap, if (intMapGetByInt(arpOpcodeMap,
nwf->p.arpHdrFilter.dataOpcode.u.u16, nwf->p.arpHdrFilter.dataOpcode.u.u16,
&str)) { &str)) {
virBufferVSprintf(buf, "%s", str); virBufferAdd(buf, str, -1);
} else { } else {
virBufferVSprintf(buf, "%d", nwf->p.arpHdrFilter.dataOpcode.u.u16); virBufferVSprintf(buf, "%d", nwf->p.arpHdrFilter.dataOpcode.u.u16);
} }
...@@ -653,7 +653,7 @@ formatIPProtocolID(virBufferPtr buf, ...@@ -653,7 +653,7 @@ formatIPProtocolID(virBufferPtr buf,
if (intMapGetByInt(ipProtoMap, if (intMapGetByInt(ipProtoMap,
nwf->p.ipHdrFilter.ipHdr.dataProtocolID.u.u8, nwf->p.ipHdrFilter.ipHdr.dataProtocolID.u.u8,
&str)) { &str)) {
virBufferVSprintf(buf, "%s", str); virBufferAdd(buf, str, -1);
} else { } else {
if (nwf->p.ipHdrFilter.ipHdr.dataProtocolID.datatype == DATATYPE_UINT8) if (nwf->p.ipHdrFilter.ipHdr.dataProtocolID.datatype == DATATYPE_UINT8)
asHex = false; asHex = false;
...@@ -734,8 +734,8 @@ printStringItems(virBufferPtr buf, const struct int_map *int_map, ...@@ -734,8 +734,8 @@ printStringItems(virBufferPtr buf, const struct int_map *int_map,
for (i = 0; int_map[i].val; i++) { for (i = 0; int_map[i].val; i++) {
if (mask == int_map[i].attr) { if (mask == int_map[i].attr) {
if (c >= 1) if (c >= 1)
virBufferVSprintf(buf, "%s", sep); virBufferAdd(buf, sep, -1);
virBufferVSprintf(buf, "%s", int_map[i].val); virBufferAdd(buf, int_map[i].val, -1);
c++; c++;
} }
} }
...@@ -769,7 +769,7 @@ virNWFilterPrintStateMatchFlags(virBufferPtr buf, const char *prefix, ...@@ -769,7 +769,7 @@ virNWFilterPrintStateMatchFlags(virBufferPtr buf, const char *prefix,
if (!disp_none && (flags & RULE_FLAG_STATE_NONE)) if (!disp_none && (flags & RULE_FLAG_STATE_NONE))
return; return;
virBufferVSprintf(buf, "%s", prefix); virBufferAdd(buf, prefix, -1);
printStringItems(buf, stateMatchMap, flags, ","); printStringItems(buf, stateMatchMap, flags, ",");
} }
...@@ -2699,7 +2699,7 @@ virNWIPAddressFormat(virBufferPtr buf, virSocketAddrPtr ipaddr) ...@@ -2699,7 +2699,7 @@ virNWIPAddressFormat(virBufferPtr buf, virSocketAddrPtr ipaddr)
char *output = virSocketFormatAddr(ipaddr); char *output = virSocketFormatAddr(ipaddr);
if (output) { if (output) {
virBufferVSprintf(buf, "%s", output); virBufferAdd(buf, output, -1);
VIR_FREE(output); VIR_FREE(output);
} }
} }
...@@ -2936,7 +2936,7 @@ virNWFilterDefFormat(virNWFilterDefPtr def) ...@@ -2936,7 +2936,7 @@ virNWFilterDefFormat(virNWFilterDefPtr def)
xml = virNWFilterEntryFormat(def->filterEntries[i]); xml = virNWFilterEntryFormat(def->filterEntries[i]);
if (!xml) if (!xml)
goto err_exit; goto err_exit;
virBufferVSprintf(&buf, "%s", xml); virBufferAdd(&buf, xml, -1);
VIR_FREE(xml); VIR_FREE(xml);
} }
......
/* /*
* Copyright (C) 2010-2011 Red Hat, Inc. * Copyright (C) 2010-2011 Red Hat, Inc.
* Copyright IBM Corp. 2009 * Copyright IBM Corp. 2009
...@@ -156,7 +155,7 @@ phypExec(LIBSSH2_SESSION *session, const char *cmd, int *exit_status, ...@@ -156,7 +155,7 @@ phypExec(LIBSSH2_SESSION *session, const char *cmd, int *exit_status,
rc = libssh2_channel_read(channel, buffer, buffer_size); rc = libssh2_channel_read(channel, buffer, buffer_size);
if (rc > 0) { if (rc > 0) {
bytecount += rc; bytecount += rc;
virBufferVSprintf(&tex_ret, "%s", buffer); virBufferAdd(&tex_ret, buffer, -1);
} }
} }
while (rc > 0); while (rc > 0);
...@@ -494,7 +493,7 @@ phypUUIDTable_Push(virConnectPtr conn) ...@@ -494,7 +493,7 @@ phypUUIDTable_Push(virConnectPtr conn)
char *remote_file = NULL; char *remote_file = NULL;
if (conn->uri->user != NULL) { if (conn->uri->user != NULL) {
virBufferVSprintf(&username, "%s", conn->uri->user); virBufferAdd(&username, conn->uri->user, -1);
if (virBufferError(&username)) { if (virBufferError(&username)) {
virBufferFreeAndReset(&username); virBufferFreeAndReset(&username);
...@@ -711,7 +710,7 @@ phypUUIDTable_Pull(virConnectPtr conn) ...@@ -711,7 +710,7 @@ phypUUIDTable_Pull(virConnectPtr conn)
char *remote_file = NULL; char *remote_file = NULL;
if (conn->uri->user != NULL) { if (conn->uri->user != NULL) {
virBufferVSprintf(&username, "%s", conn->uri->user); virBufferAdd(&username, conn->uri->user, -1);
if (virBufferError(&username)) { if (virBufferError(&username)) {
virBufferFreeAndReset(&username); virBufferFreeAndReset(&username);
......
...@@ -1798,8 +1798,7 @@ qemuBuildWatchdogDevStr(virDomainWatchdogDefPtr dev, ...@@ -1798,8 +1798,7 @@ qemuBuildWatchdogDevStr(virDomainWatchdogDefPtr dev,
goto error; goto error;
} }
virBufferVSprintf(&buf, "%s", model); virBufferVSprintf(&buf, "%s,id=%s", model, dev->info.alias);
virBufferVSprintf(&buf, ",id=%s", dev->info.alias);
if (qemuBuildDeviceAddressStr(&buf, &dev->info, qemuCaps) < 0) if (qemuBuildDeviceAddressStr(&buf, &dev->info, qemuCaps) < 0)
goto error; goto error;
...@@ -1845,10 +1844,9 @@ qemuBuildUSBInputDevStr(virDomainInputDefPtr dev) ...@@ -1845,10 +1844,9 @@ qemuBuildUSBInputDevStr(virDomainInputDefPtr dev)
{ {
virBuffer buf = VIR_BUFFER_INITIALIZER; virBuffer buf = VIR_BUFFER_INITIALIZER;
virBufferVSprintf(&buf, "%s", virBufferVSprintf(&buf, "%s,id=%s",
dev->type == VIR_DOMAIN_INPUT_TYPE_MOUSE ? dev->type == VIR_DOMAIN_INPUT_TYPE_MOUSE ?
"usb-mouse" : "usb-tablet"); "usb-mouse" : "usb-tablet", dev->info.alias);
virBufferVSprintf(&buf, ",id=%s", dev->info.alias);
if (virBufferError(&buf)) { if (virBufferError(&buf)) {
virReportOOMError(); virReportOOMError();
...@@ -1884,8 +1882,7 @@ qemuBuildSoundDevStr(virDomainSoundDefPtr sound, ...@@ -1884,8 +1882,7 @@ qemuBuildSoundDevStr(virDomainSoundDefPtr sound,
else if (STREQ(model, "ich6")) else if (STREQ(model, "ich6"))
model = "intel-hda"; model = "intel-hda";
virBufferVSprintf(&buf, "%s", model); virBufferVSprintf(&buf, "%s,id=%s", model, sound->info.alias);
virBufferVSprintf(&buf, ",id=%s", sound->info.alias);
if (qemuBuildDeviceAddressStr(&buf, &sound->info, qemuCaps) < 0) if (qemuBuildDeviceAddressStr(&buf, &sound->info, qemuCaps) < 0)
goto error; goto error;
...@@ -1908,10 +1905,8 @@ qemuBuildSoundCodecStr(virDomainSoundDefPtr sound, ...@@ -1908,10 +1905,8 @@ qemuBuildSoundCodecStr(virDomainSoundDefPtr sound,
virBuffer buf = VIR_BUFFER_INITIALIZER; virBuffer buf = VIR_BUFFER_INITIALIZER;
int cad = 0; int cad = 0;
virBufferVSprintf(&buf, "%s", codec); virBufferVSprintf(&buf, "%s,id=%s-codec%d,bus=%s.0,cad=%d",
virBufferVSprintf(&buf, ",id=%s-codec%d", sound->info.alias, cad); codec, sound->info.alias, cad, sound->info.alias, cad);
virBufferVSprintf(&buf, ",bus=%s.0", sound->info.alias);
virBufferVSprintf(&buf, ",cad=%d", cad);
if (virBufferError(&buf)) { if (virBufferError(&buf)) {
virReportOOMError(); virReportOOMError();
...@@ -1938,8 +1933,7 @@ qemuBuildVideoDevStr(virDomainVideoDefPtr video, ...@@ -1938,8 +1933,7 @@ qemuBuildVideoDevStr(virDomainVideoDefPtr video,
goto error; goto error;
} }
virBufferVSprintf(&buf, "%s", model); virBufferVSprintf(&buf, "%s,id=%s", model, video->info.alias);
virBufferVSprintf(&buf, ",id=%s", video->info.alias);
if (video->type == VIR_DOMAIN_VIDEO_TYPE_QXL) { if (video->type == VIR_DOMAIN_VIDEO_TYPE_QXL) {
if (video->vram > (UINT_MAX / 1024)) { if (video->vram > (UINT_MAX / 1024)) {
...@@ -2572,7 +2566,7 @@ qemuBuildCpuArgStr(const struct qemud_driver *driver, ...@@ -2572,7 +2566,7 @@ qemuBuildCpuArgStr(const struct qemud_driver *driver,
goto cleanup; goto cleanup;
*hasHwVirt = hasSVM > 0 ? true : false; *hasHwVirt = hasSVM > 0 ? true : false;
virBufferVSprintf(&buf, "%s", guest->model); virBufferAdd(&buf, guest->model, -1);
for (i = 0; i < guest->nfeatures; i++) { for (i = 0; i < guest->nfeatures; i++) {
char sign; char sign;
if (guest->features[i].policy == VIR_CPU_FEATURE_DISABLE) if (guest->features[i].policy == VIR_CPU_FEATURE_DISABLE)
...@@ -3128,7 +3122,7 @@ qemuBuildCommandLine(virConnectPtr conn, ...@@ -3128,7 +3122,7 @@ qemuBuildCommandLine(virConnectPtr conn,
else if (def->os.bootmenu == VIR_DOMAIN_BOOT_MENU_DISABLED) else if (def->os.bootmenu == VIR_DOMAIN_BOOT_MENU_DISABLED)
virBufferVSprintf(&boot_buf, "order=%s,menu=off", boot); virBufferVSprintf(&boot_buf, "order=%s,menu=off", boot);
} else { } else {
virBufferVSprintf(&boot_buf, "%s", boot); virBufferAdd(&boot_buf, boot, -1);
} }
virCommandAddArgBuffer(cmd, &boot_buf); virCommandAddArgBuffer(cmd, &boot_buf);
...@@ -3291,8 +3285,7 @@ qemuBuildCommandLine(virConnectPtr conn, ...@@ -3291,8 +3285,7 @@ qemuBuildCommandLine(virConnectPtr conn,
host->name, host->name,
host->port); host->port);
} else { } else {
virBufferVSprintf(&rbd_hosts, "%s", virBufferAdd(&rbd_hosts, host->name, -1);
host->name);
} }
} }
} }
...@@ -3414,8 +3407,7 @@ qemuBuildCommandLine(virConnectPtr conn, ...@@ -3414,8 +3407,7 @@ qemuBuildCommandLine(virConnectPtr conn,
host->name, host->name,
host->port); host->port);
} else { } else {
virBufferVSprintf(&rbd_hosts, "%s", virBufferAdd(&rbd_hosts, host->name, -1);
host->name);
} }
} }
break; break;
......
...@@ -1204,7 +1204,7 @@ main(int argc, char **argv) ...@@ -1204,7 +1204,7 @@ main(int argc, char **argv)
virBufferVSprintf(&buf, " \"%s/run/libvirt/**/%s.pid\" rwk,\n", virBufferVSprintf(&buf, " \"%s/run/libvirt/**/%s.pid\" rwk,\n",
LOCALSTATEDIR, ctl->def->name); LOCALSTATEDIR, ctl->def->name);
if (ctl->files) if (ctl->files)
virBufferVSprintf(&buf, "%s", ctl->files); virBufferAdd(&buf, ctl->files, -1);
} }
if (virBufferError(&buf)) { if (virBufferError(&buf)) {
......
/* /*
* sexpr.c : S-Expression routines to communicate with the Xen Daemon * sexpr.c : S-Expression routines to communicate with the Xen Daemon
* *
* Copyright (C) 2010 Red Hat, Inc. * Copyright (C) 2010-2011 Red Hat, Inc.
* Copyright (C) 2005 Anthony Liguori <aliguori@us.ibm.com> * Copyright (C) 2005 Anthony Liguori <aliguori@us.ibm.com>
* *
* This file is subject to the terms and conditions of the GNU Lesser General * This file is subject to the terms and conditions of the GNU Lesser General
...@@ -234,7 +234,7 @@ sexpr2string(const struct sexpr *sexpr, virBufferPtr buffer) ...@@ -234,7 +234,7 @@ sexpr2string(const struct sexpr *sexpr, virBufferPtr buffer)
strchr(sexpr->u.value, '(')) strchr(sexpr->u.value, '('))
virBufferVSprintf(buffer, "'%s'", sexpr->u.value); virBufferVSprintf(buffer, "'%s'", sexpr->u.value);
else else
virBufferVSprintf(buffer, "%s", sexpr->u.value); virBufferAdd(buffer, sexpr->u.value, -1);
break; break;
case SEXPR_NIL: case SEXPR_NIL:
......
...@@ -487,13 +487,11 @@ xend_op_ext(virConnectPtr xend, const char *path, const char *key, va_list ap) ...@@ -487,13 +487,11 @@ xend_op_ext(virConnectPtr xend, const char *path, const char *key, va_list ap)
while (k) { while (k) {
v = va_arg(ap, const char *); v = va_arg(ap, const char *);
virBufferVSprintf(&buf, "%s", k); virBufferVSprintf(&buf, "%s=%s", k, v);
virBufferVSprintf(&buf, "%s", "=");
virBufferVSprintf(&buf, "%s", v);
k = va_arg(ap, const char *); k = va_arg(ap, const char *);
if (k) if (k)
virBufferVSprintf(&buf, "%s", "&"); virBufferAddChar(&buf, '&');
} }
if (virBufferError(&buf)) { if (virBufferError(&buf)) {
......
...@@ -1514,7 +1514,7 @@ xenFormatSxprChr(virDomainChrDefPtr def, ...@@ -1514,7 +1514,7 @@ xenFormatSxprChr(virDomainChrDefPtr def,
case VIR_DOMAIN_CHR_TYPE_STDIO: case VIR_DOMAIN_CHR_TYPE_STDIO:
case VIR_DOMAIN_CHR_TYPE_VC: case VIR_DOMAIN_CHR_TYPE_VC:
case VIR_DOMAIN_CHR_TYPE_PTY: case VIR_DOMAIN_CHR_TYPE_PTY:
virBufferVSprintf(buf, "%s", type); virBufferAdd(buf, type, -1);
break; break;
case VIR_DOMAIN_CHR_TYPE_FILE: case VIR_DOMAIN_CHR_TYPE_FILE:
......
...@@ -1115,13 +1115,13 @@ static int xenFormatXMDisk(virConfValuePtr list, ...@@ -1115,13 +1115,13 @@ static int xenFormatXMDisk(virConfValuePtr list,
goto cleanup; goto cleanup;
} }
} }
virBufferVSprintf(&buf, "%s", disk->src); virBufferAdd(&buf, disk->src, -1);
} }
virBufferAddLit(&buf, ","); virBufferAddLit(&buf, ",");
if (hvm && xendConfigVersion == 1) if (hvm && xendConfigVersion == 1)
virBufferAddLit(&buf, "ioemu:"); virBufferAddLit(&buf, "ioemu:");
virBufferVSprintf(&buf, "%s", disk->dst); virBufferAdd(&buf, disk->dst, -1);
if (disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM) if (disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM)
virBufferAddLit(&buf, ":cdrom"); virBufferAddLit(&buf, ":cdrom");
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册