On Sat, Aug 24, 2013 at 04:57:44PM +0000, Andre Oppermann wrote: > Author: andre > Date: Sat Aug 24 16:57:44 2013 > New Revision: 254799 > URL: http://svnweb.freebsd.org/changeset/base/254799 > > Log: > Add an mbuf pointer parameter to (*ext_free) to give the external > free function access to the mbuf the external memory was attached > to. > > Mechanically adjust all users to include the mbuf parameter. > > This fixes a long standing annoyance for external free functions. > Before one had to sacrifice one of the argument pointers for this. >
> Modified: head/sys/kern/uipc_mbuf.c > ============================================================================== > --- head/sys/kern/uipc_mbuf.c Sat Aug 24 16:55:53 2013 (r254798) > +++ head/sys/kern/uipc_mbuf.c Sat Aug 24 16:57:44 2013 (r254799) > @@ -247,8 +247,8 @@ m_freem(struct mbuf *mb) > */ > int > m_extadd(struct mbuf *mb, caddr_t buf, u_int size, > - void (*freef)(void *, void *), void *arg1, void *arg2, int flags, int > type, > - int wait) > + void (*freef)(struct mbuf *, void *, void *), void *arg1, void *arg2, > + int flags, int type, int wait) > { > KASSERT(type != EXT_CLUSTER, ("%s: EXT_CLUSTER not allowed", __func__)); > I think this breaks head/. cc -c -O2 -pipe -fno-strict-aliasing -std=c99 -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign -fformat-extensions -Wmissing-include-dirs -fdiagnostics-show-option -Wno-error-tautological-compare -Wno-error-empty-body -Wno-error-parentheses-equality -nostdinc -I. -I/src/sys -I/src/sys/contrib/altq -I/src/sys/contrib/libfdt -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -DGPROF -DGPROF4 -DGUPROF -fno-builtin -mno-aes -mno-avx -mno-mmx -mno-sse -msoft-float -ffreestanding -fstack-protector -Werror -pg /src/sys/kern/uipc_cow.c /src/sys/kern/uipc_cow.c:164:2: error: incompatible pointer types passing 'void (void *, void *)' to parameter of type 'void (*)(struct mbuf *, void *, void *)' [-Werror,-Wincompatible-pointer-types] MEXTADD(m0, sf_buf_kva(sf), PAGE_SIZE, socow_iodone, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /src/sys/sys/mbuf.h:760:50: note: expanded from macro 'MEXTADD' (void )m_extadd((m), (caddr_t)(buf), (size), (free), (arg1), (arg2),\ ^~~~~~ /src/sys/sys/mbuf.h:898:14: note: passing argument to parameter here void (*)(struct mbuf *, void *, void *), void *, void *, ^ 1 error generated. *** Error code 1 Stop. bmake[1]: stopped in /obj/i386.i386/src/sys/LINT *** Error code 1 http://tinderbox.freebsd.org/tinderbox-head-build-HEAD-i386-i386.full Glen
pgpwL2B9H4Lho.pgp
Description: PGP signature