summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2000-02-07 02:25:46 +0000
committerRoland McGrath <roland@gnu.org>2000-02-07 02:25:46 +0000
commit96b2a9a9c243bf9d93b3b2737aef62e281000097 (patch)
treed6b303c32b66f1379fbdf2fc33e817d939fc5f35
parent0a29ea98d32fce9b6ac6a3ed84f65ebc865a253b (diff)
2000-02-06 Roland McGrath <roland@baalperazim.frob.com>
* glue-include/linux/socket.h (memcpy_fromiovec): Update *IOV to consume bytes copied from the available buffer. (memcpy_tokerneliovec): Likewise. (memcpy_toiovec): Just call memcpy_tokerneliovec.
-rw-r--r--pfinet/glue-include/linux/socket.h21
1 files changed, 12 insertions, 9 deletions
diff --git a/pfinet/glue-include/linux/socket.h b/pfinet/glue-include/linux/socket.h
index 12c73bfa..8d5774de 100644
--- a/pfinet/glue-include/linux/socket.h
+++ b/pfinet/glue-include/linux/socket.h
@@ -90,7 +90,7 @@ struct ucred {
};
-extern inline int
+extern inline int /* Does not modify IOV. */
memcpy_fromiovecend (unsigned char *kdata, struct iovec *iov,
int offset, int len)
{
@@ -98,25 +98,28 @@ memcpy_fromiovecend (unsigned char *kdata, struct iovec *iov,
memcpy (kdata, iov->iov_base + offset, len);
return 0;
}
-extern inline int
+extern inline int /* Modifies IOV to consume LEN bytes. */
memcpy_fromiovec (unsigned char *kdata, struct iovec *iov, int len)
{
assert (len <= iov->iov_len);
memcpy (kdata, iov->iov_base, len);
+ iov->iov_base += len;
+ iov->iov_len -= len;
return 0;
}
-extern inline int
-memcpy_toiovec (struct iovec *iov, unsigned char *kdata, int len)
+extern inline void /* Modifies IOV to consume LEN bytes. */
+memcpy_tokerneliovec (struct iovec *iov, unsigned char *kdata, int len)
{
assert (len <= iov->iov_len);
memcpy (iov->iov_base, kdata, len);
- return 0;
+ iov->iov_base += len;
+ iov->iov_len -= len;
}
-extern inline void
-memcpy_tokerneliovec (struct iovec *iov, unsigned char *kdata, int len)
+extern inline int /* Modifies IOV to consume LEN bytes. */
+memcpy_toiovec (struct iovec *iov, unsigned char *kdata, int len)
{
- assert (len <= iov->iov_len);
- memcpy (iov->iov_base, kdata, len);
+ memcpy_tokerneliovec (iov, kdata, len);
+ return 0;
}
extern int csum_partial_copy_fromiovecend(unsigned char *kdata,