From nobody Mon Feb 9 11:32:41 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1604009568; cv=none; d=zohomail.com; s=zohoarc; b=kDT5S/URH3//1SwT0F4CAgOxnF2+jeEKiSkDtK0cQzCp/PECqeuA5ThjSWxaRGAD0Z2OKz5dFbCnEES69Q4khi5xmFG1EKQZpdna2JCQQjaFNmG9s2IelJhGW9hF7T8fTjXPwNwwZfx2gdSKMZ8EynUrB+uvVrnlwg09w2U7Mb4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1604009568; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=1iU7FBW2AnSjr1/4AFTqBtTUMBpLm1nVKWMNcWb1Dvg=; b=Q1nNZ4AQoRah3LjcH76B7XmRcl2PAAZ6FuJ8/KY9ixyAzjtX63EP1n2l81vMZVsQIUSf6jVGBvhsn53hI5QHq3fYrSUt8Jo+Di56Koqb38eLhIyh/hodhxCr9X0VWTNAhOeWuEiSd6nHHL/zf91l4g4Tw9wffIMVadyODjBuwtQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1604009568083646.7844001978739; Thu, 29 Oct 2020 15:12:48 -0700 (PDT) Received: from localhost ([::1]:53796 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kYGA3-000748-1i for importer@patchew.org; Thu, 29 Oct 2020 18:12:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42538) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kYG16-0003R3-Ep for qemu-devel@nongnu.org; Thu, 29 Oct 2020 18:03:34 -0400 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:35649) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kYG12-0006a9-Ip for qemu-devel@nongnu.org; Thu, 29 Oct 2020 18:03:32 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-440-grCTXJQgOX-FnTOWGF5Kkg-1; Thu, 29 Oct 2020 18:03:23 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 5E3061018F7B for ; Thu, 29 Oct 2020 22:03:22 +0000 (UTC) Received: from localhost (ovpn-114-68.rdu2.redhat.com [10.10.114.68]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0C42B1002D48; Thu, 29 Oct 2020 22:03:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1604009007; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=1iU7FBW2AnSjr1/4AFTqBtTUMBpLm1nVKWMNcWb1Dvg=; b=UK7tChVO72EB83gdzZGlrUN127saJ059k3wMHsDK4XS2kSBby/yQyozmTEnr5kNKwAty9Q yVDgruQE09GU1+z7Y1erurrjs3fD8lIVE4qFk8+4ZflymxYwICckSYbFObWAatCneA5l5g ts9/FQH38v/TH9cDYdJnWfIWjYll8qI= X-MC-Unique: grCTXJQgOX-FnTOWGF5Kkg-1 From: Eduardo Habkost To: qemu-devel@nongnu.org Subject: [PATCH 13/36] qdev: Wrap getters and setters in separate helpers Date: Thu, 29 Oct 2020 18:02:23 -0400 Message-Id: <20201029220246.472693-14-ehabkost@redhat.com> In-Reply-To: <20201029220246.472693-1-ehabkost@redhat.com> References: <20201029220246.472693-1-ehabkost@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=ehabkost@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=ehabkost@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/29 01:47:28 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Daniel P. Berrange" , John Snow , Markus Armbruster , Igor Mammedov , Paolo Bonzini , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) We'll add extra code to the qdev property getters and setters, so add wrapper functions where additional actions can be performed. The new functions have a "static_prop_" prefix instead of "qdev_" because the code will eventually be moved outside qdev-properties.c, to common QOM code. Signed-off-by: Eduardo Habkost Reviewed-by: Marc-Andr=C3=A9 Lureau --- Cc: Paolo Bonzini Cc: "Daniel P. Berrang=C3=A9" Cc: Eduardo Habkost Cc: qemu-devel@nongnu.org --- hw/core/qdev-properties.c | 44 +++++++++++++++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 4 deletions(-) diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c index 5e010afdb8..aab9e65e97 100644 --- a/hw/core/qdev-properties.c +++ b/hw/core/qdev-properties.c @@ -45,6 +45,40 @@ void *qdev_get_prop_ptr(Object *obj, Property *prop) return ptr; } =20 +static void static_prop_get(Object *obj, Visitor *v, const char *name, + void *opaque, Error **errp) +{ + Property *prop =3D opaque; + return prop->info->get(obj, v, name, opaque, errp); +} + +/** + * static_prop_getter: Return getter function to be used for property + * + * Return value can be NULL if @info has no getter function. + */ +static ObjectPropertyAccessor *static_prop_getter(const PropertyInfo *info) +{ + return info->get ? static_prop_get : NULL; +} + +static void static_prop_set(Object *obj, Visitor *v, const char *name, + void *opaque, Error **errp) +{ + Property *prop =3D opaque; + return prop->info->set(obj, v, name, opaque, errp); +} + +/** + * static_prop_setter: Return setter function to be used for property + * + * Return value can be NULL if @info has not setter function. + */ +static ObjectPropertyAccessor *static_prop_setter(const PropertyInfo *info) +{ + return info->set ? static_prop_set : NULL; +} + void qdev_propinfo_get_enum(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { @@ -687,8 +721,8 @@ static void set_prop_arraylen(Object *obj, Visitor *v, = const char *name, assert(qdev_get_prop_ptr(obj, &arrayprop->prop) =3D=3D eltptr); object_property_add(obj, propname, arrayprop->prop.info->name, - arrayprop->prop.info->get, - arrayprop->prop.info->set, + static_prop_getter(arrayprop->prop.info), + static_prop_setter(arrayprop->prop.info), array_element_release, arrayprop); } @@ -929,7 +963,8 @@ void qdev_property_add_static(DeviceState *dev, Propert= y *prop) assert(!prop->info->create); =20 op =3D object_property_add(obj, prop->name, prop->info->name, - prop->info->get, prop->info->set, + static_prop_getter(prop->info), + static_prop_setter(prop->info), prop->info->release, prop); =20 @@ -955,7 +990,8 @@ static void qdev_class_add_property(DeviceClass *klass,= Property *prop) =20 op =3D object_class_property_add(oc, prop->name, prop->info->name, - prop->info->get, prop->info->set, + static_prop_getter(prop->info), + static_prop_setter(prop->info), prop->info->release, prop); if (prop->set_default) { --=20 2.28.0