FW: VMWare Tools for FreeBSD

Alexander Sack pisymbol at gmail.com
Tue Mar 18 19:24:57 UTC 2008


Comments below:

On Tue, Mar 18, 2008 at 12:13 PM, Gelsema, P (Patrick)
<gelsemap at superhero.nl> wrote:
> On Tue, March 18, 2008 23:36, Alexander Sack wrote:
>  > I believe the issue is that MNT_NODEV which should be defined in
>  > /usr/include/sys/mount.h was deprecated and removed from FreeBSD:
>  >
>  > http://ftp.cz.freebsd.org/pub/FreeBSD-cvs/gnats/conf/79715
>  >
>  > At line 42 in hgfsmounter.c, add
>  >
>  > #     define MNT_NODEV  0
>  >
>  > Then rebuild.  SHould work fine now.
>  >
>  > I configured my build environment via the README with ./configure
>  > LDFLAGS="/usr/local/lib" etc.
>  >
>  Done
>
>  #./configure LDFLAGS="/usr/local/lib" --without-x
>  #make
>  #make install
>
>  That all goes ok
>  But when I run #make modules I get an error
>
>  wolverine# make modules
>  make -C modules
>  make -C "freebsd/vmmemctl"
>  make -C "freebsd/vmxnet"
>  cc -O2 -fno-strict-aliasing -pipe  -D_KERNEL -DKLD_MODULE -std=c99
>  -nostdinc   -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-3dnow
>  -mno-sse -mno-sse2 -mno-sse3 -ffreestanding -Wall -Wredundant-decls
>  -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith
>  -Winline -Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -c
>  if_vxn.c
>  if_vxn.c: In function 'vxn_attach':
>  if_vxn.c:302: warning: passing argument 4 of 'bus_setup_intr' from
>  incompatible pointer type
>  if_vxn.c:302: warning: passing argument 5 of 'bus_setup_intr' from
>  incompatible pointer type
>  if_vxn.c:302: error: too few arguments to function 'bus_setup_intr'
>  if_vxn.c:378: error: 'struct arpcom' has no member named '_ac_enaddr'
>  if_vxn.c:385: error: 'struct arpcom' has no member named '_ac_enaddr'
>  *** Error code 1
>
>  Stop in /tmp/open-vm-tools-2008.03.03-79993/modules/freebsd/vmxnet.
>  *** Error code 1
>
>  Any ideas?

bus_setup_intr() kernel API seems to have either changed or handled
differently in 7.0.  I believe you can add a NULL after the flags
(INTR_MPSAFE) which tells BSD to use the standard interrupt handler
instead of a top-level handler.

_ac_enaddr is because arpcom as defined in net/if_arp.h no longer
exists.  Typically the protocol bits are stuffed in if_l2com (layer
2).

I made the macro in net_compat.h

#define VXN_SC2ENADDR(softc)        (IF_LLADDR(VXN_SC2IFP(softc))

and then removed the "&" from both references in if_vxn.c as this
macro already returns a pointer to char.

That got me past this problem.  Btw, this isn't an official port since
I didn't really rectify the net_compat.h stuff (I suppose you could
make the 600000 to 700055, etc.).

I'm still getting some further issues with vnodeops and vfsops with
some modules (I believe vops_lcok should be vops_lock1) but I don't
know about the other problem.

-aps

-- 
"What lies behind us and what lies in front of us is of little concern
to what lies within us." -Ralph Waldo Emerson


More information about the freebsd-questions mailing list