kernel: Add m_extadd().
authorSascha Wildner <saw@online.de>
Thu, 30 Dec 2010 08:16:56 +0000 (09:16 +0100)
committerSascha Wildner <saw@online.de>
Wed, 7 Sep 2011 18:36:24 +0000 (20:36 +0200)
sys/kern/uipc_mbuf.c
sys/sys/mbuf.h

index 6a12746..71853a6 100644 (file)
@@ -1234,6 +1234,20 @@ m_freem(struct mbuf *m)
 
 #endif
 
+void
+m_extadd(struct mbuf *m, caddr_t buf, u_int size,  void (*reff)(void *),
+    void (*freef)(void *), void *arg)
+{
+       m->m_ext.ext_arg = arg;
+       m->m_ext.ext_buf = buf;
+       m->m_ext.ext_ref = reff;
+       m->m_ext.ext_free = freef;
+       m->m_ext.ext_size = size;
+       reff(arg);
+       m->m_data = buf;
+       m->m_flags |= M_EXT;
+}
+
 /*
  * mbuf utility routines
  */
index ebd3a09..6e6f491 100644 (file)
@@ -499,6 +499,8 @@ struct      mbuf    *m_devget(char *, int, int, struct ifnet *,
 struct mbuf    *m_dup(struct mbuf *, int);
 struct mbuf    *m_dup_data(struct mbuf *, int);
 int             m_dup_pkthdr(struct mbuf *, const struct mbuf *, int);
+void            m_extadd(struct mbuf *, caddr_t, u_int, void (*)(void *),
+                 void (*)(void *), void *);
 #ifdef MBUF_DEBUG
 struct mbuf    *_m_free(struct mbuf *, const char *name);
 void            _m_freem(struct mbuf *, const char *name);