Loading drivers/staging/hv/RingBuffer.c +11 −40 Original line number Diff line number Diff line Loading @@ -203,8 +203,7 @@ GetRingBufferIndices(RING_BUFFER_INFO* RingInfo) Dump out to console the ring buffer info --*/ static void DumpRingInfo(RING_BUFFER_INFO* RingInfo, char *Prefix) void DumpRingInfo(RING_BUFFER_INFO *RingInfo, char *Prefix) { u32 bytesAvailToWrite; u32 bytesAvailToRead; Loading Loading @@ -249,11 +248,8 @@ CopyFromRingBuffer( Get various debug metrics for the specified ring buffer --*/ static void RingBufferGetDebugInfo( RING_BUFFER_INFO *RingInfo, RING_BUFFER_DEBUG_INFO *DebugInfo ) void RingBufferGetDebugInfo(RING_BUFFER_INFO *RingInfo, RING_BUFFER_DEBUG_INFO *DebugInfo) { u32 bytesAvailToWrite; u32 bytesAvailToRead; Loading Loading @@ -281,10 +277,7 @@ RingBufferGetDebugInfo( Get the interrupt mask for the specified ring buffer --*/ static u32 GetRingBufferInterruptMask( RING_BUFFER_INFO *rbi ) u32 GetRingBufferInterruptMask(RING_BUFFER_INFO *rbi) { return rbi->RingBuffer->InterruptMask; } Loading @@ -298,12 +291,7 @@ GetRingBufferInterruptMask( Initialize the ring buffer --*/ static int RingBufferInit( RING_BUFFER_INFO *RingInfo, void *Buffer, u32 BufferLen ) int RingBufferInit(RING_BUFFER_INFO *RingInfo, void *Buffer, u32 BufferLen) { ASSERT(sizeof(RING_BUFFER) == PAGE_SIZE); Loading @@ -329,10 +317,7 @@ RingBufferInit( Cleanup the ring buffer --*/ static void RingBufferCleanup( RING_BUFFER_INFO* RingInfo ) void RingBufferCleanup(RING_BUFFER_INFO* RingInfo) { } Loading @@ -345,12 +330,8 @@ RingBufferCleanup( Write to the ring buffer --*/ static int RingBufferWrite( RING_BUFFER_INFO *OutRingInfo, struct scatterlist *sglist, u32 sgcount ) int RingBufferWrite(RING_BUFFER_INFO *OutRingInfo, struct scatterlist *sglist, u32 sgcount) { int i=0; u32 byteAvailToWrite; Loading Loading @@ -436,12 +417,7 @@ RingBufferWrite( Read without advancing the read index --*/ static int RingBufferPeek( RING_BUFFER_INFO* InRingInfo, void* Buffer, u32 BufferLen ) int RingBufferPeek(RING_BUFFER_INFO *InRingInfo, void *Buffer, u32 BufferLen) { u32 bytesAvailToWrite; u32 bytesAvailToRead; Loading Loading @@ -485,13 +461,8 @@ RingBufferPeek( Read and advance the read index --*/ static int RingBufferRead( RING_BUFFER_INFO* InRingInfo, void * Buffer, u32 BufferLen, u32 Offset ) int RingBufferRead(RING_BUFFER_INFO *InRingInfo, void *Buffer, u32 BufferLen, u32 Offset) { u32 bytesAvailToWrite; u32 bytesAvailToRead; Loading drivers/staging/hv/RingBuffer.h +51 −68 Original line number Diff line number Diff line Loading @@ -30,15 +30,28 @@ #include "include/osd.h" typedef struct _RING_BUFFER { volatile u32 WriteIndex; /* Offset in bytes from the start of ring data below */ volatile u32 ReadIndex; /* Offset in bytes from the start of ring data below */ /* Offset in bytes from the start of ring data below */ volatile u32 WriteIndex; /* Offset in bytes from the start of ring data below */ volatile u32 ReadIndex; volatile u32 InterruptMask; u8 Reserved[4084]; /* Pad it to PAGE_SIZE so that data starts on page boundary */ /* NOTE: The InterruptMask field is used only for channels but since our vmbus connection */ /* also uses this data structure and its data starts here, we commented out this field. */ /* Pad it to PAGE_SIZE so that data starts on page boundary */ u8 Reserved[4084]; /* NOTE: * The InterruptMask field is used only for channels but since our * vmbus connection also uses this data structure and its data starts * here, we commented out this field. */ /* volatile u32 InterruptMask; */ /* Ring data starts here + RingDataStartOffset !!! DO NOT place any fields below this !!! */ /* * Ring data starts here + RingDataStartOffset * !!! DO NOT place any fields below this !!! */ u8 Buffer[0]; } __attribute__((packed)) RING_BUFFER; Loading @@ -52,7 +65,6 @@ typedef struct _RING_BUFFER_INFO { } RING_BUFFER_INFO; typedef struct _RING_BUFFER_DEBUG_INFO { u32 CurrentInterruptMask; u32 CurrentReadIndex; Loading @@ -66,55 +78,26 @@ typedef struct _RING_BUFFER_DEBUG_INFO { /* Interface */ static int RingBufferInit( RING_BUFFER_INFO *RingInfo, void * Buffer, u32 BufferLen ); int RingBufferInit(RING_BUFFER_INFO *RingInfo, void *Buffer, u32 BufferLen); static void RingBufferCleanup( RING_BUFFER_INFO *RingInfo ); void RingBufferCleanup(RING_BUFFER_INFO *RingInfo); static int RingBufferWrite( RING_BUFFER_INFO *RingInfo, int RingBufferWrite(RING_BUFFER_INFO *RingInfo, struct scatterlist *sglist, u32 sgcount ); u32 sgcount); static int RingBufferPeek( RING_BUFFER_INFO *RingInfo, void * Buffer, u32 BufferLen ); int RingBufferPeek(RING_BUFFER_INFO *RingInfo, void *Buffer, u32 BufferLen); static int RingBufferRead( RING_BUFFER_INFO *RingInfo, int RingBufferRead(RING_BUFFER_INFO *RingInfo, void *Buffer, u32 BufferLen, u32 Offset ); static u32 GetRingBufferInterruptMask( RING_BUFFER_INFO *RingInfo ); static void DumpRingInfo( RING_BUFFER_INFO* RingInfo, char *Prefix ); static void RingBufferGetDebugInfo( RING_BUFFER_INFO *RingInfo, RING_BUFFER_DEBUG_INFO *DebugInfo ); u32 Offset); u32 GetRingBufferInterruptMask(RING_BUFFER_INFO *RingInfo); void DumpRingInfo(RING_BUFFER_INFO *RingInfo, char *Prefix); void RingBufferGetDebugInfo(RING_BUFFER_INFO *RingInfo, RING_BUFFER_DEBUG_INFO *DebugInfo); #endif /* _RING_BUFFER_H_ */ Loading
drivers/staging/hv/RingBuffer.c +11 −40 Original line number Diff line number Diff line Loading @@ -203,8 +203,7 @@ GetRingBufferIndices(RING_BUFFER_INFO* RingInfo) Dump out to console the ring buffer info --*/ static void DumpRingInfo(RING_BUFFER_INFO* RingInfo, char *Prefix) void DumpRingInfo(RING_BUFFER_INFO *RingInfo, char *Prefix) { u32 bytesAvailToWrite; u32 bytesAvailToRead; Loading Loading @@ -249,11 +248,8 @@ CopyFromRingBuffer( Get various debug metrics for the specified ring buffer --*/ static void RingBufferGetDebugInfo( RING_BUFFER_INFO *RingInfo, RING_BUFFER_DEBUG_INFO *DebugInfo ) void RingBufferGetDebugInfo(RING_BUFFER_INFO *RingInfo, RING_BUFFER_DEBUG_INFO *DebugInfo) { u32 bytesAvailToWrite; u32 bytesAvailToRead; Loading Loading @@ -281,10 +277,7 @@ RingBufferGetDebugInfo( Get the interrupt mask for the specified ring buffer --*/ static u32 GetRingBufferInterruptMask( RING_BUFFER_INFO *rbi ) u32 GetRingBufferInterruptMask(RING_BUFFER_INFO *rbi) { return rbi->RingBuffer->InterruptMask; } Loading @@ -298,12 +291,7 @@ GetRingBufferInterruptMask( Initialize the ring buffer --*/ static int RingBufferInit( RING_BUFFER_INFO *RingInfo, void *Buffer, u32 BufferLen ) int RingBufferInit(RING_BUFFER_INFO *RingInfo, void *Buffer, u32 BufferLen) { ASSERT(sizeof(RING_BUFFER) == PAGE_SIZE); Loading @@ -329,10 +317,7 @@ RingBufferInit( Cleanup the ring buffer --*/ static void RingBufferCleanup( RING_BUFFER_INFO* RingInfo ) void RingBufferCleanup(RING_BUFFER_INFO* RingInfo) { } Loading @@ -345,12 +330,8 @@ RingBufferCleanup( Write to the ring buffer --*/ static int RingBufferWrite( RING_BUFFER_INFO *OutRingInfo, struct scatterlist *sglist, u32 sgcount ) int RingBufferWrite(RING_BUFFER_INFO *OutRingInfo, struct scatterlist *sglist, u32 sgcount) { int i=0; u32 byteAvailToWrite; Loading Loading @@ -436,12 +417,7 @@ RingBufferWrite( Read without advancing the read index --*/ static int RingBufferPeek( RING_BUFFER_INFO* InRingInfo, void* Buffer, u32 BufferLen ) int RingBufferPeek(RING_BUFFER_INFO *InRingInfo, void *Buffer, u32 BufferLen) { u32 bytesAvailToWrite; u32 bytesAvailToRead; Loading Loading @@ -485,13 +461,8 @@ RingBufferPeek( Read and advance the read index --*/ static int RingBufferRead( RING_BUFFER_INFO* InRingInfo, void * Buffer, u32 BufferLen, u32 Offset ) int RingBufferRead(RING_BUFFER_INFO *InRingInfo, void *Buffer, u32 BufferLen, u32 Offset) { u32 bytesAvailToWrite; u32 bytesAvailToRead; Loading
drivers/staging/hv/RingBuffer.h +51 −68 Original line number Diff line number Diff line Loading @@ -30,15 +30,28 @@ #include "include/osd.h" typedef struct _RING_BUFFER { volatile u32 WriteIndex; /* Offset in bytes from the start of ring data below */ volatile u32 ReadIndex; /* Offset in bytes from the start of ring data below */ /* Offset in bytes from the start of ring data below */ volatile u32 WriteIndex; /* Offset in bytes from the start of ring data below */ volatile u32 ReadIndex; volatile u32 InterruptMask; u8 Reserved[4084]; /* Pad it to PAGE_SIZE so that data starts on page boundary */ /* NOTE: The InterruptMask field is used only for channels but since our vmbus connection */ /* also uses this data structure and its data starts here, we commented out this field. */ /* Pad it to PAGE_SIZE so that data starts on page boundary */ u8 Reserved[4084]; /* NOTE: * The InterruptMask field is used only for channels but since our * vmbus connection also uses this data structure and its data starts * here, we commented out this field. */ /* volatile u32 InterruptMask; */ /* Ring data starts here + RingDataStartOffset !!! DO NOT place any fields below this !!! */ /* * Ring data starts here + RingDataStartOffset * !!! DO NOT place any fields below this !!! */ u8 Buffer[0]; } __attribute__((packed)) RING_BUFFER; Loading @@ -52,7 +65,6 @@ typedef struct _RING_BUFFER_INFO { } RING_BUFFER_INFO; typedef struct _RING_BUFFER_DEBUG_INFO { u32 CurrentInterruptMask; u32 CurrentReadIndex; Loading @@ -66,55 +78,26 @@ typedef struct _RING_BUFFER_DEBUG_INFO { /* Interface */ static int RingBufferInit( RING_BUFFER_INFO *RingInfo, void * Buffer, u32 BufferLen ); int RingBufferInit(RING_BUFFER_INFO *RingInfo, void *Buffer, u32 BufferLen); static void RingBufferCleanup( RING_BUFFER_INFO *RingInfo ); void RingBufferCleanup(RING_BUFFER_INFO *RingInfo); static int RingBufferWrite( RING_BUFFER_INFO *RingInfo, int RingBufferWrite(RING_BUFFER_INFO *RingInfo, struct scatterlist *sglist, u32 sgcount ); u32 sgcount); static int RingBufferPeek( RING_BUFFER_INFO *RingInfo, void * Buffer, u32 BufferLen ); int RingBufferPeek(RING_BUFFER_INFO *RingInfo, void *Buffer, u32 BufferLen); static int RingBufferRead( RING_BUFFER_INFO *RingInfo, int RingBufferRead(RING_BUFFER_INFO *RingInfo, void *Buffer, u32 BufferLen, u32 Offset ); static u32 GetRingBufferInterruptMask( RING_BUFFER_INFO *RingInfo ); static void DumpRingInfo( RING_BUFFER_INFO* RingInfo, char *Prefix ); static void RingBufferGetDebugInfo( RING_BUFFER_INFO *RingInfo, RING_BUFFER_DEBUG_INFO *DebugInfo ); u32 Offset); u32 GetRingBufferInterruptMask(RING_BUFFER_INFO *RingInfo); void DumpRingInfo(RING_BUFFER_INFO *RingInfo, char *Prefix); void RingBufferGetDebugInfo(RING_BUFFER_INFO *RingInfo, RING_BUFFER_DEBUG_INFO *DebugInfo); #endif /* _RING_BUFFER_H_ */