diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2018-08-09 23:52:59 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2018-10-07 19:40:30 +0200 |
commit | bc092a72f209ee44326b633c938e2f601b2687bb (patch) | |
tree | b5f7c446620079e8872c6ebff6a62e5553585089 | |
parent | 6b91b5a198091f59d26a8301cf3528b52dce5931 (diff) | |
download | slirp-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.c | 14 | ||||
-rw-r--r-- | mbuf.h | 13 |
2 files changed, 20 insertions, 7 deletions
@@ -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; } @@ -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) \ |