staging: hv: Convert vmbus driver interface function pointer table to constant
authorHaiyang Zhang <haiyangz@microsoft.com>
Wed, 8 Sep 2010 20:29:45 +0000 (20:29 +0000)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 14 Sep 2010 23:27:12 +0000 (16:27 -0700)
Convert vmbus driver interface function pointer table to constant
The vmbus interface functions are assigned to a constant - vmbus_ops.

Because the vmbus interface function pointer table is converted to a
constant variable -- vmbus_ops, the function GetChannelInterface(),
VmbusGetChannelInterface() and pointer GetChannelInterface are no longer
in use. The deprecated function's work is done by the initialization of
the newly added constant variable vmbus_ops.

I created the new constant variable vmbus_ops and removed the deprecated
function pointer GetChannelInterface in one patch.

Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: Hank Janssen <hjanssen@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/hv/TODO
drivers/staging/hv/channel_interface.c
drivers/staging/hv/channel_interface.h
drivers/staging/hv/vmbus.c
drivers/staging/hv/vmbus_api.h
drivers/staging/hv/vmbus_drv.c

index 66a89c809dd3bf8f6665f815f3ee73619afafd9b..582fd4ab3f1e41abd95a42aa3dfacfcd7526d9d6 100644 (file)
@@ -2,8 +2,6 @@ TODO:
        - fix remaining checkpatch warnings and errors
        - audit the vmbus to verify it is working properly with the
          driver model
-       - convert vmbus driver interface function pointer tables
-          to constant, a.k.a vmbus_ops
        - see if the vmbus can be merged with the other virtual busses
          in the kernel
        - audit the network driver
index d9f51ac75eaa5071cfe1669446b3a165f149429a..3f6a1cb9cd8f78559a98637b3791a832b5894a2a 100644 (file)
@@ -97,20 +97,6 @@ static int IVmbusChannelTeardownGpadl(struct hv_device *device, u32 GpadlHandle)
 
 }
 
-void GetChannelInterface(struct vmbus_channel_interface *iface)
-{
-       iface->Open = IVmbusChannelOpen;
-       iface->Close    = IVmbusChannelClose;
-       iface->SendPacket = IVmbusChannelSendPacket;
-       iface->SendPacketPageBuffer = IVmbusChannelSendPacketPageBuffer;
-       iface->SendPacketMultiPageBuffer =
-                                       IVmbusChannelSendPacketMultiPageBuffer;
-       iface->RecvPacket = IVmbusChannelRecvPacket;
-       iface->RecvPacketRaw    = IVmbusChannelRecvPacketRaw;
-       iface->EstablishGpadl = IVmbusChannelEstablishGpadl;
-       iface->TeardownGpadl = IVmbusChannelTeardownGpadl;
-       iface->GetInfo = GetChannelInfo;
-}
 
 void GetChannelInfo(struct hv_device *device, struct hv_device_info *info)
 {
@@ -150,3 +136,18 @@ void GetChannelInfo(struct hv_device *device, struct hv_device_info *info)
        info->Outbound.BytesAvailToRead = debugInfo.Outbound.BytesAvailToRead;
        info->Outbound.BytesAvailToWrite = debugInfo.Outbound.BytesAvailToWrite;
 }
+
+
+/* vmbus interface function pointer table */
+const struct vmbus_channel_interface vmbus_ops = {
+       .Open = IVmbusChannelOpen,
+       .Close = IVmbusChannelClose,
+       .SendPacket = IVmbusChannelSendPacket,
+       .SendPacketPageBuffer = IVmbusChannelSendPacketPageBuffer,
+       .SendPacketMultiPageBuffer = IVmbusChannelSendPacketMultiPageBuffer,
+       .RecvPacket = IVmbusChannelRecvPacket,
+       .RecvPacketRaw  = IVmbusChannelRecvPacketRaw,
+       .EstablishGpadl = IVmbusChannelEstablishGpadl,
+       .TeardownGpadl = IVmbusChannelTeardownGpadl,
+       .GetInfo = GetChannelInfo,
+};
index 6acaf6ce2c48d2c3fe5c6771c77ed9b0c58722ee..ec882192c73e01a99b8b9dcde290f1db85f8f256 100644 (file)
@@ -27,8 +27,6 @@
 
 #include "vmbus_api.h"
 
-void GetChannelInterface(struct vmbus_channel_interface *ChannelInterface);
-
 void GetChannelInfo(struct hv_device *Device,
                    struct hv_device_info *DeviceInfo);
 
index ca1e18a620067869d9ca163a04e86e4d31923f4f..db2afa33eac71006028445615259d4f1e443cf1f 100644 (file)
@@ -60,14 +60,6 @@ static void VmbusGetChannelOffers(void)
        VmbusChannelRequestOffers();
 }
 
-/*
- * VmbusGetChannelInterface - Get the channel interface
- */
-static void VmbusGetChannelInterface(struct vmbus_channel_interface *Interface)
-{
-       GetChannelInterface(Interface);
-}
-
 /*
  * VmbusGetChannelInfo - Get the device info for the specified device object
  */
@@ -279,7 +271,6 @@ int VmbusInitialize(struct hv_driver *drv)
        driver->OnMsgDpc                = VmbusOnMsgDPC;
        driver->OnEventDpc              = VmbusOnEventDPC;
        driver->GetChannelOffers        = VmbusGetChannelOffers;
-       driver->GetChannelInterface     = VmbusGetChannelInterface;
        driver->GetChannelInfo          = VmbusGetChannelInfo;
 
        /* Hypervisor initialization...setup hypercall page..etc */
index 4275be3292ce760f7e70756721eeb87f6fea20fc..7f3d7dcb96a7212aa58632c126edac83422c4595 100644 (file)
@@ -129,6 +129,9 @@ struct vmbus_channel_interface {
        void (*GetInfo)(struct hv_device *dev, struct hv_device_info *devinfo);
 };
 
+extern const struct vmbus_channel_interface vmbus_ops;
+
+
 /* Base driver object */
 struct hv_driver {
        const char *name;
@@ -183,7 +186,6 @@ struct vmbus_driver {
        void (*OnEventDpc)(struct hv_driver *driver);
        void (*GetChannelOffers)(void);
 
-       void (*GetChannelInterface)(struct vmbus_channel_interface *i);
        void (*GetChannelInfo)(struct hv_device *dev,
                               struct hv_device_info *devinfo);
 };
index 092f02ed6be1cfdfedf24e5b22c13a5eae3fca64..ad298871d3f333782d30eaaab7a2e413cfefb6d8 100644 (file)
@@ -458,9 +458,7 @@ EXPORT_SYMBOL(vmbus_child_driver_unregister);
  */
 void vmbus_get_interface(struct vmbus_channel_interface *interface)
 {
-       struct vmbus_driver *vmbus_drv_obj = &g_vmbus_drv.drv_obj;
-
-       vmbus_drv_obj->GetChannelInterface(interface);
+       *interface = vmbus_ops;
 }
 EXPORT_SYMBOL(vmbus_get_interface);