Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 5 Jun 2012 15:27:51 +0200
From:      Matthias Apitz <guru@unixarea.de>
To:        John Baldwin <jhb@freebsd.org>
Cc:        swills@freebsd.org, freebsd-current@freebsd.org
Subject:   Re: 10-CURRENT r235646 && open-vm-tools-8.6.0-425873
Message-ID:  <20120605132750.GA2122@tiny>
In-Reply-To: <201205311134.55258.jhb@freebsd.org>
References:  <20120526142229.GA3893@tinyCurrent> <201205311134.55258.jhb@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
El día Thursday, May 31, 2012 a las 11:34:55AM -0400, John Baldwin escribió:

> > cc1: warnings being treated as errors
> > if_vxn.c: In function 'vxn_load_multicast':
> > if_vxn.c:719: warning: implicit declaration of function 'IF_ADDR_LOCK'
> > if_vxn.c:719: warning: nested extern declaration of 'IF_ADDR_LOCK'
> > [-Wnested-ext erns]
> > if_vxn.c:746: warning: implicit declaration of function 'IF_ADDR_UNLOCK'
> > if_vxn.c:746: warning: nested extern declaration of 'IF_ADDR_UNLOCK'
> > [-Wnested-e xterns]
> > *** [if_vxn.o] Error code 1
> > 

> It should be using if_mcast_rlock() and if_mcast_runlock() instead of using 
> those macros directly.  This works all the way back to 8.0.
> 

Thanks for your patch proposal; but using this it can't find the
if_mcast_rlock() and if_mcast_runlock() functions declaration (and I
don't see them in /usr/src/... );

based on the SVN diff of the kernel:

http://svnweb.freebsd.org/base/head/sys/net/if_var.h?r1=231229&r2=233202&pathrev=233202

I came up with another proposal:

*** modules/freebsd/vmxnet/net_compat.h.orig    Wed Sep 21 20:25:15 2011
--- modules/freebsd/vmxnet/net_compat.h Tue Jun  5 15:13:55 2012
***************
*** 170,178 ****
  #if __FreeBSD_version < 505000
  #   define VXN_IF_ADDR_LOCK(_ifp)
  #   define VXN_IF_ADDR_UNLOCK(_ifp)
  #else
! #   define VXN_IF_ADDR_LOCK(_ifp)       IF_ADDR_LOCK((_ifp))
! #   define VXN_IF_ADDR_UNLOCK(_ifp)     IF_ADDR_UNLOCK((_ifp))
  #endif

  #endif /* _VXN_NET_COMPAT_H_ */
--- 170,181 ----
  #if __FreeBSD_version < 505000
  #   define VXN_IF_ADDR_LOCK(_ifp)
  #   define VXN_IF_ADDR_UNLOCK(_ifp)
+ #elif __FreeBSD_version < 800000
+ #  define VXN_IF_ADDR_LOCK(_ifp)           IF_ADDR_LOCK((_ifp))
+ #  define VXN_IF_ADDR_UNLOCK(_ifp)         IF_ADDR_UNLOCK((_ifp))
  #else
! #  define VXN_IF_ADDR_LOCK(_ifp)           IF_ADDR_WLOCK((_ifp))
! #  define VXN_IF_ADDR_UNLOCK(_ifp)         IF_ADDR_WUNLOCK((_ifp))
  #endif

  #endif /* _VXN_NET_COMPAT_H_ */

and using this it compiles fine; but later on it has another problem:

# make install clean
...
Making all in modules
make VM_UNAME=10.0-CURRENT MV=mv RM=rm       OVT_SOURCE_DIR=/usr/ports/emulators/open-vm-tools/work/open-vm-tools-8.6.0-425873                  MODULEBUILDDIR=/usr/ports/emulators/open-vm-tools/work/open-vm-tools-8.6.0-425873/modules/freebsd          -C "/usr/ports/emulators/open-vm-tools/work/open-vm-tools-8.6.0-425873/modules/freebsd/vmmemctl"
make VM_UNAME=10.0-CURRENT MV=mv RM=rm       OVT_SOURCE_DIR=/usr/ports/emulators/open-vm-tools/work/open-vm-tools-8.6.0-425873                  MODULEBUILDDIR=/usr/ports/emulators/open-vm-tools/work/open-vm-tools-8.6.0-425873/modules/freebsd          -C "/usr/ports/emulators/open-vm-tools/work/open-vm-tools-8.6.0-425873/modules/freebsd/vmxnet"
make VM_UNAME=10.0-CURRENT MV=mv RM=rm       OVT_SOURCE_DIR=/usr/ports/emulators/open-vm-tools/work/open-vm-tools-8.6.0-425873                  MODULEBUILDDIR=/usr/ports/emulators/open-vm-tools/work/open-vm-tools-8.6.0-425873/modules/freebsd          -C "/usr/ports/emulators/open-vm-tools/work/open-vm-tools-8.6.0-425873/modules/freebsd/vmblock"
Warning: Object directory not changed from original /usr/ports/emulators/open-vm-tools/work/open-vm-tools-8.6.0-425873/modules/freebsd/vmblock
cc -O2 -pipe  -Wall -Werror -fno-strict-aliasing -Werror -D_KERNEL -DKLD_MODULE -nostdinc  -I/usr/ports/emulators/open-vm-tools/work/open-vm-tools-8.6.0-425873/lib/include -I/usr/ports/emulators/open-vm-tools/work/open-vm-tools-8.6.0-425873/modules/freebsd/shared -I/usr/ports/emulators/open-vm-tools/work/open-vm-tools-8.6.0-425873/modules/freebsd/vmblock -I/usr/ports/emulators/open-vm-tools/work/open-vm-tools-8.6.0-425873/modules/shared/vmblock -I. -I@ -I@/contrib/altq -finline-limit=8000 --param inline-unit-growth=100 --param large-function-growth=1000 -fno-common   -mno-align-long-strings -mpreferred-stack-boundary=2 -mno-mmx -mno-sse -msoft-float -ffreestanding -fstack-protector -std=iso9899:1999 -fstack-protector -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   -c vnops.c
vnops.c: In function 'VMBlockVopInactive':
vnops.c:1373: error: too many arguments to function 'vrecycle'
*** [vnops.o] Error code 1


Thanks for another hint

	matthias

-- 
Matthias Apitz
e <guru@unixarea.de> - w http://www.unixarea.de/
UNIX since V7 on PDP-11, UNIX on mainframe since ESER 1055 (IBM /370)
UNIX on x86 since SVR4.2 UnixWare 2.1.2, FreeBSD since 2.2.5



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120605132750.GA2122>