From 9e795a5232e1888d46e22e05677d280a1056ceea Mon Sep 17 00:00:00 2001 From: Haiyang Zhang Date: Wed, 8 Sep 2010 20:29:45 +0000 Subject: [PATCH] staging: hv: Convert vmbus driver interface function pointer table to constant 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 Signed-off-by: Hank Janssen Signed-off-by: Greg Kroah-Hartman --- drivers/staging/hv/TODO | 2 -- drivers/staging/hv/channel_interface.c | 29 +++++++++++++------------- drivers/staging/hv/channel_interface.h | 2 -- drivers/staging/hv/vmbus.c | 9 -------- drivers/staging/hv/vmbus_api.h | 4 +++- drivers/staging/hv/vmbus_drv.c | 4 +--- 6 files changed, 19 insertions(+), 31 deletions(-) diff --git a/drivers/staging/hv/TODO b/drivers/staging/hv/TODO index 66a89c809dd3..582fd4ab3f1e 100644 --- a/drivers/staging/hv/TODO +++ b/drivers/staging/hv/TODO @@ -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 diff --git a/drivers/staging/hv/channel_interface.c b/drivers/staging/hv/channel_interface.c index d9f51ac75eaa..3f6a1cb9cd8f 100644 --- a/drivers/staging/hv/channel_interface.c +++ b/drivers/staging/hv/channel_interface.c @@ -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, +}; diff --git a/drivers/staging/hv/channel_interface.h b/drivers/staging/hv/channel_interface.h index 6acaf6ce2c48..ec882192c73e 100644 --- a/drivers/staging/hv/channel_interface.h +++ b/drivers/staging/hv/channel_interface.h @@ -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); diff --git a/drivers/staging/hv/vmbus.c b/drivers/staging/hv/vmbus.c index ca1e18a62006..db2afa33eac7 100644 --- a/drivers/staging/hv/vmbus.c +++ b/drivers/staging/hv/vmbus.c @@ -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 */ diff --git a/drivers/staging/hv/vmbus_api.h b/drivers/staging/hv/vmbus_api.h index 4275be3292ce..7f3d7dcb96a7 100644 --- a/drivers/staging/hv/vmbus_api.h +++ b/drivers/staging/hv/vmbus_api.h @@ -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); }; diff --git a/drivers/staging/hv/vmbus_drv.c b/drivers/staging/hv/vmbus_drv.c index 092f02ed6be1..ad298871d3f3 100644 --- a/drivers/staging/hv/vmbus_drv.c +++ b/drivers/staging/hv/vmbus_drv.c @@ -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); -- GitLab