From nobody Fri May 16 03:38:27 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1498759478817226.08357101404488; Thu, 29 Jun 2017 11:04:38 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 4EF8AF6259; Thu, 29 Jun 2017 18:04:29 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D92388E238; Thu, 29 Jun 2017 18:04:28 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id EF6181853E33; Thu, 29 Jun 2017 18:04:27 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v5TI4GX7006703 for ; Thu, 29 Jun 2017 14:04:16 -0400 Received: by smtp.corp.redhat.com (Postfix) id 5C1A6179F1; Thu, 29 Jun 2017 18:04:16 +0000 (UTC) Received: from inaba.usersys.redhat.com (unknown [10.43.2.82]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B2E34179DB for ; Thu, 29 Jun 2017 18:04:15 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 4EF8AF6259 Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 4EF8AF6259 From: Andrea Bolognani To: libvir-list@redhat.com Date: Thu, 29 Jun 2017 20:03:58 +0200 Message-Id: <1498759443-10136-6-git-send-email-abologna@redhat.com> In-Reply-To: <1498759443-10136-1-git-send-email-abologna@redhat.com> References: <1498759443-10136-1-git-send-email-abologna@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 05/10] conf: Move some virDomainDeviceInfo functions X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Thu, 29 Jun 2017 18:04:30 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" The virDomainDeviceInfo struct is defined in device_conf, so generic functions that operate on it should also be defined there rather than in domain_conf. Signed-off-by: Andrea Bolognani --- src/conf/device_conf.c | 109 ++++++++++++++++++++++++++++++++++++++++++++ src/conf/device_conf.h | 8 ++++ src/conf/domain_conf.c | 114 -------------------------------------------= ---- src/conf/domain_conf.h | 7 --- src/libvirt_private.syms | 4 +- 5 files changed, 119 insertions(+), 123 deletions(-) diff --git a/src/conf/device_conf.c b/src/conf/device_conf.c index f58b9d0..4644580 100644 --- a/src/conf/device_conf.c +++ b/src/conf/device_conf.c @@ -32,6 +32,115 @@ =20 #define VIR_FROM_THIS VIR_FROM_DEVICE =20 +void +virDomainDeviceInfoClear(virDomainDeviceInfoPtr info) +{ + VIR_FREE(info->alias); + memset(&info->addr, 0, sizeof(info->addr)); + info->type =3D VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE; + VIR_FREE(info->romfile); + VIR_FREE(info->loadparm); +} + +int +virDomainDeviceInfoCopy(virDomainDeviceInfoPtr dst, + virDomainDeviceInfoPtr src) +{ + /* Assume that dst is already cleared */ + + /* first a shallow copy of *everything* */ + *dst =3D *src; + + /* then redo the two fields that are pointers */ + dst->alias =3D NULL; + dst->romfile =3D NULL; + + if (VIR_STRDUP(dst->alias, src->alias) < 0 || + VIR_STRDUP(dst->romfile, src->romfile) < 0) + return -1; + return 0; +} + +void +virDomainDeviceInfoFree(virDomainDeviceInfoPtr info) +{ + if (info) { + virDomainDeviceInfoClear(info); + VIR_FREE(info); + } +} + +bool +virDomainDeviceInfoAddressIsEqual(const virDomainDeviceInfo *a, + const virDomainDeviceInfo *b) +{ + if (a->type !=3D b->type) + return false; + + switch ((virDomainDeviceAddressType) a->type) { + case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE: + case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_LAST: + /* address types below don't have any specific data */ + case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_MMIO: + case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_S390: + break; + + case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI: + /* the 'multi' field shouldn't be checked */ + if (a->addr.pci.domain !=3D b->addr.pci.domain || + a->addr.pci.bus !=3D b->addr.pci.bus || + a->addr.pci.slot !=3D b->addr.pci.slot || + a->addr.pci.function !=3D b->addr.pci.function) + return false; + break; + + case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE: + if (memcmp(&a->addr.drive, &b->addr.drive, sizeof(a->addr.drive))) + return false; + break; + + case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_SERIAL: + if (memcmp(&a->addr.vioserial, &b->addr.vioserial, sizeof(a->addr.= vioserial))) + return false; + break; + + case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCID: + if (memcmp(&a->addr.ccid, &b->addr.ccid, sizeof(a->addr.ccid))) + return false; + break; + + case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_USB: + if (memcmp(&a->addr.usb, &b->addr.usb, sizeof(a->addr.usb))) + return false; + break; + + case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO: + if (memcmp(&a->addr.spaprvio, &b->addr.spaprvio, sizeof(a->addr.sp= aprvio))) + return false; + break; + + case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW: + /* the 'assigned' field denotes that the address was generated */ + if (a->addr.ccw.cssid !=3D b->addr.ccw.cssid || + a->addr.ccw.ssid !=3D b->addr.ccw.ssid || + a->addr.ccw.devno !=3D b->addr.ccw.devno) + return false; + break; + + case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_ISA: + if (memcmp(&a->addr.isa, &b->addr.isa, sizeof(a->addr.isa))) + return false; + break; + + case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DIMM: + if (memcmp(&a->addr.dimm, &b->addr.dimm, sizeof(a->addr.dimm))) + return false; + break; + } + + return true; +} + int virPCIDeviceAddressIsValid(virPCIDeviceAddressPtr addr, bool report) { diff --git a/src/conf/device_conf.h b/src/conf/device_conf.h index 48782be..53abe1b 100644 --- a/src/conf/device_conf.h +++ b/src/conf/device_conf.h @@ -170,6 +170,14 @@ struct _virDomainDeviceInfo { char *loadparm; }; =20 +void virDomainDeviceInfoClear(virDomainDeviceInfoPtr info); +int virDomainDeviceInfoCopy(virDomainDeviceInfoPtr dst, + virDomainDeviceInfoPtr src); +void virDomainDeviceInfoFree(virDomainDeviceInfoPtr info); + +bool virDomainDeviceInfoAddressIsEqual(const virDomainDeviceInfo *a, + const virDomainDeviceInfo *b) + ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK; =20 int virPCIDeviceAddressIsValid(virPCIDeviceAddressPtr addr, bool report); diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index fdb919d..6a89fab 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -1324,27 +1324,6 @@ bool virDomainObjTaint(virDomainObjPtr obj, =20 =20 static void -virDomainDeviceInfoClear(virDomainDeviceInfoPtr info) -{ - VIR_FREE(info->alias); - memset(&info->addr, 0, sizeof(info->addr)); - info->type =3D VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE; - VIR_FREE(info->romfile); - VIR_FREE(info->loadparm); -} - - -static void -virDomainDeviceInfoFree(virDomainDeviceInfoPtr info) -{ - if (info) { - virDomainDeviceInfoClear(info); - VIR_FREE(info); - } -} - - -static void virDomainGraphicsAuthDefClear(virDomainGraphicsAuthDefPtr def) { if (!def) @@ -3495,77 +3474,6 @@ virDomainDeviceInfoNeedsFormat(virDomainDeviceInfoPt= r info, unsigned int flags) return false; } =20 -bool -virDomainDeviceInfoAddressIsEqual(const virDomainDeviceInfo *a, - const virDomainDeviceInfo *b) -{ - if (a->type !=3D b->type) - return false; - - switch ((virDomainDeviceAddressType) a->type) { - case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE: - case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_LAST: - /* address types below don't have any specific data */ - case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_MMIO: - case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_S390: - break; - - case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI: - /* the 'multi' field shouldn't be checked */ - if (a->addr.pci.domain !=3D b->addr.pci.domain || - a->addr.pci.bus !=3D b->addr.pci.bus || - a->addr.pci.slot !=3D b->addr.pci.slot || - a->addr.pci.function !=3D b->addr.pci.function) - return false; - break; - - case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE: - if (memcmp(&a->addr.drive, &b->addr.drive, sizeof(a->addr.drive))) - return false; - break; - - case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_SERIAL: - if (memcmp(&a->addr.vioserial, &b->addr.vioserial, sizeof(a->addr.= vioserial))) - return false; - break; - - case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCID: - if (memcmp(&a->addr.ccid, &b->addr.ccid, sizeof(a->addr.ccid))) - return false; - break; - - case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_USB: - if (memcmp(&a->addr.usb, &b->addr.usb, sizeof(a->addr.usb))) - return false; - break; - - case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO: - if (memcmp(&a->addr.spaprvio, &b->addr.spaprvio, sizeof(a->addr.sp= aprvio))) - return false; - break; - - case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW: - /* the 'assigned' field denotes that the address was generated */ - if (a->addr.ccw.cssid !=3D b->addr.ccw.cssid || - a->addr.ccw.ssid !=3D b->addr.ccw.ssid || - a->addr.ccw.devno !=3D b->addr.ccw.devno) - return false; - break; - - case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_ISA: - if (memcmp(&a->addr.isa, &b->addr.isa, sizeof(a->addr.isa))) - return false; - break; - - case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DIMM: - if (memcmp(&a->addr.dimm, &b->addr.dimm, sizeof(a->addr.dimm))) - return false; - break; - } - - return true; -} - =20 static int virDomainDefHasDeviceAddressIterator(virDomainDefPtr def ATTRIBUTE_UNUSED, @@ -3583,28 +3491,6 @@ virDomainDefHasDeviceAddressIterator(virDomainDefPtr= def ATTRIBUTE_UNUSED, } =20 =20 -int -virDomainDeviceInfoCopy(virDomainDeviceInfoPtr dst, - virDomainDeviceInfoPtr src) -{ - /* Assume that dst is already cleared */ - - /* first a shallow copy of *everything* */ - *dst =3D *src; - - /* then copy whatever's left */ - dst->alias =3D NULL; - dst->romfile =3D NULL; - dst->loadparm =3D NULL; - - if (VIR_STRDUP(dst->alias, src->alias) < 0 || - VIR_STRDUP(dst->romfile, src->romfile) < 0 || - VIR_STRDUP(dst->loadparm, src->loadparm) < 0) - return -1; - return 0; -} - - static bool virDomainSkipBackcompatConsole(virDomainDefPtr def, size_t idx, diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index cbcffa4..00d0d65 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2699,8 +2699,6 @@ virDomainDeviceDefPtr virDomainDeviceDefCopy(virDomai= nDeviceDefPtr src, int virDomainDeviceAddressIsValid(virDomainDeviceInfoPtr info, int type); virDomainDeviceInfoPtr virDomainDeviceGetInfo(virDomainDeviceDefPtr device= ); -int virDomainDeviceInfoCopy(virDomainDeviceInfoPtr dst, - virDomainDeviceInfoPtr src); void virDomainTPMDefFree(virDomainTPMDefPtr def); =20 typedef int (*virDomainDeviceInfoCallback)(virDomainDefPtr def, @@ -3323,11 +3321,6 @@ virDomainGetBlkioParametersAssignFromDef(virDomainDe= fPtr def, int *nparams, int maxparams); =20 -bool -virDomainDeviceInfoAddressIsEqual(const virDomainDeviceInfo *a, - const virDomainDeviceInfo *b) - ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK; - int virDomainDiskSetBlockIOTune(virDomainDiskDefPtr disk, virDomainBlockIoTuneInfo *info); =20 diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index e92fe52..178aefc 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -89,6 +89,8 @@ virCPUModeTypeToString; =20 =20 # conf/device_conf.h +virDomainDeviceInfoAddressIsEqual; +virDomainDeviceInfoCopy; virInterfaceLinkFormat; virInterfaceLinkParseXML; virPCIDeviceAddressEqual; @@ -285,8 +287,6 @@ virDomainDeviceDefFree; virDomainDeviceDefParse; virDomainDeviceFindControllerModel; virDomainDeviceGetInfo; -virDomainDeviceInfoAddressIsEqual; -virDomainDeviceInfoCopy; virDomainDeviceInfoIterate; virDomainDeviceTypeToString; virDomainDiskBusTypeToString; --=20 2.7.5 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list