head 1.4; access; symbols pkgsrc-2013Q2:1.4.0.8 pkgsrc-2013Q2-base:1.4 pkgsrc-2012Q4:1.4.0.6 pkgsrc-2012Q4-base:1.4 pkgsrc-2011Q4:1.4.0.4 pkgsrc-2011Q4-base:1.4 pkgsrc-2011Q2:1.4.0.2 pkgsrc-2011Q2-base:1.4 pkgsrc-2009Q4:1.3.0.24 pkgsrc-2009Q4-base:1.3 pkgsrc-2009Q3:1.3.0.22 pkgsrc-2009Q3-base:1.3 pkgsrc-2009Q2:1.3.0.20 pkgsrc-2009Q2-base:1.3 pkgsrc-2009Q1:1.3.0.18 pkgsrc-2009Q1-base:1.3 pkgsrc-2008Q4:1.3.0.16 pkgsrc-2008Q4-base:1.3 pkgsrc-2008Q3:1.3.0.14 pkgsrc-2008Q3-base:1.3 cube-native-xorg:1.3.0.12 cube-native-xorg-base:1.3 pkgsrc-2008Q2:1.3.0.10 pkgsrc-2008Q2-base:1.3 cwrapper:1.3.0.8 pkgsrc-2008Q1:1.3.0.6 pkgsrc-2008Q1-base:1.3 pkgsrc-2007Q4:1.3.0.4 pkgsrc-2007Q4-base:1.3 pkgsrc-2007Q3:1.3.0.2 pkgsrc-2007Q3-base:1.3 pkgsrc-2007Q2:1.2.0.30 pkgsrc-2007Q2-base:1.2 pkgsrc-2007Q1:1.2.0.28 pkgsrc-2007Q1-base:1.2 pkgsrc-2006Q4:1.2.0.26 pkgsrc-2006Q4-base:1.2 pkgsrc-2006Q3:1.2.0.24 pkgsrc-2006Q3-base:1.2 pkgsrc-2006Q2:1.2.0.22 pkgsrc-2006Q2-base:1.2 pkgsrc-2006Q1:1.2.0.20 pkgsrc-2006Q1-base:1.2 pkgsrc-2005Q4:1.2.0.18 pkgsrc-2005Q4-base:1.2 pkgsrc-2005Q3:1.2.0.16 pkgsrc-2005Q3-base:1.2 pkgsrc-2005Q2:1.2.0.14 pkgsrc-2005Q2-base:1.2 pkgsrc-2005Q1:1.2.0.12 pkgsrc-2005Q1-base:1.2 pkgsrc-2004Q4:1.2.0.10 pkgsrc-2004Q4-base:1.2 pkgsrc-2004Q3:1.2.0.8 pkgsrc-2004Q3-base:1.2 pkgsrc-2004Q2:1.2.0.6 pkgsrc-2004Q2-base:1.2 pkgsrc-2004Q1:1.2.0.4 pkgsrc-2004Q1-base:1.2 pkgsrc-2003Q4:1.2.0.2 pkgsrc-2003Q4-base:1.2 netbsd-1-6-1:1.1.1.1.0.6 netbsd-1-6-1-base:1.1.1.1 netbsd-1-6:1.1.1.1.0.8 netbsd-1-6-RELEASE-base:1.1.1.1 pkgviews:1.1.1.1.0.4 pkgviews-base:1.1.1.1 buildlink2:1.1.1.1.0.2 buildlink2-base:1.1.1.1 netbsd-1-5-PATCH003:1.1.1.1 pkgsrc-base:1.1.1.1 TNF:1.1.1; locks; strict; comment @# @; 1.4 date 2010.02.10.17.10.52; author joerg; state dead; branches; next 1.3; 1.3 date 2007.07.31.14.44.03; author obache; state Exp; branches; next 1.2; 1.2 date 2003.02.16.02.35.56; author bad; state dead; branches; next 1.1; 1.1 date 2001.07.07.14.40.07; author veego; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2001.07.07.14.40.07; author veego; state Exp; branches; next ; desc @@ 1.4 log @Retire vmware packages. @ text @$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 #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 */ } @ 1.3 log @Fixed build problem on NetBSD 3.x (PR 36632) and NetBSD 2.x (PR 25474). Almost of patches are inspired by emulators/vmware-module3. @ text @d1 1 a1 1 $NetBSD$ @ 1.2 log @Update to netbsd-vmware-1.1 following the import into othersrc. @ text @d1 1 a1 1 $NetBSD: patch-ac,v 1.1 2001/07/07 14:40:07 veego Exp $ d3 203 a205 36 --- source/vmmon/netbsd/host.c Tue Apr 3 14:23:08 2001 +++ source/vmmon/netbsd/host.c Thu Jun 28 21:52:09 2001 @@@@ -315,9 +315,16 @@@@ /* * now locate it and write the results back to the pmap + * + * Under extreme memory pressure, the page may be gone again. + * Just fail the lock in that case. + * (It was ASSERT_BUG(6339, mpn).) + * -- edward */ mpn = FindMPN(vpn); - ASSERT(mpn); + if (mpn == 0) { + return 0; + } /* * XXX SMP. @@@@ -628,6 +635,7 @@@@ if (vm->crossvaddr != NULL) Warning("KernelAddr already allocated\n"); + PHOLD(curproc); uvm_vslock(curproc, addr, PAGE_SIZE, VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXECUTE); @@@@ -636,6 +644,7 @@@@ 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); vm->crossvaddr = (void *)kvaddr; vm->crossuaddr = addr; #ifdef DEBUG @ 1.1 log @Initial revision @ text @d1 1 a1 1 $NetBSD$ @ 1.1.1.1 log @VMware module that contains the lkm's to run VMware. patch-ac is from Atsushi Onoe . Note that you have to fetch the distfile manually. @ text @@