Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 162279
b: refs/heads/master
c: 7498261
h: refs/heads/master
i:
  162277: 979d473
  162275: ce79a1c
  162271: 7303ef8
v: v3
  • Loading branch information
Greg Kroah-Hartman committed Sep 15, 2009
1 parent b28dfac commit 4158e55
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 100 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ce9ea4cf49b0ba4c67be71550d6cd955b718e967
refs/heads/master: 74982610d08e7687c435fa6f07245fdfb2362f6d
2 changes: 1 addition & 1 deletion trunk/drivers/staging/hv/ChannelInterface.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
static int IVmbusChannelOpen(struct hv_device *device, u32 SendBufferSize,
u32 RecvRingBufferSize, void *UserData,
u32 UserDataLen,
VMBUS_CHANNEL_CALLBACK ChannelCallback,
void (*ChannelCallback)(void *context),
void *Context)
{
return VmbusChannelOpen(device->context, SendBufferSize,
Expand Down
140 changes: 42 additions & 98 deletions trunk/drivers/staging/hv/VmbusApi.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,72 +58,6 @@ struct hv_multipage_buffer {
struct hv_driver;
struct hv_device;

/* All drivers */
typedef int (*PFN_ON_DEVICEADD)(struct hv_device *Device,
void *AdditionalInfo);
typedef int (*PFN_ON_DEVICEREMOVE)(struct hv_device *Device);
typedef char** (*PFN_ON_GETDEVICEIDS)(void);
typedef void (*PFN_ON_CLEANUP)(struct hv_driver *Driver);

/* Vmbus extensions */
typedef int (*PFN_ON_ISR)(struct hv_driver *drv);
typedef void (*PFN_ON_DPC)(struct hv_driver *drv);
typedef void (*PFN_GET_CHANNEL_OFFERS)(void);

typedef struct hv_device * (*PFN_ON_CHILDDEVICE_CREATE)
(struct hv_guid *DeviceType,
struct hv_guid *DeviceInstance,
void *Context);
typedef void (*PFN_ON_CHILDDEVICE_DESTROY)(struct hv_device *Device);
typedef int (*PFN_ON_CHILDDEVICE_ADD)(struct hv_device *RootDevice,
struct hv_device *ChildDevice);
typedef void (*PFN_ON_CHILDDEVICE_REMOVE)(struct hv_device *Device);

/* Vmbus channel interface */
typedef void (*VMBUS_CHANNEL_CALLBACK)(void *context);
typedef int (*VMBUS_CHANNEL_OPEN)(struct hv_device *Device, u32 SendBufferSize,
u32 RecvRingBufferSize,
void *UserData,
u32 UserDataLen,
VMBUS_CHANNEL_CALLBACK ChannelCallback,
void *Context);
typedef void (*VMBUS_CHANNEL_CLOSE)(struct hv_device *Device);
typedef int (*VMBUS_CHANNEL_SEND_PACKET)(struct hv_device *Device,
const void *Buffer,
u32 BufferLen,
u64 RequestId,
u32 Type,
u32 Flags);
typedef int (*VMBUS_CHANNEL_SEND_PACKET_PAGEBUFFER)(struct hv_device *Device,
struct hv_page_buffer PageBuffers[],
u32 PageCount,
void *Buffer,
u32 BufferLen,
u64 RequestId);
typedef int (*VMBUS_CHANNEL_SEND_PACKET_MULTIPAGEBUFFER)
(struct hv_device *Device,
struct hv_multipage_buffer *mpb,
void *Buffer,
u32 BufferLen,
u64 RequestId);
typedef int (*VMBUS_CHANNEL_RECV_PACKET)(struct hv_device *Device,
void *Buffer,
u32 BufferLen,
u32 *BufferActualLen,
u64 *RequestId);
typedef int(*VMBUS_CHANNEL_RECV_PACKET_PAW)(struct hv_device *Device,
void *Buffer,
u32 BufferLen,
u32 *BufferActualLen,
u64 *RequestId);
typedef int (*VMBUS_CHANNEL_ESTABLISH_GPADL)(struct hv_device *Device,
void *Buffer,
u32 BufferLen,
u32 *GpadlHandle);
typedef int (*VMBUS_CHANNEL_TEARDOWN_GPADL)(struct hv_device *Device,
u32 GpadlHandle);


struct hv_dev_port_info {
u32 InterruptMask;
u32 ReadIndex;
Expand All @@ -150,37 +84,43 @@ struct hv_device_info {
struct hv_dev_port_info Outbound;
};

typedef void (*VMBUS_GET_CHANNEL_INFO)(struct hv_device *Device,
struct hv_device_info *DeviceInfo);

struct vmbus_channel_interface {
VMBUS_CHANNEL_OPEN Open;
VMBUS_CHANNEL_CLOSE Close;
VMBUS_CHANNEL_SEND_PACKET SendPacket;
VMBUS_CHANNEL_SEND_PACKET_PAGEBUFFER SendPacketPageBuffer;
VMBUS_CHANNEL_SEND_PACKET_MULTIPAGEBUFFER SendPacketMultiPageBuffer;
VMBUS_CHANNEL_RECV_PACKET RecvPacket;
VMBUS_CHANNEL_RECV_PACKET_PAW RecvPacketRaw;
VMBUS_CHANNEL_ESTABLISH_GPADL EstablishGpadl;
VMBUS_CHANNEL_TEARDOWN_GPADL TeardownGpadl;
VMBUS_GET_CHANNEL_INFO GetInfo;
int (*Open)(struct hv_device *Device, u32 SendBufferSize,
u32 RecvRingBufferSize, void *UserData, u32 UserDataLen,
void (*ChannelCallback)(void *context),
void *Context);
void (*Close)(struct hv_device *device);
int (*SendPacket)(struct hv_device *Device, const void *Buffer,
u32 BufferLen, u64 RequestId, u32 Type, u32 Flags);
int (*SendPacketPageBuffer)(struct hv_device *dev,
struct hv_page_buffer PageBuffers[],
u32 PageCount, void *Buffer, u32 BufferLen,
u64 RequestId);
int (*SendPacketMultiPageBuffer)(struct hv_device *device,
struct hv_multipage_buffer *mpb,
void *Buffer,
u32 BufferLen,
u64 RequestId);
int (*RecvPacket)(struct hv_device *dev, void *buf, u32 buflen,
u32 *BufferActualLen, u64 *RequestId);
int (*RecvPacketRaw)(struct hv_device *dev, void *buf, u32 buflen,
u32 *BufferActualLen, u64 *RequestId);
int (*EstablishGpadl)(struct hv_device *dev, void *buf, u32 buflen,
u32 *GpadlHandle);
int (*TeardownGpadl)(struct hv_device *device, u32 GpadlHandle);
void (*GetInfo)(struct hv_device *dev, struct hv_device_info *devinfo);
};

typedef void (*VMBUS_GET_CHANNEL_INTERFACE)(struct vmbus_channel_interface *i);

/* Base driver object */
struct hv_driver {
const char *name;

/* the device type supported by this driver */
struct hv_guid deviceType;

PFN_ON_DEVICEADD OnDeviceAdd;
PFN_ON_DEVICEREMOVE OnDeviceRemove;

/* device ids supported by this driver */
PFN_ON_GETDEVICEIDS OnGetDeviceIds;
PFN_ON_CLEANUP OnCleanup;
int (*OnDeviceAdd)(struct hv_device *device, void *data);
int (*OnDeviceRemove)(struct hv_device *device);
void (*OnCleanup)(struct hv_driver *driver);

struct vmbus_channel_interface VmbusChannelInterface;
};
Expand Down Expand Up @@ -211,19 +151,23 @@ struct vmbus_driver {
struct hv_driver Base;

/* Set by the caller */
PFN_ON_CHILDDEVICE_CREATE OnChildDeviceCreate;
PFN_ON_CHILDDEVICE_DESTROY OnChildDeviceDestroy;
PFN_ON_CHILDDEVICE_ADD OnChildDeviceAdd;
PFN_ON_CHILDDEVICE_REMOVE OnChildDeviceRemove;
struct hv_device * (*OnChildDeviceCreate)(struct hv_guid *DeviceType,
struct hv_guid *DeviceInstance,
void *Context);
void (*OnChildDeviceDestroy)(struct hv_device *device);
int (*OnChildDeviceAdd)(struct hv_device *RootDevice,
struct hv_device *ChildDevice);
void (*OnChildDeviceRemove)(struct hv_device *device);

/* Set by the callee */
PFN_ON_ISR OnIsr;
PFN_ON_DPC OnMsgDpc;
PFN_ON_DPC OnEventDpc;
PFN_GET_CHANNEL_OFFERS GetChannelOffers;

VMBUS_GET_CHANNEL_INTERFACE GetChannelInterface;
VMBUS_GET_CHANNEL_INFO GetChannelInfo;
int (*OnIsr)(struct hv_driver *driver);
void (*OnMsgDpc)(struct hv_driver *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);
};

int VmbusInitialize(struct hv_driver *drv);
Expand Down

0 comments on commit 4158e55

Please sign in to comment.