Re: [libvirt PATCH v5 5/7] Add PCI VPD Capability Support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 9/27/21 3:30 PM, Dmitrii Shcherbakov wrote:
[...]
diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c
[...]
+
+static void
+virNodeDeviceCapVPDResourceFormat(virBuffer *buf, virPCIVPDResource *res)
+{
+    GEnumValue *resRype = NULL;
+    void (*resFormatFunc)(virBuffer *buf, virPCIVPDResource *res);
+
+    if (G_TYPE_CHECK_INSTANCE_TYPE(res, VIR_TYPE_PCI_VPD_STRING_RESOURCE)) {
+        resFormatFunc = virNodeDeviceCapVPDStringResourceFormat;
+    } else if (G_TYPE_CHECK_INSTANCE_TYPE(res, VIR_TYPE_PCI_VPD_KEYWORD_RESOURCE))  {
+        resFormatFunc = virNodeDeviceCapVPDKeywordResourceFormat;
+    } else {
+        /* Unexpected resource type. This should not happen unless the PCI(e) specs
+         * change and new resource types are introduced into util.virpcivpd. Either way,
+         * we can only return the control back to the caller here.
+         */
+        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+                       _("Unexpected VPD resource type encountered during formatting"));
+        return;
+    }
+    virBufferAdjustIndent(buf, 2);
+
+    resRype = virPCIVPDResourceGetResourceType(res);
+    virBufferEscapeString(buf, "<resource type='%s'>", resRype->value_nick);
+    /* Format the resource in a type-specific way. */
+    resFormatFunc(buf, res);

It's probably irrelevant since this will be mostly rewritten based on Dan's suggestions, but the resFormatFunc() pointer seems like an unnecessary complication - you could just move the if/else construct down to here and call the appropriate function directly.





[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux