IN PVOID Argument
);
+typedef NTSTATUS
+(*XENBUS_CACHE_CREATE_V1)(
+ IN PINTERFACE Interface,
+ IN const CHAR *Name,
+ IN ULONG Size,
+ IN ULONG Reservation,
+ IN XENBUS_CACHE_CTOR Ctor,
+ IN XENBUS_CACHE_DTOR Dtor,
+ IN XENBUS_CACHE_ACQUIRE_LOCK AcquireLock,
+ IN XENBUS_CACHE_RELEASE_LOCK ReleaseLock,
+ IN PVOID Argument OPTIONAL,
+ OUT PXENBUS_CACHE *Cache
+ );
+
/*! \typedef XENBUS_CACHE_CREATE
\brief Create a cache of objects of the given \a Size
\param Name A name for the cache which will be used in debug output
\param Size The size of each object in bytes
\param Reservation The target minimum population of the cache
+ \param Cap The maximum population of the cache
\param Ctor A callback which is invoked when a new object created
\param Dtor A callback which is invoked when an object is destroyed
\param AcquireLock A callback invoked to acquire a spinlock
IN const CHAR *Name,
IN ULONG Size,
IN ULONG Reservation,
+ IN ULONG Cap,
IN XENBUS_CACHE_CTOR Ctor,
IN XENBUS_CACHE_DTOR Dtor,
IN XENBUS_CACHE_ACQUIRE_LOCK AcquireLock,
\ingroup interfaces
*/
struct _XENBUS_CACHE_INTERFACE_V1 {
+ INTERFACE Interface;
+ XENBUS_CACHE_ACQUIRE CacheAcquire;
+ XENBUS_CACHE_RELEASE CacheRelease;
+ XENBUS_CACHE_CREATE_V1 CacheCreateVersion1;
+ XENBUS_CACHE_GET CacheGet;
+ XENBUS_CACHE_PUT CachePut;
+ XENBUS_CACHE_DESTROY CacheDestroy;
+};
+
+/*! \struct _XENBUS_CACHE_INTERFACE_V2
+ \brief CACHE interface version 1
+ \ingroup interfaces
+*/
+struct _XENBUS_CACHE_INTERFACE_V2 {
INTERFACE Interface;
XENBUS_CACHE_ACQUIRE CacheAcquire;
XENBUS_CACHE_RELEASE CacheRelease;
XENBUS_CACHE_DESTROY CacheDestroy;
};
-typedef struct _XENBUS_CACHE_INTERFACE_V1 XENBUS_CACHE_INTERFACE, *PXENBUS_CACHE_INTERFACE;
+typedef struct _XENBUS_CACHE_INTERFACE_V2 XENBUS_CACHE_INTERFACE, *PXENBUS_CACHE_INTERFACE;
/*! \def XENBUS_CACHE
\brief Macro at assist in method invocation
#endif // _WINDLL
#define XENBUS_CACHE_INTERFACE_VERSION_MIN 1
-#define XENBUS_CACHE_INTERFACE_VERSION_MAX 1
+#define XENBUS_CACHE_INTERFACE_VERSION_MAX 2
#endif // _XENBUS_CACHE_INTERFACE_H
DEFINE_REVISION(0x0800000B, 1, 6, 2, 1), \
DEFINE_REVISION(0x0800000C, 1, 7, 2, 1), \
DEFINE_REVISION(0x0800000D, 1, 8, 2, 1), \
- DEFINE_REVISION(0x09000000, 1, 8, 2, 1)
+ DEFINE_REVISION(0x09000000, 1, 8, 2, 1), \
+ DEFINE_REVISION(0x09000001, 2, 8, 2, 1)
#endif // _REVISION_H
; DisplayName Section DeviceID
; ----------- ------- --------
-%XenVifName% =XenVif_Inst, XENBUS\VEN_@VENDOR_PREFIX@@VENDOR_DEVICE_ID@&DEV_VIF&REV_09000004
-%XenVifName% =XenVif_Inst, XENBUS\VEN_@VENDOR_PREFIX@0001&DEV_VIF&REV_09000004
-%XenVifName% =XenVif_Inst, XENBUS\VEN_@VENDOR_PREFIX@0002&DEV_VIF&REV_09000004
+%XenVifName% =XenVif_Inst, XENBUS\VEN_@VENDOR_PREFIX@@VENDOR_DEVICE_ID@&DEV_VIF&REV_09000005
+%XenVifName% =XenVif_Inst, XENBUS\VEN_@VENDOR_PREFIX@0001&DEV_VIF&REV_09000005
+%XenVifName% =XenVif_Inst, XENBUS\VEN_@VENDOR_PREFIX@0002&DEV_VIF&REV_09000005
[XenVif_Inst]
CopyFiles=XenVif_Copyfiles
Name,
sizeof (XENVIF_RECEIVER_PACKET),
0,
+ 0,
ReceiverPacketCtor,
ReceiverPacketDtor,
ReceiverRingAcquireLock,
Name,
sizeof (XENVIF_RECEIVER_FRAGMENT),
0,
+ 0,
ReceiverFragmentCtor,
ReceiverFragmentDtor,
ReceiverRingAcquireLock,
Name,
sizeof (XENVIF_TRANSMITTER_BUFFER),
0,
+ 0,
TransmitterBufferCtor,
TransmitterBufferDtor,
TransmitterRingAcquireLock,
Name,
sizeof (XENVIF_TRANSMITTER_MULTICAST_CONTROL),
0,
+ 0,
TransmitterMulticastControlCtor,
TransmitterMulticastControlDtor,
TransmitterRingAcquireLock,
Name,
sizeof (XENVIF_TRANSMITTER_FRAGMENT),
0,
+ 0,
TransmitterFragmentCtor,
TransmitterFragmentDtor,
TransmitterRingAcquireLock,
Name,
sizeof (XENVIF_TRANSMITTER_REQUEST),
0,
+ 0,
TransmitterRequestCtor,
TransmitterRequestDtor,
TransmitterRingAcquireLock,
Name,
sizeof (XENVIF_TRANSMITTER_PACKET),
XENVIF_PACKET_CACHE_RESERVATION,
+ 0,
TransmitterPacketCtor,
TransmitterPacketDtor,
TransmitterPacketAcquireLock,