aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2018-08-09 23:52:59 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2018-10-07 19:40:30 +0200
commitbc092a72f209ee44326b633c938e2f601b2687bb (patch)
treeb5f7c446620079e8872c6ebff6a62e5553585089
parent6b91b5a198091f59d26a8301cf3528b52dce5931 (diff)
downloadslirp-bc092a72f209ee44326b633c938e2f601b2687bb.zip
slirp-bc092a72f209ee44326b633c938e2f601b2687bb.tar.gz
slirp-bc092a72f209ee44326b633c938e2f601b2687bb.tar.bz2
slirp: document mbuf pointers and sizes
and fix confusing datasize name into gapsize in m_inc. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
-rw-r--r--mbuf.c14
-rw-r--r--mbuf.h13
2 files changed, 20 insertions, 7 deletions
diff --git a/mbuf.c b/mbuf.c
index 9335f9e..79abd18 100644
--- a/mbuf.c
+++ b/mbuf.c
@@ -145,7 +145,7 @@ void m_cat(struct mbuf *m, struct mbuf *n)
/* make m 'size' bytes large from m_data */
void m_inc(struct mbuf *m, int size)
{
- int datasize;
+ int gapsize;
/* some compilers throw up on gotos. This one we can fake. */
if (M_ROOM(m) > size) {
@@ -153,17 +153,17 @@ void m_inc(struct mbuf *m, int size)
}
if (m->m_flags & M_EXT) {
- datasize = m->m_data - m->m_ext;
- m->m_ext = g_realloc(m->m_ext, size + datasize);
+ gapsize = m->m_data - m->m_ext;
+ m->m_ext = g_realloc(m->m_ext, size + gapsize);
} else {
- datasize = m->m_data - m->m_dat;
- m->m_ext = g_malloc(size + datasize);
+ gapsize = m->m_data - m->m_dat;
+ m->m_ext = g_malloc(size + gapsize);
memcpy(m->m_ext, m->m_dat, m->m_size);
m->m_flags |= M_EXT;
}
- m->m_data = m->m_ext + datasize;
- m->m_size = size + datasize;
+ m->m_data = m->m_ext + gapsize;
+ m->m_size = size + gapsize;
}
diff --git a/mbuf.h b/mbuf.h
index ec396c8..5aaf2b4 100644
--- a/mbuf.h
+++ b/mbuf.h
@@ -48,6 +48,19 @@
*/
/*
+ * mbufs allow to have a gap between the start of the allocated buffer (m_ext if
+ * M_EXT is set, m_dat otherwise) and the in-use data:
+ *
+ * |--gapsize----->|---m_len------->
+ * |----------m_size------------------------------>
+ * |----M_ROOM-------------------->
+ * |-M_FREEROOM-->
+ *
+ * ^ ^ ^
+ * m_dat/m_ext m_data end of buffer
+ */
+
+/*
* How much room is in the mbuf, from m_data to the end of the mbuf
*/
#define M_ROOM(m) \