Statistics
| Branch: | Revision:

root / hw / iov.c @ e4d5639d

History | View | Annotate | Download (793 Bytes)

1
/*
2
 * Helpers for getting linearized buffers from iov / filling buffers into iovs
3
 *
4
 * Copyright IBM, Corp. 2007, 2008
5
 * Copyright (C) 2010 Red Hat, Inc.
6
 *
7
 * Author(s):
8
 *  Anthony Liguori <aliguori@us.ibm.com>
9
 *  Amit Shah <amit.shah@redhat.com>
10
 *
11
 * This work is licensed under the terms of the GNU GPL, version 2.  See
12
 * the COPYING file in the top-level directory.
13
 */
14

    
15
#include "iov.h"
16

    
17
size_t iov_from_buf(struct iovec *iov, unsigned int iovcnt,
18
                    const void *buf, size_t size)
19
{
20
    size_t offset;
21
    unsigned int i;
22

    
23
    offset = 0;
24
    for (i = 0; offset < size && i < iovcnt; i++) {
25
        size_t len;
26

    
27
        len = MIN(iov[i].iov_len, size - offset);
28

    
29
        memcpy(iov[i].iov_base, buf + offset, len);
30
        offset += len;
31
    }
32
    return offset;
33
}