Staging: hv: fix various coding style issues in RingBuffer.c
This is a patch to the RingBuffer.c file that corrects various coding style warnings and errors found by checkpatch.pl [ The real solution here is to get rid of this file entirely, and use the kernel's internal ring buffer api, but until then, make these changes so as to make checkpatch.pl happy, and keep others from continuously sending this type of patch. - gkh] Signed-off-by: Craig Bartlett <c-bartlett@hotmail.co.uk> Cc: Bill Pemberton <wfp5p@virginia.edu> Cc: Nicolas Palix <npalix@diku.dk> Cc: Hank Janssen <hjanssen@microsoft.com> Cc: Haiyang Zhang <haiyangz@microsoft.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Родитель
a73e6b7c50
Коммит
4408f5319b
|
@ -48,7 +48,7 @@ Description:
|
||||||
static inline void
|
static inline void
|
||||||
GetRingBufferAvailBytes(RING_BUFFER_INFO *rbi, u32 *read, u32 *write)
|
GetRingBufferAvailBytes(RING_BUFFER_INFO *rbi, u32 *read, u32 *write)
|
||||||
{
|
{
|
||||||
u32 read_loc,write_loc;
|
u32 read_loc, write_loc;
|
||||||
|
|
||||||
/* Capture the read/write indices before they changed */
|
/* Capture the read/write indices before they changed */
|
||||||
read_loc = rbi->RingBuffer->ReadIndex;
|
read_loc = rbi->RingBuffer->ReadIndex;
|
||||||
|
@ -68,7 +68,7 @@ Description:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
static inline u32
|
static inline u32
|
||||||
GetNextWriteLocation(RING_BUFFER_INFO* RingInfo)
|
GetNextWriteLocation(RING_BUFFER_INFO *RingInfo)
|
||||||
{
|
{
|
||||||
u32 next = RingInfo->RingBuffer->WriteIndex;
|
u32 next = RingInfo->RingBuffer->WriteIndex;
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ Description:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
static inline void
|
static inline void
|
||||||
SetNextWriteLocation(RING_BUFFER_INFO* RingInfo, u32 NextWriteLocation)
|
SetNextWriteLocation(RING_BUFFER_INFO *RingInfo, u32 NextWriteLocation)
|
||||||
{
|
{
|
||||||
RingInfo->RingBuffer->WriteIndex = NextWriteLocation;
|
RingInfo->RingBuffer->WriteIndex = NextWriteLocation;
|
||||||
}
|
}
|
||||||
|
@ -102,7 +102,7 @@ Description:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
static inline u32
|
static inline u32
|
||||||
GetNextReadLocation(RING_BUFFER_INFO* RingInfo)
|
GetNextReadLocation(RING_BUFFER_INFO *RingInfo)
|
||||||
{
|
{
|
||||||
u32 next = RingInfo->RingBuffer->ReadIndex;
|
u32 next = RingInfo->RingBuffer->ReadIndex;
|
||||||
|
|
||||||
|
@ -122,7 +122,7 @@ Description:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
static inline u32
|
static inline u32
|
||||||
GetNextReadLocationWithOffset(RING_BUFFER_INFO* RingInfo, u32 Offset)
|
GetNextReadLocationWithOffset(RING_BUFFER_INFO *RingInfo, u32 Offset)
|
||||||
{
|
{
|
||||||
u32 next = RingInfo->RingBuffer->ReadIndex;
|
u32 next = RingInfo->RingBuffer->ReadIndex;
|
||||||
|
|
||||||
|
@ -143,7 +143,7 @@ Description:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
static inline void
|
static inline void
|
||||||
SetNextReadLocation(RING_BUFFER_INFO* RingInfo, u32 NextReadLocation)
|
SetNextReadLocation(RING_BUFFER_INFO *RingInfo, u32 NextReadLocation)
|
||||||
{
|
{
|
||||||
RingInfo->RingBuffer->ReadIndex = NextReadLocation;
|
RingInfo->RingBuffer->ReadIndex = NextReadLocation;
|
||||||
}
|
}
|
||||||
|
@ -159,7 +159,7 @@ Description:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
static inline void *
|
static inline void *
|
||||||
GetRingBuffer(RING_BUFFER_INFO* RingInfo)
|
GetRingBuffer(RING_BUFFER_INFO *RingInfo)
|
||||||
{
|
{
|
||||||
return (void *)RingInfo->RingBuffer->Buffer;
|
return (void *)RingInfo->RingBuffer->Buffer;
|
||||||
}
|
}
|
||||||
|
@ -175,7 +175,7 @@ Description:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
static inline u32
|
static inline u32
|
||||||
GetRingBufferSize(RING_BUFFER_INFO* RingInfo)
|
GetRingBufferSize(RING_BUFFER_INFO *RingInfo)
|
||||||
{
|
{
|
||||||
return RingInfo->RingDataSize;
|
return RingInfo->RingDataSize;
|
||||||
}
|
}
|
||||||
|
@ -190,9 +190,10 @@ Description:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
static inline u64
|
static inline u64
|
||||||
GetRingBufferIndices(RING_BUFFER_INFO* RingInfo)
|
GetRingBufferIndices(RING_BUFFER_INFO *RingInfo)
|
||||||
{
|
{
|
||||||
return ((u64)RingInfo->RingBuffer->WriteIndex << 32) || RingInfo->RingBuffer->ReadIndex;
|
return ((u64)RingInfo->RingBuffer->WriteIndex << 32)
|
||||||
|
|| RingInfo->RingBuffer->ReadIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -210,9 +211,14 @@ void DumpRingInfo(RING_BUFFER_INFO *RingInfo, char *Prefix)
|
||||||
u32 bytesAvailToWrite;
|
u32 bytesAvailToWrite;
|
||||||
u32 bytesAvailToRead;
|
u32 bytesAvailToRead;
|
||||||
|
|
||||||
GetRingBufferAvailBytes(RingInfo, &bytesAvailToRead, &bytesAvailToWrite);
|
GetRingBufferAvailBytes(RingInfo,
|
||||||
|
&bytesAvailToRead,
|
||||||
|
&bytesAvailToWrite);
|
||||||
|
|
||||||
DPRINT(VMBUS, DEBUG_RING_LVL, "%s <<ringinfo %p buffer %p avail write %u avail read %u read idx %u write idx %u>>",
|
DPRINT(VMBUS,
|
||||||
|
DEBUG_RING_LVL,
|
||||||
|
"%s <<ringinfo %p buffer %p avail write %u "
|
||||||
|
"avail read %u read idx %u write idx %u>>",
|
||||||
Prefix,
|
Prefix,
|
||||||
RingInfo,
|
RingInfo,
|
||||||
RingInfo->RingBuffer->Buffer,
|
RingInfo->RingBuffer->Buffer,
|
||||||
|
@ -229,13 +235,13 @@ static u32
|
||||||
CopyToRingBuffer(
|
CopyToRingBuffer(
|
||||||
RING_BUFFER_INFO *RingInfo,
|
RING_BUFFER_INFO *RingInfo,
|
||||||
u32 StartWriteOffset,
|
u32 StartWriteOffset,
|
||||||
void * Src,
|
void *Src,
|
||||||
u32 SrcLen);
|
u32 SrcLen);
|
||||||
|
|
||||||
static u32
|
static u32
|
||||||
CopyFromRingBuffer(
|
CopyFromRingBuffer(
|
||||||
RING_BUFFER_INFO *RingInfo,
|
RING_BUFFER_INFO *RingInfo,
|
||||||
void * Dest,
|
void *Dest,
|
||||||
u32 DestLen,
|
u32 DestLen,
|
||||||
u32 StartReadOffset);
|
u32 StartReadOffset);
|
||||||
|
|
||||||
|
@ -256,15 +262,15 @@ void RingBufferGetDebugInfo(RING_BUFFER_INFO *RingInfo,
|
||||||
u32 bytesAvailToWrite;
|
u32 bytesAvailToWrite;
|
||||||
u32 bytesAvailToRead;
|
u32 bytesAvailToRead;
|
||||||
|
|
||||||
if (RingInfo->RingBuffer)
|
if (RingInfo->RingBuffer) {
|
||||||
{
|
GetRingBufferAvailBytes(RingInfo,
|
||||||
GetRingBufferAvailBytes(RingInfo, &bytesAvailToRead, &bytesAvailToWrite);
|
&bytesAvailToRead,
|
||||||
|
&bytesAvailToWrite);
|
||||||
|
|
||||||
DebugInfo->BytesAvailToRead = bytesAvailToRead;
|
DebugInfo->BytesAvailToRead = bytesAvailToRead;
|
||||||
DebugInfo->BytesAvailToWrite = bytesAvailToWrite;
|
DebugInfo->BytesAvailToWrite = bytesAvailToWrite;
|
||||||
DebugInfo->CurrentReadIndex = RingInfo->RingBuffer->ReadIndex;
|
DebugInfo->CurrentReadIndex = RingInfo->RingBuffer->ReadIndex;
|
||||||
DebugInfo->CurrentWriteIndex = RingInfo->RingBuffer->WriteIndex;
|
DebugInfo->CurrentWriteIndex = RingInfo->RingBuffer->WriteIndex;
|
||||||
|
|
||||||
DebugInfo->CurrentInterruptMask = RingInfo->RingBuffer->InterruptMask;
|
DebugInfo->CurrentInterruptMask = RingInfo->RingBuffer->InterruptMask;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -299,7 +305,7 @@ int RingBufferInit(RING_BUFFER_INFO *RingInfo, void *Buffer, u32 BufferLen)
|
||||||
|
|
||||||
memset(RingInfo, 0, sizeof(RING_BUFFER_INFO));
|
memset(RingInfo, 0, sizeof(RING_BUFFER_INFO));
|
||||||
|
|
||||||
RingInfo->RingBuffer = (RING_BUFFER*)Buffer;
|
RingInfo->RingBuffer = (RING_BUFFER *)Buffer;
|
||||||
RingInfo->RingBuffer->ReadIndex = RingInfo->RingBuffer->WriteIndex = 0;
|
RingInfo->RingBuffer->ReadIndex = RingInfo->RingBuffer->WriteIndex = 0;
|
||||||
|
|
||||||
RingInfo->RingSize = BufferLen;
|
RingInfo->RingSize = BufferLen;
|
||||||
|
@ -319,7 +325,7 @@ Description:
|
||||||
Cleanup the ring buffer
|
Cleanup the ring buffer
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
void RingBufferCleanup(RING_BUFFER_INFO* RingInfo)
|
void RingBufferCleanup(RING_BUFFER_INFO *RingInfo)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -335,14 +341,14 @@ Description:
|
||||||
int RingBufferWrite(RING_BUFFER_INFO *OutRingInfo,
|
int RingBufferWrite(RING_BUFFER_INFO *OutRingInfo,
|
||||||
struct scatterlist *sglist, u32 sgcount)
|
struct scatterlist *sglist, u32 sgcount)
|
||||||
{
|
{
|
||||||
int i=0;
|
int i = 0;
|
||||||
u32 byteAvailToWrite;
|
u32 byteAvailToWrite;
|
||||||
u32 byteAvailToRead;
|
u32 byteAvailToRead;
|
||||||
u32 totalBytesToWrite=0;
|
u32 totalBytesToWrite = 0;
|
||||||
|
|
||||||
struct scatterlist *sg;
|
struct scatterlist *sg;
|
||||||
volatile u32 nextWriteLocation;
|
volatile u32 nextWriteLocation;
|
||||||
u64 prevIndices=0;
|
u64 prevIndices = 0;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
DPRINT_ENTER(VMBUS);
|
DPRINT_ENTER(VMBUS);
|
||||||
|
@ -356,17 +362,23 @@ int RingBufferWrite(RING_BUFFER_INFO *OutRingInfo,
|
||||||
|
|
||||||
spin_lock_irqsave(&OutRingInfo->ring_lock, flags);
|
spin_lock_irqsave(&OutRingInfo->ring_lock, flags);
|
||||||
|
|
||||||
GetRingBufferAvailBytes(OutRingInfo, &byteAvailToRead, &byteAvailToWrite);
|
GetRingBufferAvailBytes(OutRingInfo,
|
||||||
|
&byteAvailToRead,
|
||||||
|
&byteAvailToWrite);
|
||||||
|
|
||||||
DPRINT_DBG(VMBUS, "Writing %u bytes...", totalBytesToWrite);
|
DPRINT_DBG(VMBUS, "Writing %u bytes...", totalBytesToWrite);
|
||||||
|
|
||||||
/* DumpRingInfo(OutRingInfo, "BEFORE "); */
|
/* DumpRingInfo(OutRingInfo, "BEFORE "); */
|
||||||
|
|
||||||
/* If there is only room for the packet, assume it is full. Otherwise, the next time around, we think the ring buffer */
|
/* If there is only room for the packet, assume it is full. */
|
||||||
|
/* Otherwise, the next time around, we think the ring buffer */
|
||||||
/* is empty since the read index == write index */
|
/* is empty since the read index == write index */
|
||||||
if (byteAvailToWrite <= totalBytesToWrite)
|
if (byteAvailToWrite <= totalBytesToWrite) {
|
||||||
{
|
DPRINT_DBG(VMBUS,
|
||||||
DPRINT_DBG(VMBUS, "No more space left on outbound ring buffer (needed %u, avail %u)", totalBytesToWrite, byteAvailToWrite);
|
"No more space left on outbound ring buffer "
|
||||||
|
"(needed %u, avail %u)",
|
||||||
|
totalBytesToWrite,
|
||||||
|
byteAvailToWrite);
|
||||||
|
|
||||||
spin_unlock_irqrestore(&OutRingInfo->ring_lock, flags);
|
spin_unlock_irqrestore(&OutRingInfo->ring_lock, flags);
|
||||||
|
|
||||||
|
@ -423,17 +435,22 @@ int RingBufferPeek(RING_BUFFER_INFO *InRingInfo, void *Buffer, u32 BufferLen)
|
||||||
{
|
{
|
||||||
u32 bytesAvailToWrite;
|
u32 bytesAvailToWrite;
|
||||||
u32 bytesAvailToRead;
|
u32 bytesAvailToRead;
|
||||||
u32 nextReadLocation=0;
|
u32 nextReadLocation = 0;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
spin_lock_irqsave(&InRingInfo->ring_lock, flags);
|
spin_lock_irqsave(&InRingInfo->ring_lock, flags);
|
||||||
|
|
||||||
GetRingBufferAvailBytes(InRingInfo, &bytesAvailToRead, &bytesAvailToWrite);
|
GetRingBufferAvailBytes(InRingInfo,
|
||||||
|
&bytesAvailToRead,
|
||||||
|
&bytesAvailToWrite);
|
||||||
|
|
||||||
/* Make sure there is something to read */
|
/* Make sure there is something to read */
|
||||||
if (bytesAvailToRead < BufferLen )
|
if (bytesAvailToRead < BufferLen) {
|
||||||
{
|
/* DPRINT_DBG(VMBUS,
|
||||||
/* DPRINT_DBG(VMBUS, "got callback but not enough to read <avail to read %d read size %d>!!", bytesAvailToRead, BufferLen); */
|
"got callback but not enough to read "
|
||||||
|
"<avail to read %d read size %d>!!",
|
||||||
|
bytesAvailToRead,
|
||||||
|
BufferLen); */
|
||||||
|
|
||||||
spin_unlock_irqrestore(&InRingInfo->ring_lock, flags);
|
spin_unlock_irqrestore(&InRingInfo->ring_lock, flags);
|
||||||
|
|
||||||
|
@ -444,9 +461,9 @@ int RingBufferPeek(RING_BUFFER_INFO *InRingInfo, void *Buffer, u32 BufferLen)
|
||||||
nextReadLocation = GetNextReadLocation(InRingInfo);
|
nextReadLocation = GetNextReadLocation(InRingInfo);
|
||||||
|
|
||||||
nextReadLocation = CopyFromRingBuffer(InRingInfo,
|
nextReadLocation = CopyFromRingBuffer(InRingInfo,
|
||||||
Buffer,
|
Buffer,
|
||||||
BufferLen,
|
BufferLen,
|
||||||
nextReadLocation);
|
nextReadLocation);
|
||||||
|
|
||||||
spin_unlock_irqrestore(&InRingInfo->ring_lock, flags);
|
spin_unlock_irqrestore(&InRingInfo->ring_lock, flags);
|
||||||
|
|
||||||
|
@ -468,24 +485,29 @@ int RingBufferRead(RING_BUFFER_INFO *InRingInfo, void *Buffer,
|
||||||
{
|
{
|
||||||
u32 bytesAvailToWrite;
|
u32 bytesAvailToWrite;
|
||||||
u32 bytesAvailToRead;
|
u32 bytesAvailToRead;
|
||||||
u32 nextReadLocation=0;
|
u32 nextReadLocation = 0;
|
||||||
u64 prevIndices=0;
|
u64 prevIndices = 0;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
ASSERT(BufferLen > 0);
|
ASSERT(BufferLen > 0);
|
||||||
|
|
||||||
spin_lock_irqsave(&InRingInfo->ring_lock, flags);
|
spin_lock_irqsave(&InRingInfo->ring_lock, flags);
|
||||||
|
|
||||||
GetRingBufferAvailBytes(InRingInfo, &bytesAvailToRead, &bytesAvailToWrite);
|
GetRingBufferAvailBytes(InRingInfo,
|
||||||
|
&bytesAvailToRead,
|
||||||
|
&bytesAvailToWrite);
|
||||||
|
|
||||||
DPRINT_DBG(VMBUS, "Reading %u bytes...", BufferLen);
|
DPRINT_DBG(VMBUS, "Reading %u bytes...", BufferLen);
|
||||||
|
|
||||||
/* DumpRingInfo(InRingInfo, "BEFORE "); */
|
/* DumpRingInfo(InRingInfo, "BEFORE "); */
|
||||||
|
|
||||||
/* Make sure there is something to read */
|
/* Make sure there is something to read */
|
||||||
if (bytesAvailToRead < BufferLen )
|
if (bytesAvailToRead < BufferLen) {
|
||||||
{
|
DPRINT_DBG(VMBUS,
|
||||||
DPRINT_DBG(VMBUS, "got callback but not enough to read <avail to read %d read size %d>!!", bytesAvailToRead, BufferLen);
|
"got callback but not enough to read "
|
||||||
|
"<avail to read %d read size %d>!!",
|
||||||
|
bytesAvailToRead,
|
||||||
|
BufferLen);
|
||||||
|
|
||||||
spin_unlock_irqrestore(&InRingInfo->ring_lock, flags);
|
spin_unlock_irqrestore(&InRingInfo->ring_lock, flags);
|
||||||
|
|
||||||
|
@ -495,17 +517,18 @@ int RingBufferRead(RING_BUFFER_INFO *InRingInfo, void *Buffer,
|
||||||
nextReadLocation = GetNextReadLocationWithOffset(InRingInfo, Offset);
|
nextReadLocation = GetNextReadLocationWithOffset(InRingInfo, Offset);
|
||||||
|
|
||||||
nextReadLocation = CopyFromRingBuffer(InRingInfo,
|
nextReadLocation = CopyFromRingBuffer(InRingInfo,
|
||||||
Buffer,
|
Buffer,
|
||||||
BufferLen,
|
BufferLen,
|
||||||
nextReadLocation);
|
nextReadLocation);
|
||||||
|
|
||||||
nextReadLocation = CopyFromRingBuffer(InRingInfo,
|
nextReadLocation = CopyFromRingBuffer(InRingInfo,
|
||||||
&prevIndices,
|
&prevIndices,
|
||||||
sizeof(u64),
|
sizeof(u64),
|
||||||
nextReadLocation);
|
nextReadLocation);
|
||||||
|
|
||||||
/* Make sure all reads are done before we update the read index since */
|
/* Make sure all reads are done before we update the read index since */
|
||||||
/* the writer may start writing to the read area once the read index is updated */
|
/* the writer may start writing to the read area once the read index */
|
||||||
|
/*is updated */
|
||||||
mb();
|
mb();
|
||||||
|
|
||||||
/* Update the read index */
|
/* Update the read index */
|
||||||
|
@ -533,25 +556,22 @@ static u32
|
||||||
CopyToRingBuffer(
|
CopyToRingBuffer(
|
||||||
RING_BUFFER_INFO *RingInfo,
|
RING_BUFFER_INFO *RingInfo,
|
||||||
u32 StartWriteOffset,
|
u32 StartWriteOffset,
|
||||||
void * Src,
|
void *Src,
|
||||||
u32 SrcLen)
|
u32 SrcLen)
|
||||||
{
|
{
|
||||||
void * ringBuffer=GetRingBuffer(RingInfo);
|
void *ringBuffer = GetRingBuffer(RingInfo);
|
||||||
u32 ringBufferSize=GetRingBufferSize(RingInfo);
|
u32 ringBufferSize = GetRingBufferSize(RingInfo);
|
||||||
u32 fragLen;
|
u32 fragLen;
|
||||||
|
|
||||||
if (SrcLen > ringBufferSize - StartWriteOffset) /* wrap-around detected! */
|
/* wrap-around detected! */
|
||||||
{
|
if (SrcLen > ringBufferSize - StartWriteOffset) {
|
||||||
DPRINT_DBG(VMBUS, "wrap-around detected!");
|
DPRINT_DBG(VMBUS, "wrap-around detected!");
|
||||||
|
|
||||||
fragLen = ringBufferSize - StartWriteOffset;
|
fragLen = ringBufferSize - StartWriteOffset;
|
||||||
memcpy(ringBuffer + StartWriteOffset, Src, fragLen);
|
memcpy(ringBuffer + StartWriteOffset, Src, fragLen);
|
||||||
memcpy(ringBuffer, Src + fragLen, SrcLen - fragLen);
|
memcpy(ringBuffer, Src + fragLen, SrcLen - fragLen);
|
||||||
}
|
} else
|
||||||
else
|
|
||||||
{
|
|
||||||
memcpy(ringBuffer + StartWriteOffset, Src, SrcLen);
|
memcpy(ringBuffer + StartWriteOffset, Src, SrcLen);
|
||||||
}
|
|
||||||
|
|
||||||
StartWriteOffset += SrcLen;
|
StartWriteOffset += SrcLen;
|
||||||
StartWriteOffset %= ringBufferSize;
|
StartWriteOffset %= ringBufferSize;
|
||||||
|
@ -573,28 +593,27 @@ Description:
|
||||||
static u32
|
static u32
|
||||||
CopyFromRingBuffer(
|
CopyFromRingBuffer(
|
||||||
RING_BUFFER_INFO *RingInfo,
|
RING_BUFFER_INFO *RingInfo,
|
||||||
void * Dest,
|
void *Dest,
|
||||||
u32 DestLen,
|
u32 DestLen,
|
||||||
u32 StartReadOffset)
|
u32 StartReadOffset)
|
||||||
{
|
{
|
||||||
void * ringBuffer=GetRingBuffer(RingInfo);
|
void *ringBuffer = GetRingBuffer(RingInfo);
|
||||||
u32 ringBufferSize=GetRingBufferSize(RingInfo);
|
u32 ringBufferSize = GetRingBufferSize(RingInfo);
|
||||||
|
|
||||||
u32 fragLen;
|
u32 fragLen;
|
||||||
|
|
||||||
if (DestLen > ringBufferSize - StartReadOffset) /* wrap-around detected at the src */
|
/* wrap-around detected at the src */
|
||||||
{
|
if (DestLen > ringBufferSize - StartReadOffset) {
|
||||||
DPRINT_DBG(VMBUS, "src wrap-around detected!");
|
DPRINT_DBG(VMBUS, "src wrap-around detected!");
|
||||||
|
|
||||||
fragLen = ringBufferSize - StartReadOffset;
|
fragLen = ringBufferSize - StartReadOffset;
|
||||||
|
|
||||||
memcpy(Dest, ringBuffer + StartReadOffset, fragLen);
|
memcpy(Dest, ringBuffer + StartReadOffset, fragLen);
|
||||||
memcpy(Dest + fragLen, ringBuffer, DestLen - fragLen);
|
memcpy(Dest + fragLen, ringBuffer, DestLen - fragLen);
|
||||||
}
|
} else
|
||||||
else
|
|
||||||
{
|
|
||||||
memcpy(Dest, ringBuffer + StartReadOffset, DestLen);
|
memcpy(Dest, ringBuffer + StartReadOffset, DestLen);
|
||||||
}
|
|
||||||
|
|
||||||
StartReadOffset += DestLen;
|
StartReadOffset += DestLen;
|
||||||
StartReadOffset %= ringBufferSize;
|
StartReadOffset %= ringBufferSize;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче