Page MenuHomeFreeBSD

D12615.id33851.diff
No OneTemporary

D12615.id33851.diff

Index: head/share/man/man9/mbpool.9
===================================================================
--- head/share/man/man9/mbpool.9
+++ head/share/man/man9/mbpool.9
@@ -27,7 +27,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd July 15, 2003
+.Dd September 27, 2017
.Dt MBPOOL 9
.Os
.Sh NAME
@@ -50,7 +50,7 @@
.Ft void
.Fn mbp_free "struct mbpool *mbp" "void *p"
.Ft void
-.Fn mbp_ext_free "void *" "void *"
+.Fn mbp_ext_free "struct mbuf *"
.Ft void
.Fn mbp_card_free "struct mbpool *mbp"
.Ft void
@@ -223,8 +223,6 @@
can be given to
.Fn m_extadd
as the free function.
-The user argument must be the pointer to
-the pool.
.Pp
Before using the contents of a buffer returned by the card, the driver
must call
Index: head/share/man/man9/mbuf.9
===================================================================
--- head/share/man/man9/mbuf.9
+++ head/share/man/man9/mbuf.9
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd October 10, 2016
+.Dd September 27, 2017
.Dt MBUF 9
.Os
.\"
@@ -44,12 +44,12 @@
.Fn MCLGET "struct mbuf *mbuf" "int how"
.Fo MEXTADD
.Fa "struct mbuf *mbuf"
-.Fa "caddr_t buf"
+.Fa "char *buf"
.Fa "u_int size"
-.Fa "void (*free)(void *opt_arg1, void *opt_arg2)"
+.Fa "void (*free)(struct mbuf *)"
.Fa "void *opt_arg1"
.Fa "void *opt_arg2"
-.Fa "short flags"
+.Fa "int flags"
.Fa "int type"
.Fc
.\"
@@ -416,8 +416,13 @@
.Fa opt_arg1
and
.Fa opt_arg2
-arguments will be passed unmodified to
-.Fa free .
+arguments will be saved in
+.Va ext_arg1
+and
+.Va ext_arg2
+fields of the
+.Va struct m_ext
+of the mbuf.
The
.Fa flags
argument specifies additional
Index: head/sys/compat/ndis/kern_ndis.c
===================================================================
--- head/sys/compat/ndis/kern_ndis.c
+++ head/sys/compat/ndis/kern_ndis.c
@@ -495,17 +495,21 @@
KeReleaseSpinLock(&block->nmb_returnlock, irql);
}
+static void
+ndis_ext_free(struct mbuf *m)
+{
+
+ return (ndis_return_packet(m->m_ext.ext_arg1));
+}
+
void
-ndis_return_packet(struct mbuf *m, void *buf, void *arg)
+ndis_return_packet(ndis_packet *p)
{
- ndis_packet *p;
ndis_miniport_block *block;
- if (arg == NULL)
+ if (p == NULL)
return;
- p = arg;
-
/* Decrement refcount. */
p->np_refcnt--;
@@ -676,9 +680,8 @@
return (ENOBUFS);
}
m->m_len = MmGetMdlByteCount(buf);
- m->m_data = MmGetMdlVirtualAddress(buf);
- MEXTADD(m, m->m_data, m->m_len, ndis_return_packet,
- m->m_data, p, 0, EXT_NDIS);
+ m_extadd(m, MmGetMdlVirtualAddress(buf), m->m_len,
+ ndis_ext_free, p, NULL, 0, EXT_NDIS);
p->np_refcnt++;
totlen += m->m_len;
Index: head/sys/compat/ndis/ndis_var.h
===================================================================
--- head/sys/compat/ndis/ndis_var.h
+++ head/sys/compat/ndis/ndis_var.h
@@ -1743,7 +1743,7 @@
extern int ndis_shutdown_nic(void *);
extern int ndis_pnpevent_nic(void *, int);
extern int ndis_init_nic(void *);
-extern void ndis_return_packet(struct mbuf *, void *, void *);
+extern void ndis_return_packet(ndis_packet *);
extern int ndis_init_dma(void *);
extern int ndis_destroy_dma(void *);
extern int ndis_create_sysctls(void *);
Index: head/sys/dev/cas/if_cas.c
===================================================================
--- head/sys/dev/cas/if_cas.c
+++ head/sys/dev/cas/if_cas.c
@@ -133,7 +133,7 @@
static int cas_disable_rx(struct cas_softc *sc);
static int cas_disable_tx(struct cas_softc *sc);
static void cas_eint(struct cas_softc *sc, u_int status);
-static void cas_free(struct mbuf *m, void *arg1, void* arg2);
+static void cas_free(struct mbuf *m);
static void cas_init(void *xsc);
static void cas_init_locked(struct cas_softc *sc);
static void cas_init_regs(struct cas_softc *sc);
@@ -1732,16 +1732,10 @@
refcount_acquire(&rxds->rxds_refcount);
bus_dmamap_sync(sc->sc_rdmatag,
rxds->rxds_dmamap, BUS_DMASYNC_POSTREAD);
-#if __FreeBSD_version < 800016
- MEXTADD(m, (caddr_t)rxds->rxds_buf +
+ m_extadd(m, (char *)rxds->rxds_buf +
off * 256 + ETHER_ALIGN, len, cas_free,
- rxds, M_RDONLY, EXT_NET_DRV);
-#else
- MEXTADD(m, (caddr_t)rxds->rxds_buf +
- off * 256 + ETHER_ALIGN, len, cas_free,
sc, (void *)(uintptr_t)idx,
M_RDONLY, EXT_NET_DRV);
-#endif
if ((m->m_flags & M_EXT) == 0) {
m_freem(m);
m = NULL;
@@ -1779,16 +1773,10 @@
m->m_len = min(CAS_PAGE_SIZE - off, len);
bus_dmamap_sync(sc->sc_rdmatag,
rxds->rxds_dmamap, BUS_DMASYNC_POSTREAD);
-#if __FreeBSD_version < 800016
- MEXTADD(m, (caddr_t)rxds->rxds_buf + off,
- m->m_len, cas_free, rxds, M_RDONLY,
- EXT_NET_DRV);
-#else
- MEXTADD(m, (caddr_t)rxds->rxds_buf + off,
+ m_extadd(m, (char *)rxds->rxds_buf + off,
m->m_len, cas_free, sc,
(void *)(uintptr_t)idx, M_RDONLY,
EXT_NET_DRV);
-#endif
if ((m->m_flags & M_EXT) == 0) {
m_freem(m);
m = NULL;
@@ -1818,19 +1806,11 @@
sc->sc_rdmatag,
rxds2->rxds_dmamap,
BUS_DMASYNC_POSTREAD);
-#if __FreeBSD_version < 800016
- MEXTADD(m2,
- (caddr_t)rxds2->rxds_buf,
- m2->m_len, cas_free,
- rxds2, M_RDONLY,
- EXT_NET_DRV);
-#else
- MEXTADD(m2,
- (caddr_t)rxds2->rxds_buf,
+ m_extadd(m2,
+ (char *)rxds2->rxds_buf,
m2->m_len, cas_free, sc,
(void *)(uintptr_t)idx2,
M_RDONLY, EXT_NET_DRV);
-#endif
if ((m2->m_flags & M_EXT) ==
0) {
m_freem(m2);
@@ -1889,21 +1869,15 @@
}
static void
-cas_free(struct mbuf *m, void *arg1, void *arg2)
+cas_free(struct mbuf *m)
{
struct cas_rxdsoft *rxds;
struct cas_softc *sc;
u_int idx, locked;
-#if __FreeBSD_version < 800016
- rxds = arg2;
- sc = rxds->rxds_sc;
- idx = rxds->rxds_idx;
-#else
- sc = arg1;
- idx = (uintptr_t)arg2;
+ sc = m->m_ext.ext_arg1;
+ idx = (uintptr_t)m->m_ext.ext_arg2;
rxds = &sc->sc_rxdsoft[idx];
-#endif
if (refcount_release(&rxds->rxds_refcount) == 0)
return;
Index: head/sys/dev/cas/if_casvar.h
===================================================================
--- head/sys/dev/cas/if_casvar.h
+++ head/sys/dev/cas/if_casvar.h
@@ -119,10 +119,6 @@
void *rxds_buf; /* receive buffer */
bus_dmamap_t rxds_dmamap; /* our DMA map */
bus_addr_t rxds_paddr; /* physical address of the segment */
-#if __FreeBSD_version < 800016
- struct cas_softc *rxds_sc; /* softc pointer */
- u_int rxds_idx; /* our index */
-#endif
u_int rxds_refcount; /* hardware + mbuf references */
};
@@ -239,18 +235,7 @@
__CAS_UPDATE_RXDESC(&(sc)->sc_rxdescs[(d)], \
&(sc)->sc_rxdsoft[(s)], (s))
-#if __FreeBSD_version < 800016
-#define CAS_INIT_RXDESC(sc, d, s) \
-do { \
- struct cas_rxdsoft *__rxds = &(sc)->sc_rxdsoft[(s)]; \
- \
- __rxds->rxds_sc = (sc); \
- __rxds->rxds_idx = (s); \
- __CAS_UPDATE_RXDESC(&(sc)->sc_rxdescs[(d)], __rxds, (s)); \
-} while (0)
-#else
#define CAS_INIT_RXDESC(sc, d, s) CAS_UPDATE_RXDESC(sc, d, s)
-#endif
#define CAS_LOCK_INIT(_sc, _name) \
mtx_init(&(_sc)->sc_mtx, _name, MTX_NETWORK_LOCK, MTX_DEF)
Index: head/sys/dev/cxgbe/t4_sge.c
===================================================================
--- head/sys/dev/cxgbe/t4_sge.c
+++ head/sys/dev/cxgbe/t4_sge.c
@@ -1670,10 +1670,10 @@
}
static void
-rxb_free(struct mbuf *m, void *arg1, void *arg2)
+rxb_free(struct mbuf *m)
{
- uma_zone_t zone = arg1;
- caddr_t cl = arg2;
+ uma_zone_t zone = m->m_ext.ext_arg1;
+ void *cl = m->m_ext.ext_arg2;
uma_zfree(zone, cl);
counter_u64_add(extfree_rels, 1);
Index: head/sys/dev/cxgbe/tom/t4_cpl_io.c
===================================================================
--- head/sys/dev/cxgbe/tom/t4_cpl_io.c
+++ head/sys/dev/cxgbe/tom/t4_cpl_io.c
@@ -1979,9 +1979,9 @@
}
static void
-t4_aiotx_mbuf_free(struct mbuf *m, void *buffer, void *arg)
+t4_aiotx_mbuf_free(struct mbuf *m)
{
- struct aiotx_buffer *ab = buffer;
+ struct aiotx_buffer *ab = m->m_ext.ext_arg1;
#ifdef VERBOSE_TRACES
CTR3(KTR_CXGBE, "%s: completed %d bytes for tid %d", __func__,
Index: head/sys/dev/dpaa/if_dtsec_rm.c
===================================================================
--- head/sys/dev/dpaa/if_dtsec_rm.c
+++ head/sys/dev/dpaa/if_dtsec_rm.c
@@ -337,11 +337,13 @@
* @{
*/
static void
-dtsec_rm_fqr_mext_free(struct mbuf *m, void *buffer, void *arg)
+dtsec_rm_fqr_mext_free(struct mbuf *m)
{
struct dtsec_softc *sc;
+ void *buffer;
- sc = arg;
+ buffer = m->m_ext.ext_arg1;
+ sc = m->m_ext.ext_arg2;
if (bman_count(sc->sc_rx_pool) <= DTSEC_RM_POOL_RX_MAX_SIZE)
bman_put_buffer(sc->sc_rx_pool, buffer);
else
Index: head/sys/dev/if_ndis/if_ndis.c
===================================================================
--- head/sys/dev/if_ndis/if_ndis.c
+++ head/sys/dev/if_ndis/if_ndis.c
@@ -1418,7 +1418,7 @@
p = packets[i];
if (p->np_oob.npo_status == NDIS_STATUS_SUCCESS) {
p->np_refcnt++;
- (void)ndis_return_packet(NULL ,p, block);
+ ndis_return_packet(p);
}
}
return;
@@ -1431,7 +1431,7 @@
if (ndis_ptom(&m0, p)) {
device_printf(sc->ndis_dev, "ptom failed\n");
if (p->np_oob.npo_status == NDIS_STATUS_SUCCESS)
- (void)ndis_return_packet(NULL, p, block);
+ ndis_return_packet(p);
} else {
#ifdef notdef
if (p->np_oob.npo_status == NDIS_STATUS_RESOURCES) {
Index: head/sys/dev/iscsi_initiator/isc_soc.c
===================================================================
--- head/sys/dev/iscsi_initiator/isc_soc.c
+++ head/sys/dev/iscsi_initiator/isc_soc.c
@@ -70,12 +70,13 @@
| function for freeing external storage for mbuf
*/
static void
-ext_free(struct mbuf *m, void *a, void *b)
+ext_free(struct mbuf *m)
{
- pduq_t *pq = b;
+ pduq_t *pq = m->m_ext.ext_arg1;
if(pq->buf != NULL) {
- debug(3, "ou_refcnt=%d a=%p b=%p", ou_refcnt, a, pq->buf);
+ debug(3, "ou_refcnt=%d a=%p b=%p",
+ ou_refcnt, m->m_ext.ext_buf, pq->buf);
free(pq->buf, M_ISCSIBUF);
pq->buf = NULL;
}
@@ -137,11 +138,8 @@
md->m_ext.ext_cnt = &ou_refcnt;
l = min(MCLBYTES, len);
debug(4, "setting ext_free(arg=%p len/l=%d/%d)", pq->buf, len, l);
- MEXTADD(md, pp->ds_addr + off, l, ext_free,
-#if __FreeBSD_version >= 800000
- pp->ds_addr + off,
-#endif
- pq, 0, EXT_EXTREF);
+ m_extadd(md, pp->ds_addr + off, l, ext_free, pq, NULL, 0,
+ EXT_EXTREF);
md->m_len = l;
md->m_next = NULL;
mh->m_pkthdr.len += l;
Index: head/sys/dev/lge/if_lge.c
===================================================================
--- head/sys/dev/lge/if_lge.c
+++ head/sys/dev/lge/if_lge.c
@@ -123,7 +123,7 @@
static int lge_alloc_jumbo_mem(struct lge_softc *);
static void lge_free_jumbo_mem(struct lge_softc *);
static void *lge_jalloc(struct lge_softc *);
-static void lge_jfree(struct mbuf *, void *, void *);
+static void lge_jfree(struct mbuf *);
static int lge_newbuf(struct lge_softc *, struct lge_rx_desc *, struct mbuf *);
static int lge_encap(struct lge_softc *, struct mbuf *, u_int32_t *);
@@ -689,7 +689,7 @@
struct mbuf *m;
{
struct mbuf *m_new = NULL;
- caddr_t *buf = NULL;
+ char *buf = NULL;
if (m == NULL) {
MGETHDR(m_new, M_NOWAIT, MT_DATA);
@@ -710,10 +710,9 @@
return(ENOBUFS);
}
/* Attach the buffer to the mbuf */
- m_new->m_data = (void *)buf;
m_new->m_len = m_new->m_pkthdr.len = LGE_JUMBO_FRAMELEN;
- MEXTADD(m_new, buf, LGE_JUMBO_FRAMELEN, lge_jfree,
- buf, (struct lge_softc *)sc, 0, EXT_NET_DRV);
+ m_extadd(m_new, buf, LGE_JUMBO_FRAMELEN, lge_jfree, sc, NULL,
+ 0, EXT_NET_DRV);
} else {
m_new = m;
m_new->m_len = m_new->m_pkthdr.len = LGE_JUMBO_FRAMELEN;
@@ -848,20 +847,20 @@
* Release a jumbo buffer.
*/
static void
-lge_jfree(struct mbuf *m, void *buf, void *args)
+lge_jfree(struct mbuf *m)
{
struct lge_softc *sc;
int i;
struct lge_jpool_entry *entry;
/* Extract the softc struct pointer. */
- sc = args;
+ sc = m->m_ext.ext_arg1;
if (sc == NULL)
panic("lge_jfree: can't find softc pointer!");
/* calculate the slot this buffer belongs to */
- i = ((vm_offset_t)buf
+ i = ((vm_offset_t)m->m_ext.ext_buf
- (vm_offset_t)sc->lge_cdata.lge_jumbo_buf) / LGE_JLEN;
if ((i < 0) || (i >= LGE_JSLOTS))
Index: head/sys/dev/mwl/if_mwl.c
===================================================================
--- head/sys/dev/mwl/if_mwl.c
+++ head/sys/dev/mwl/if_mwl.c
@@ -2522,12 +2522,12 @@
}
static void
-mwl_ext_free(struct mbuf *m, void *data, void *arg)
+mwl_ext_free(struct mbuf *m)
{
- struct mwl_softc *sc = arg;
+ struct mwl_softc *sc = m->m_ext.ext_arg1;
/* XXX bounds check data */
- mwl_putrxdma(sc, data);
+ mwl_putrxdma(sc, m->m_ext.ext_buf);
/*
* If we were previously blocked by a lack of rx dma buffers
* check if we now have enough to restart rx interrupt handling.
@@ -2746,8 +2746,8 @@
* descriptor using the replacement dma
* buffer we just installed above.
*/
- MEXTADD(m, data, MWL_AGGR_SIZE, mwl_ext_free,
- data, sc, 0, EXT_NET_DRV);
+ m_extadd(m, data, MWL_AGGR_SIZE, mwl_ext_free, sc, NULL, 0,
+ EXT_NET_DRV);
m->m_data += off - hdrlen;
m->m_pkthdr.len = m->m_len = pktlen;
/* NB: dma buffer assumed read-only */
Index: head/sys/dev/netmap/netmap_generic.c
===================================================================
--- head/sys/dev/netmap/netmap_generic.c
+++ head/sys/dev/netmap/netmap_generic.c
@@ -166,7 +166,7 @@
* has a KASSERT(), checking that the mbuf dtor function is not NULL.
*/
-static void void_mbuf_dtor(struct mbuf *m, void *arg1, void *arg2) { }
+static void void_mbuf_dtor(struct mbuf *m) { }
#define SET_MBUF_DESTRUCTOR(m, fn) do { \
(m)->m_ext.ext_free = (fn != NULL) ? \
@@ -624,7 +624,7 @@
* txsync. */
netmap_generic_irq(na, r, NULL);
#ifdef __FreeBSD__
- void_mbuf_dtor(m, NULL, NULL);
+ void_mbuf_dtor(m);
#endif
}
Index: head/sys/dev/wb/if_wb.c
===================================================================
--- head/sys/dev/wb/if_wb.c
+++ head/sys/dev/wb/if_wb.c
@@ -143,7 +143,7 @@
static int wb_attach(device_t);
static int wb_detach(device_t);
-static void wb_bfree(struct mbuf *, void *addr, void *args);
+static void wb_bfree(struct mbuf *);
static int wb_newbuf(struct wb_softc *, struct wb_chain_onefrag *,
struct mbuf *);
static int wb_encap(struct wb_softc *, struct wb_chain *, struct mbuf *);
@@ -824,7 +824,7 @@
}
static void
-wb_bfree(struct mbuf *m, void *buf, void *args)
+wb_bfree(struct mbuf *m)
{
}
@@ -843,10 +843,9 @@
MGETHDR(m_new, M_NOWAIT, MT_DATA);
if (m_new == NULL)
return(ENOBUFS);
- m_new->m_data = c->wb_buf;
m_new->m_pkthdr.len = m_new->m_len = WB_BUFBYTES;
- MEXTADD(m_new, c->wb_buf, WB_BUFBYTES, wb_bfree, c->wb_buf,
- NULL, 0, EXT_NET_DRV);
+ m_extadd(m_new, c->wb_buf, WB_BUFBYTES, wb_bfree, NULL, NULL,
+ 0, EXT_NET_DRV);
} else {
m_new = m;
m_new->m_len = m_new->m_pkthdr.len = WB_BUFBYTES;
Index: head/sys/kern/kern_mbuf.c
===================================================================
--- head/sys/kern/kern_mbuf.c
+++ head/sys/kern/kern_mbuf.c
@@ -504,7 +504,7 @@
#endif
m = (struct mbuf *)arg;
if (m != NULL) {
- m->m_ext.ext_buf = (caddr_t)mem;
+ m->m_ext.ext_buf = (char *)mem;
m->m_data = m->m_ext.ext_buf;
m->m_flags |= M_EXT;
m->m_ext.ext_free = NULL;
@@ -688,15 +688,13 @@
case EXT_DISPOSABLE:
KASSERT(m->m_ext.ext_free != NULL,
("%s: ext_free not set", __func__));
- (*(m->m_ext.ext_free))(m, m->m_ext.ext_arg1,
- m->m_ext.ext_arg2);
+ m->m_ext.ext_free(m);
uma_zfree(zone_mbuf, mref);
break;
case EXT_EXTREF:
KASSERT(m->m_ext.ext_free != NULL,
("%s: ext_free not set", __func__));
- (*(m->m_ext.ext_free))(m, m->m_ext.ext_arg1,
- m->m_ext.ext_arg2);
+ m->m_ext.ext_free(m);
break;
default:
KASSERT(m->m_ext.ext_type == 0,
@@ -918,9 +916,8 @@
* Nothing.
*/
void
-m_extadd(struct mbuf *mb, caddr_t buf, u_int size,
- void (*freef)(struct mbuf *, void *, void *), void *arg1, void *arg2,
- int flags, int type)
+m_extadd(struct mbuf *mb, char *buf, u_int size, m_ext_free_t freef,
+ void *arg1, void *arg2, int flags, int type)
{
KASSERT(type != EXT_CLUSTER, ("%s: EXT_CLUSTER not allowed", __func__));
Index: head/sys/kern/subr_mbpool.c
===================================================================
--- head/sys/kern/subr_mbpool.c
+++ head/sys/kern/subr_mbpool.c
@@ -281,10 +281,10 @@
* Mbuf system external mbuf free routine
*/
void
-mbp_ext_free(struct mbuf *m, void *buf, void *arg)
+mbp_ext_free(struct mbuf *m)
{
- mbp_free(arg, buf);
+ mbp_free(m->m_ext.ext_arg2, m->m_ext.ext_arg1);
}
/*
Index: head/sys/sys/mbpool.h
===================================================================
--- head/sys/sys/mbpool.h
+++ head/sys/sys/mbpool.h
@@ -69,7 +69,7 @@
void mbp_free(struct mbpool *, void *);
/* free a chunk that is an external mbuf */
-void mbp_ext_free(struct mbuf *, void *, void *);
+void mbp_ext_free(struct mbuf *);
/* free all buffers that are marked to be on the card */
void mbp_card_free(struct mbpool *);
Index: head/sys/sys/mbuf.h
===================================================================
--- head/sys/sys/mbuf.h
+++ head/sys/sys/mbuf.h
@@ -197,17 +197,17 @@
* Compile-time assertions in uipc_mbuf.c test these values to ensure that
* they are correct.
*/
+typedef void m_ext_free_t(struct mbuf *);
struct m_ext {
union {
volatile u_int ext_count; /* value of ref count info */
volatile u_int *ext_cnt; /* pointer to ref count info */
};
- caddr_t ext_buf; /* start of buffer */
+ char *ext_buf; /* start of buffer */
uint32_t ext_size; /* size of buffer, for ext_free */
uint32_t ext_type:8, /* type of external storage */
ext_flags:24; /* external storage mbuf flags */
- void (*ext_free) /* free routine if not the usual */
- (struct mbuf *, void *, void *);
+ m_ext_free_t *ext_free; /* free routine if not the usual */
void *ext_arg1; /* optional argument pointer */
void *ext_arg2; /* optional argument pointer */
};
@@ -436,10 +436,10 @@
#define EXT_FLAG_NOFREE 0x000010 /* don't free mbuf to pool, notyet */
-#define EXT_FLAG_VENDOR1 0x010000 /* for vendor-internal use */
-#define EXT_FLAG_VENDOR2 0x020000 /* for vendor-internal use */
-#define EXT_FLAG_VENDOR3 0x040000 /* for vendor-internal use */
-#define EXT_FLAG_VENDOR4 0x080000 /* for vendor-internal use */
+#define EXT_FLAG_VENDOR1 0x010000 /* These flags are vendor */
+#define EXT_FLAG_VENDOR2 0x020000 /* or submodule specific, */
+#define EXT_FLAG_VENDOR3 0x040000 /* not used by mbuf code. */
+#define EXT_FLAG_VENDOR4 0x080000 /* Set/read by submodule. */
#define EXT_FLAG_EXP1 0x100000 /* for experimental use */
#define EXT_FLAG_EXP2 0x200000 /* for experimental use */
@@ -610,9 +610,8 @@
void (*)(char *, caddr_t, u_int));
struct mbuf *m_dup(const struct mbuf *, int);
int m_dup_pkthdr(struct mbuf *, const struct mbuf *, int);
-void m_extadd(struct mbuf *, caddr_t, u_int,
- void (*)(struct mbuf *, void *, void *), void *, void *,
- int, int);
+void m_extadd(struct mbuf *, char *, u_int, m_ext_free_t,
+ void *, void *, int, int);
u_int m_fixhdr(struct mbuf *);
struct mbuf *m_fragment(struct mbuf *, int, int);
void m_freem(struct mbuf *);
@@ -667,8 +666,8 @@
* Associated an external reference counted buffer with an mbuf.
*/
static __inline void
-m_extaddref(struct mbuf *m, caddr_t buf, u_int size, u_int *ref_cnt,
- void (*freef)(struct mbuf *, void *, void *), void *arg1, void *arg2)
+m_extaddref(struct mbuf *m, char *buf, u_int size, u_int *ref_cnt,
+ m_ext_free_t freef, void *arg1, void *arg2)
{
KASSERT(ref_cnt != NULL, ("%s: ref_cnt not provided", __func__));
@@ -864,7 +863,7 @@
#define MGETHDR(m, how, type) ((m) = m_gethdr((how), (type)))
#define MCLGET(m, how) m_clget((m), (how))
#define MEXTADD(m, buf, size, free, arg1, arg2, flags, type) \
- m_extadd((m), (caddr_t)(buf), (size), (free), (arg1), (arg2), \
+ m_extadd((m), (char *)(buf), (size), (free), (arg1), (arg2), \
(flags), (type))
#define m_getm(m, len, how, type) \
m_getm2((m), (len), (how), (type), M_PKTHDR)

File Metadata

Mime Type
text/plain
Expires
Sun, Nov 16, 10:22 AM (14 h, 52 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25353765
Default Alt Text
D12615.id33851.diff (19 KB)

Event Timeline