[Libvirt-cim] [PATCH 1 of 3] Initialize libvirt at provider load

Heidi Eckhart heidieck at linux.vnet.ibm.com
Mon Nov 19 11:53:22 UTC 2007


Dan Smith wrote:
> This defines a function in the utility librart that does the libvirt
> initialization, and could be extended to do anything else we need in the
> future.  This replaces CMNoHook in all of the providers with a call to
> this function.
>   
Great :).
> Also in this patch is a change to all non-association providers to use
> a #define for the provider name to avoid duplication and improve
> readability.  I figured I'd make this cleanup while I was touching every
> MIStub in the tree.
>   
With sfcb and the #define approach the following error is thrown:
*** Inconsistent provider registration for Virt_ComputerSystemProvider (2)

This is caused by a non-resolved PN variable. PN is taken as "PN" and not resolved to the string as in the #define.
+CMInstanceMIStub(, PN, _BROKER, libvirt_cim_init());
I do not have that many experiences with macros, but the PN approach
did not work for me, no matter in how many different ways I tried it.
PN was not resolved to the string defined at the beginning of the
provider. So I had to switch back to 

-CMInstanceMIStub(, PN, _BROKER, libvirt_cim_init());
+CMInstanceMIStub(, Virt_ComputerSystemProvider, _BROKER, 
libvirt_cim_init());
Maybe someone else has some more experiences here and knows a solution ?

On the other hand, I sent out a patch to libcmpiutil some minutes ago, 
which adds a STD_InstanceMIStub macro to libcmpiutil.h . This macro 
avoids now the warning in the original stub macro, which removes the 
responsibility from each provider to define it by itself. The patches 
below show the difference (first one is yours with PN approach, second 
one is removing the PN approach and using STD_InstanceMIStub macro). Now 
that you touched each MI stub, this might also be a good point in time 
to resolve this (now very old ;) ... sorry for my delay) problem.

> diff -r bb9245e8f41c -r f6c11dd07703 src/Virt_ComputerSystem.c
> --- a/src/Virt_ComputerSystem.c	Fri Nov 16 10:22:13 2007 -0800
> +++ b/src/Virt_ComputerSystem.c	Fri Nov 16 12:24:53 2007 -0800
> @@ -37,6 +37,8 @@
>
>  #include "Virt_ComputerSystem.h"
>
> +#define PN Virt_ComputerSystemProvider
> +
>  const static CMPIBroker *_BROKER;
>
>  enum CIM_state {
> @@ -684,11 +686,11 @@ static CMPIStatus state_change(CMPIMetho
>
>  /* Avoid a warning in the stub macro below */
>  CMPIInstanceMI *
> -Virt_ComputerSystemProvider_Create_InstanceMI(const CMPIBroker *,
> +PN_Create_InstanceMI(const CMPIBroker *,
>                                                const CMPIContext *,
>                                                CMPIStatus *rc);
>
> -CMInstanceMIStub(, Virt_ComputerSystemProvider, _BROKER, CMNoHook);
> +CMInstanceMIStub(, PN, _BROKER, libvirt_cim_init());
>
>  static struct method_handler RequestStateChange = {
>          .name = "RequestStateChange",
> @@ -704,11 +706,7 @@ static struct method_handler *my_handler
>          NULL
>  };
>
> -STDIM_MethodMIStub(,
> -                   Virt_ComputerSystemProvider,
> -                   _BROKER,
> -                   CMNoHook,
> -                   my_handlers);
> +STDIM_MethodMIStub(, PN, _BROKER, libvirt_cim_init(), my_handlers);
>
>  /*
>   * Local Variables:
>
>   

diff -r 599292e408aa src/Virt_ComputerSystem.c
--- a/src/Virt_ComputerSystem.c Fri Nov 16 12:24:59 2007 -0800
+++ b/src/Virt_ComputerSystem.c Mon Nov 19 12:41:48 2007 +0100
@@ -37,8 +37,6 @@
 
 #include "Virt_ComputerSystem.h"
 
-#define PN Virt_ComputerSystemProvider
-
 const static CMPIBroker *_BROKER;
 
 enum CIM_state {
@@ -681,13 +679,7 @@ static CMPIStatus state_change(CMPIMetho
         return s;
 }
 
-/* Avoid a warning in the stub macro below */
-CMPIInstanceMI *
-PN_Create_InstanceMI(const CMPIBroker *,
-                                              const CMPIContext *,
-                                              CMPIStatus *rc);
-
-CMInstanceMIStub(, PN, _BROKER, libvirt_cim_init());
+STD_InstanceMIStub(, Virt_ComputerSystemProvider, _BROKER, 
libvirt_cim_init());
 
 static struct method_handler RequestStateChange = {
         .name = "RequestStateChange",
@@ -703,7 +695,7 @@ static struct method_handler *my_handler
         NULL
 };
 
-STDIM_MethodMIStub(, PN, _BROKER, libvirt_cim_init(), my_handlers);
+STDIM_MethodMIStub(, Virt_ComputerSystemProvider, _BROKER, 
libvirt_cim_init(), my_handlers);
 
 /*
  * Local Variables:


-- 
Regards

Heidi Eckhart
Software Engineer
Linux Technology Center - Open Hypervisor

heidieck at linux.vnet.ibm.com

**************************************************
IBM Deutschland Entwicklung GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter
Geschaeftsfuehrung: Herbert Kircher
Sitz der Gesellschaft: Boeblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294




More information about the Libvirt-cim mailing list