Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 249547
b: refs/heads/master
c: 8f1136a
h: refs/heads/master
i:
  249545: 22fb5ca
  249543: a51158f
v: v3
  • Loading branch information
K. Y. Srinivasan authored and Greg Kroah-Hartman committed May 11, 2011
1 parent 491a774 commit 0a42bb7
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 47 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: b2a5a58551d74f46b70ab9b7c4801b19fee66e9f
refs/heads/master: 8f1136aeb474b14db8f420d4919759b46993830b
83 changes: 37 additions & 46 deletions trunk/drivers/staging/hv/ring_buffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,43 @@ void hv_dump_ring_info(struct hv_ring_buffer_info *ring_info, char *prefix)
}


/*
*
* hv_copyfrom_ringbuffer()
*
* Helper routine to copy to source from ring buffer.
* Assume there is enough room. Handles wrap-around in src case only!!
*
*/
static u32 hv_copyfrom_ringbuffer(
struct hv_ring_buffer_info *ring_info,
void *dest,
u32 destlen,
u32 start_read_offset)
{
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);


start_read_offset += destlen;
start_read_offset %= ring_buffer_size;

return start_read_offset;
}



static u32
hv_copyto_ringbuffer(
Expand All @@ -207,14 +244,6 @@ hv_copyto_ringbuffer(
void *src,
u32 srclen);

static u32
hv_copyfrom_ringbuffer(
struct hv_ring_buffer_info *ring_info,
void *dest,
u32 destlen,
u32 start_read_offset);



/*
*
Expand Down Expand Up @@ -504,41 +533,3 @@ hv_copyto_ringbuffer(
return start_write_offset;
}


/*
*
* hv_copyfrom_ringbuffer()
*
* Helper routine to copy to source from ring buffer.
* Assume there is enough room. Handles wrap-around in src case only!!
*
*/
static u32
hv_copyfrom_ringbuffer(
struct hv_ring_buffer_info *ring_info,
void *dest,
u32 destlen,
u32 start_read_offset)
{
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);


start_read_offset += destlen;
start_read_offset %= ring_buffer_size;

return start_read_offset;
}

0 comments on commit 0a42bb7

Please sign in to comment.