Skip to content

Commit

Permalink
Drivers: hv: ring_buffer: use wrap around mappings in hv_copy{from, t…
Browse files Browse the repository at this point in the history
…o}_ringbuffer()

With wrap around mappings for ring buffers we can always use a single
memcpy() to do the job.

Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Tested-by: Dexuan Cui <decui@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Vitaly Kuznetsov authored and Greg Kroah-Hartman committed Sep 2, 2016
1 parent 9988ce6 commit f24f0b4
Showing 1 changed file with 3 additions and 21 deletions.
24 changes: 3 additions & 21 deletions drivers/hv/ring_buffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -172,18 +172,7 @@ static u32 hv_copyfrom_ringbuffer(
void *ring_buffer = hv_get_ring_buffer(ring_info);
u32 ring_buffer_size = hv_get_ring_buffersize(ring_info);

u32 frag_len;

/* wrap-around detected at the src */
if (destlen > ring_buffer_size - start_read_offset) {
frag_len = ring_buffer_size - start_read_offset;

memcpy(dest, ring_buffer + start_read_offset, frag_len);
memcpy(dest + frag_len, ring_buffer, destlen - frag_len);
} else

memcpy(dest, ring_buffer + start_read_offset, destlen);

memcpy(dest, ring_buffer + start_read_offset, destlen);

start_read_offset += destlen;
start_read_offset %= ring_buffer_size;
Expand All @@ -204,15 +193,8 @@ static u32 hv_copyto_ringbuffer(
{
void *ring_buffer = hv_get_ring_buffer(ring_info);
u32 ring_buffer_size = hv_get_ring_buffersize(ring_info);
u32 frag_len;

/* wrap-around detected! */
if (srclen > ring_buffer_size - start_write_offset) {
frag_len = ring_buffer_size - start_write_offset;
memcpy(ring_buffer + start_write_offset, src, frag_len);
memcpy(ring_buffer, src + frag_len, srclen - frag_len);
} else
memcpy(ring_buffer + start_write_offset, src, srclen);

memcpy(ring_buffer + start_write_offset, src, srclen);

start_write_offset += srclen;
start_write_offset %= ring_buffer_size;
Expand Down

0 comments on commit f24f0b4

Please sign in to comment.