pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/emulators/vmware-module Fixed build problem on NetBSD ...



details:   https://anonhg.NetBSD.org/pkgsrc/rev/aaa697924151
branches:  trunk
changeset: 531491:aaa697924151
user:      obache <obache%pkgsrc.org@localhost>
date:      Tue Jul 31 14:44:02 2007 +0000

description:
Fixed build problem on NetBSD 3.x (PR 36632) and NetBSD 2.x (PR 25474).
Almost of patches are inspired by emulators/vmware-module3.

diffstat:

 emulators/vmware-module/Makefile         |    4 +-
 emulators/vmware-module/distinfo         |    6 +-
 emulators/vmware-module/patches/patch-ac |  205 ++++++++++++++++++++++++++++++
 emulators/vmware-module/patches/patch-ad |   45 ++++++
 emulators/vmware-module/patches/patch-ae |  209 +++++++++++++++++++++++++++++++
 emulators/vmware-module/patches/patch-af |   20 ++
 6 files changed, 485 insertions(+), 4 deletions(-)

diffs (truncated from 528 to 300 lines):

diff -r 789397cdfa7b -r aaa697924151 emulators/vmware-module/Makefile
--- a/emulators/vmware-module/Makefile  Tue Jul 31 14:40:45 2007 +0000
+++ b/emulators/vmware-module/Makefile  Tue Jul 31 14:44:02 2007 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.24 2007/02/22 19:26:29 wiz Exp $
+# $NetBSD: Makefile,v 1.25 2007/07/31 14:44:02 obache Exp $
 
 DISTNAME=      vmware-netbsd-1.2
 PKGNAME=       vmware-module-1.2
@@ -10,8 +10,6 @@
 HOMEPAGE=      http://www.wasabisystems.com/
 COMMENT=       Kernel modules for the VMware 2.x emulator
 
-BROKEN_IN=     pkgsrc-2005Q4 pkgsrc-2006Q1 pkgsrc-2006Q4
-
 CONFLICTS=     vmware-module-3*
 
 ONLY_FOR_PLATFORM=     NetBSD-*-i386
diff -r 789397cdfa7b -r aaa697924151 emulators/vmware-module/distinfo
--- a/emulators/vmware-module/distinfo  Tue Jul 31 14:40:45 2007 +0000
+++ b/emulators/vmware-module/distinfo  Tue Jul 31 14:44:02 2007 +0000
@@ -1,6 +1,10 @@
-$NetBSD: distinfo,v 1.7 2005/02/23 18:49:21 agc Exp $
+$NetBSD: distinfo,v 1.8 2007/07/31 14:44:02 obache Exp $
 
 SHA1 (vmware-netbsd-1.2.tgz) = 383512f5a9f6cbc50ad5d25ea7e2ae921b00bb1a
 RMD160 (vmware-netbsd-1.2.tgz) = 857b17876611ca999747e38fce234a85ed9802a9
 Size (vmware-netbsd-1.2.tgz) = 97596 bytes
 SHA1 (patch-ab) = 19ff0b151b62870835a2b87e69a52b1cb3d95045
+SHA1 (patch-ac) = a576f04959e793cffbcbaddc409f69ad6929c541
+SHA1 (patch-ad) = 68d7ab77e51f73074f2ef4661af928bfafc7b72d
+SHA1 (patch-ae) = 928deb0c7530905ffe5a04045ef27699fc68d43f
+SHA1 (patch-af) = 2ac5dfaecf97152ca8735c2ec40db881b49d2d76
diff -r 789397cdfa7b -r aaa697924151 emulators/vmware-module/patches/patch-ac
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/emulators/vmware-module/patches/patch-ac  Tue Jul 31 14:44:02 2007 +0000
@@ -0,0 +1,205 @@
+$NetBSD: patch-ac,v 1.3 2007/07/31 14:44:03 obache Exp $
+
+--- source/vmmon/netbsd/drv.c.orig     2003-02-16 21:28:36.000000000 +0900
++++ source/vmmon/netbsd/drv.c
+@@ -68,6 +68,29 @@
+ #include <vm/vm.h>
+ #endif
+ 
++/* use curproc for pre-nathanw-sa world, curlwp post */
++#if __NetBSD_Version__ >= 106130000
++#define CURLWP                curlwp          /* new world order */
++#else
++#define CURLWP                curproc         /* old world order */
++#endif
++
++/* change to pass lwp rather than proc to driver entry points in 1.6V */
++#if __NetBSD_Version__ == 106220000 || __NetBSD_Version__ >= 399001400
++#define ENTRYARG      lwp
++#define LWP2PROC(l)   (l->l_proc)
++#else
++#define ENTRYARG      proc
++#define LWP2PROC(l)   (l)
++#endif
++
++/* dupfd moved from struct proc to struct lwp in 1.6ZA */
++#if __NetBSD_Version__ >= 106270000
++#define DUPFD(p)      (curlwp)->l_dupfd
++#else
++#define DUPFD(p)      (p)->p_dupfd
++#endif
++
+ #define FILECODE "F(300)"
+ 
+ #include "x86.h"
+@@ -95,13 +118,13 @@
+ int vmmon_lkmentry(struct lkm_table *, int, int);
+ static int vmmon_handle(struct lkm_table *, int);
+ 
+-static int vmmon_open(dev_t dev, int oflags, int devtype, struct proc *p);
+-static int vmmon_close(dev_t dev, int cflags, int devtype, struct proc *p);
++static int vmmon_open(dev_t dev, int oflags, int devtype, struct ENTRYARG *l);
++static int vmmon_close(dev_t dev, int cflags, int devtype, struct ENTRYARG *l);
+ static int vmmon_ioctl(dev_t dev, u_long cmd, caddr_t data, int flags,
+-               struct proc *p);
+-static int vmmon_poll(dev_t, int, struct proc *);
++               struct ENTRYARG *l);
++static int vmmon_poll(dev_t, int, struct ENTRYARG *);
+ 
+-static int vmmon_fake_clonedev(dev_t, int, struct proc *);
++static int vmmon_fake_clonedev(dev_t, int, struct ENTRYARG *);
+ 
+ static int vm_create(struct vmmon_softc *, struct vmx86_softc **);
+ static struct vmx86_softc * vm_allocate(struct vmmon_softc *);
+@@ -163,19 +186,19 @@ vmmon_handle(struct lkm_table *lkmtp, in
+ }
+ 
+ static int
+-vmmon_open(dev_t dev, int flag, int mode, struct proc *p)
++vmmon_open(dev_t dev, int flag, int mode, struct ENTRYARG *l)
+ {
+       struct vmmon_softc *vmmonsc;
+       struct vmx86_softc *vmxsc;
+       int error;
+       VMDriver *vm;
+ 
+-      if (p->p_dupfd >= 0)
++      if (DUPFD(LWP2PROC(l)) >= 0)
+               return ENODEV;
+ 
+-      VMDEBUG("vmmon: %d opened device\n", p->p_pid);
++      VMDEBUG("vmmon: %d opened device\n", LWP2PROC(l)->p_pid);
+ 
+-      if (suser(p->p_ucred, &p->p_acflag) != 0)
++      if (suser(LWP2PROC(l)->p_ucred, &LWP2PROC(l)->p_acflag) != 0)
+               return (EPERM);
+ 
+       vmmonsc = &vmmon_sc;
+@@ -189,15 +212,15 @@ vmmon_open(dev_t dev, int flag, int mode
+       vmmon_refcnt++;
+ 
+       VMDEBUG("vmmon: pid %d new vm: num %d major %d\n",
+-          p->p_pid, VMNUM(vmxsc->vm_dev), major(vmxsc->vm_dev));
++          LWP2PROC(l)->p_pid, VMNUM(vmxsc->vm_dev), major(vmxsc->vm_dev));
+ 
+-      error = vmmon_fake_clonedev(vmxsc->vm_dev, flag, p);
+-      if (error != 0 && p->p_dupfd < 0) {
++      error = vmmon_fake_clonedev(vmxsc->vm_dev, flag, l);
++      if (error != 0 && DUPFD(LWP2PROC(l)) < 0) {
+               vm_destroy(vmmonsc, VMNUM(vmxsc->vm_dev));
+               return error;
+       }
+ 
+-      vm = Vmx86_Init((void *)vmxsc, (void *)(p->p_pid));
++      vm = Vmx86_Init((void *)vmxsc, (void *)(LWP2PROC(l)->p_pid));
+       if (vm == NULL) {
+               vm_destroy(vmmonsc, VMNUM(vmxsc->vm_dev));
+               error = ENOMEM;
+@@ -211,13 +234,13 @@ vmmon_open(dev_t dev, int flag, int mode
+ 
+ 
+ static int
+-vmmon_close(dev_t dev, int flags, int mode, struct proc *p)
++vmmon_close(dev_t dev, int flags, int mode, struct ENTRYARG *l)
+ {
+       int num;
+       struct vmmon_softc *sc;
+       struct vmx86_softc *vmxsc;
+ 
+-      VMDEBUG("vmmon: close vm %d by pid %d\n", VMNUM(dev), p->p_pid);
++      VMDEBUG("vmmon: close vm %d by pid %d\n", VMNUM(dev), LWP2PROC(l)->p_pid);
+ 
+       sc = &vmmon_sc;
+ 
+@@ -240,7 +263,7 @@ vmmon_close(dev_t dev, int flags, int mo
+               printf("vmmon: refcnt < 0 ??\n");
+       }
+ 
+-      VMDEBUG("vmmon: vm %d closed by %d\n", num, p->p_pid);
++      VMDEBUG("vmmon: vm %d closed by %d\n", num, LWP2PROC(l)->p_pid);
+ 
+       return (0);
+ }
+@@ -250,7 +273,7 @@ vmmon_close(dev_t dev, int flags, int mo
+  * XXXX - poor man's device cloning.
+  */
+ int
+-vmmon_fake_clonedev(dev_t dev, int flag, struct proc *p)
++vmmon_fake_clonedev(dev_t dev, int flag, struct ENTRYARG *l)
+ {
+       struct file *fp;
+       int error, fd;
+@@ -260,7 +283,7 @@ vmmon_fake_clonedev(dev_t dev, int flag,
+               /* XXX */
+               return EINVAL;
+ 
+-      error = falloc(p, &fp, &fd);
++      error = falloc(LWP2PROC(l), &fp, &fd);
+       if (error != 0)
+               return error;
+       error = cdevvp(dev, &vp);
+@@ -279,9 +302,9 @@ vmmon_fake_clonedev(dev_t dev, int flag,
+       FILE_SET_MATURE(fp);
+ #endif
+ #endif
+-      FILE_UNUSE(fp, p);
++      FILE_UNUSE(fp, l);
+ 
+-      p->p_dupfd = fd;
++      DUPFD(LWP2PROC(l)) = fd;
+ 
+       return ENXIO;
+ }
+@@ -292,7 +315,7 @@ vmmon_fake_clonedev(dev_t dev, int flag,
+  * set syscall return values for the benefit of Linux emulation.
+  */
+ static int
+-vmmon_ioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p)
++vmmon_ioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct ENTRYARG *l)
+ {
+       struct vmx86_softc *vmxsc;
+       struct vmmon_softc *sc;
+@@ -307,7 +330,7 @@ vmmon_ioctl(dev_t dev, u_long cmd, caddr
+       VMDriver *vm;
+ 
+       VMDEBUG("vmmon: ioctl %lx on vm %d by pid %d\n",
+-          cmd, VMNUM(dev), p->p_pid);
++          cmd, VMNUM(dev), LWP2PROC(l)->p_pid);
+ 
+       sc = &vmmon_sc;
+ 
+@@ -469,7 +492,7 @@ vm_select_timo(void *arg)
+ 
+ 
+ static int
+-vmmon_poll(dev_t dev, int events, struct proc *p)
++vmmon_poll(dev_t dev, int events, struct ENTRYARG *l)
+ {
+       struct vmmon_softc *sc;
+       struct vmx86_softc *vmxsc;
+@@ -484,7 +507,7 @@ vmmon_poll(dev_t dev, int events, struct
+               return ENXIO;
+ 
+       VMDEBUG("vmmon: poll on vm %d by pid %d\n",
+-          VMNUM(dev), p->p_pid);
++          VMNUM(dev), LWP2PROC(l)->p_pid);
+ 
+       s = splsoftclock();
+       if (vmxsc->vm_flags & VMFL_SELTIMO) {
+@@ -493,7 +516,7 @@ vmmon_poll(dev_t dev, int events, struct
+       } else {
+               if (vmxsc->vm_flags & VMFL_SELWAIT)
+                       callout_stop(&vmxsc->vm_callout);
+-              selrecord(p, &vmxsc->vm_rsel);
++              selrecord(l, &vmxsc->vm_rsel);
+               vmxsc->vm_flags |= VMFL_SELWAIT;
+               callout_reset(&vmxsc->vm_callout, 1, vm_select_timo, vmxsc);
+       }
+@@ -673,6 +696,6 @@ Panic(char *fmt, ...)
+               vWarning(vm);
+       }
+   
+-      exit1(curproc, 0);
++      exit1(CURLWP, 0);
+       /* NOTREACHED */
+ }
diff -r 789397cdfa7b -r aaa697924151 emulators/vmware-module/patches/patch-ad
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/emulators/vmware-module/patches/patch-ad  Tue Jul 31 14:44:02 2007 +0000
@@ -0,0 +1,45 @@
+$NetBSD: patch-ad,v 1.5 2007/07/31 14:44:03 obache Exp $
+
+--- source/vmmon/netbsd/host.c.orig    2003-02-16 21:28:36.000000000 +0900
++++ source/vmmon/netbsd/host.c
+@@ -60,6 +60,13 @@ lyaev Exp $
+ extern vm_map_t kernel_map;
+ #endif
+ 
++/* use curproc for pre-nathanw-sa world, curlwp post */
++#if __NetBSD_Version__ >= 106130000
++#define CURLWP                curlwp          /* new world order */
++#else
++#define CURLWP                curproc         /* old world order */
++#endif
++
+ #include "x86.h"
+ #include "vm_types.h"
+ #include "vm_assert.h"
+@@ -272,7 +279,7 @@ HostIF_InitFP(VMDriver *vm)
+ 
+       if (!(val & mask)) {
+               val = val | mask;
+-              outb(val,0xA1);
++              outb(0xA1,val);
+       }
+ #endif
+ }
+@@ -635,7 +642,7 @@ HostIF_UserToDriverPtr(VMDriver *vm, voi
+       if (vm->crossvaddr != NULL)
+               Warning("KernelAddr already allocated\n");
+ 
+-      PHOLD(curproc);
++      PHOLD(CURLWP);
+       uvm_vslock(curproc, addr, PAGE_SIZE,
+           VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXECUTE);
+ 
+@@ -644,7 +651,7 @@ HostIF_UserToDriverPtr(VMDriver *vm, voi
+       pmap_extract(vm_map_pmap(&curproc->p_vmspace->vm_map), uaddr, &paddr);
+       pmap_kenter_pa(kvaddr, paddr,
+           VM_PROT_READ | VM_PROT_WRITE | VM_PROT_EXECUTE);
+-      PRELE(curproc);
++      PRELE(CURLWP);
+       vm->crossvaddr = (void *)kvaddr;
+       vm->crossuaddr = addr;
+ #ifdef DEBUG
diff -r 789397cdfa7b -r aaa697924151 emulators/vmware-module/patches/patch-ae
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/emulators/vmware-module/patches/patch-ae  Tue Jul 31 14:44:02 2007 +0000
@@ -0,0 +1,209 @@
+$NetBSD: patch-ae,v 1.4 2007/07/31 14:44:04 obache Exp $
+
+--- source/vmnet/if_hubmod.c.orig      2003-02-16 11:09:13.000000000 +0900
++++ source/vmnet/if_hubmod.c
+@@ -87,17 +87,40 @@ static int ether_ioctl(struct ifnet *, u



Home | Main Index | Thread Index | Old Index