From nobody Sat Feb 7 09:36:35 2026 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 1498140207823690.0798501632266; Thu, 22 Jun 2017 07:03:27 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7CD537F40D; Thu, 22 Jun 2017 14:03:21 +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 5367A6062E; Thu, 22 Jun 2017 14:03:21 +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 109DA1853E3C; Thu, 22 Jun 2017 14:03:12 +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 v5ME2vWZ004529 for ; Thu, 22 Jun 2017 10:02:57 -0400 Received: by smtp.corp.redhat.com (Postfix) id 6E0EA5D969; Thu, 22 Jun 2017 14:02:57 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-116-36.phx2.redhat.com [10.3.116.36]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2DAC95D960 for ; Thu, 22 Jun 2017 14:02:57 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 7CD537F40D Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx01.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 7CD537F40D From: John Ferlan To: libvir-list@redhat.com Date: Thu, 22 Jun 2017 10:02:43 -0400 Message-Id: <20170622140246.31777-14-jferlan@redhat.com> In-Reply-To: <20170622140246.31777-1-jferlan@redhat.com> References: <20170622140246.31777-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3 13/16] util: Introduce virObjectLookupHashSearch 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.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Thu, 22 Jun 2017 14:03:22 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" A common object API wrapper to use the virHashSearch API to search the specified LookupHash for specific data defined in the @opaque parameter. Once data is found, the search would end and the LookupKeys object that is represented is returned locked with it's reference count incremented. It is up to the caller to unlock and lower the refcnt once done with the object and of course handle a NULL return indicating no object found. Signed-off-by: John Ferlan --- src/libvirt_private.syms | 1 + src/util/virobject.c | 38 ++++++++++++++++++++++++++++++++++++++ src/util/virobject.h | 6 ++++++ 3 files changed, 45 insertions(+) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index f783fec..2c4296a 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -2293,6 +2293,7 @@ virObjectLookupHashGetName; virObjectLookupHashGetUUID; virObjectLookupHashNew; virObjectLookupHashRemove; +virObjectLookupHashSearch; virObjectLookupKeysGetName; virObjectLookupKeysGetUUID; virObjectLookupKeysIsActive; diff --git a/src/util/virobject.c b/src/util/virobject.c index 8a994f5..60bc5b5 100644 --- a/src/util/virobject.c +++ b/src/util/virobject.c @@ -954,3 +954,41 @@ virObjectLookupHashForEach(void *tableobj, } return -1; } + + +/** + * virObjectLookupHashSearchName + * @tableobj: poolable hash table pointer to search + * @useUUID: boolean to use objsUUID + * @callback: callback function to handle the object specific checks + * @opaque: callback data + * + * Search the objsName hash table calling the specified @callback routine + * with an object and @opaque data in order to determine whether the searc= hed + * object is represented by the @opaque data. + * + * Returns locked/refcnt incremented object on success, NULL on failure + */ +virObjectLookupKeysPtr +virObjectLookupHashSearch(void *tableobj, + bool useUUID, + virHashSearcher callback, + void *opaque) +{ + virObjectLookupHashPtr tableObj =3D virObjectGetLookupHashObj(tableobj= ); + virObjectLookupKeysPtr obj; + + if (!tableObj) + return NULL; + + virObjectLock(tableObj); + obj =3D virHashSearch(useUUID ? tableObj->objsUUID : tableObj->objsNam= e, + callback, opaque); + virObjectRef(obj); + virObjectUnlock(tableObj); + + if (obj) + virObjectLock(obj); + + return obj; +} diff --git a/src/util/virobject.h b/src/util/virobject.h index 926c9d3..7e58e34 100644 --- a/src/util/virobject.h +++ b/src/util/virobject.h @@ -218,4 +218,10 @@ virObjectLookupHashForEach(void *tableobj, virHashIterator callback, virObjectLookupHashForEachDataPtr data); =20 +virObjectLookupKeysPtr +virObjectLookupHashSearch(void *tableobj, + bool useUUID, + virHashSearcher callback, + void *opaque); + #endif /* __VIR_OBJECT_H */ --=20 2.9.4 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list