summaryrefslogtreecommitdiff
path: root/emulators/vmware3
diff options
context:
space:
mode:
authorMax Khon <fjoe@FreeBSD.org>2003-10-22 16:11:01 +0000
committerMax Khon <fjoe@FreeBSD.org>2003-10-22 16:11:01 +0000
commit6c55ab3f2fc8b7d8afc70dc1340a299a9f1ac0ba (patch)
tree4d35c7865be646daffafedd8cc7a40404fbb7b56 /emulators/vmware3
parent- fix from Peter: (diff)
Port to FreeBSD 4.x.
Diffstat (limited to 'emulators/vmware3')
-rw-r--r--emulators/vmware3/Makefile27
-rw-r--r--emulators/vmware3/files/freebsd4.patch703
-rw-r--r--emulators/vmware3/pkg-plist2
3 files changed, 724 insertions, 8 deletions
diff --git a/emulators/vmware3/Makefile b/emulators/vmware3/Makefile
index b9f5c5b07199..f18216c63b51 100644
--- a/emulators/vmware3/Makefile
+++ b/emulators/vmware3/Makefile
@@ -6,13 +6,12 @@
#
PORTNAME= vmware3
-PORTVERSION= 3.2.1
-PORTREVISION= 2242
+PORTVERSION= 3.2.1-2242
CATEGORIES= emulators linux
MASTER_SITES= http://www4.vmware.com/software/ \
${FREEBSD_MODULE_SITES} \
${VMWARE_MIRROR_SITES}
-DISTFILES= VMware-workstation-${PORTVERSION}-${PORTREVISION}${EXTRACT_SUFX}:vmware \
+DISTFILES= VMware-workstation-${PORTVERSION}${EXTRACT_SUFX}:vmware \
vmmon-only-3.2.1-20031009${EXTRACT_SUFX}:patch \
vmnet-only-3.2.1-20030412${EXTRACT_SUFX}:patch
@@ -49,8 +48,8 @@ MODULES= vmmon vmnet
.include <bsd.port.pre.mk>
-.if ${OSVERSION} < 500000
-BROKEN= "Systems prior to FreeBSD 5 currently out of support"
+.if ${OSVERSION} < 480102
+BROKEN= "Systems prior to FreeBSD 480102 currently out of support"
.endif
.if !defined(HAVE_LINPROCFS) && !exists(/modules/linprocfs.ko) && !exists(/boot/kernel/linprocfs.ko) && !exists(${PREFIX}/modules/linprocfs.ko)
@@ -78,10 +77,21 @@ SCRIPTS_ENV+= LINUXBASE="${LINUXBASE}" \
MAKE_ARGS= KMODDIR="${VMDIR}/lib/modules"
PLIST_SUB= LINUXBASE="${LINUXBASE}" VMNET1_MINOR="${VMNET1_MINOR}"
+.if ${OSVERSION} < 500000
+PLIST_SUB+= FREEBSD5="@comment "
+.else
+PLIST_SUB+= FREEBSD5=""
+.endif
+
pre-fetch:
-.if ${OSVERSION} < 500113
+.if ${OSVERSION} < 500000
+ @${ECHO}
+ @${ECHO} "You need an uncommitted kernel patch to run this port:"
+ @${ECHO} "You can get it at: http://people.freebsd.org/~fjoe/shm-freebsd4-20031003.diff"
+ @${ECHO}
+.elif ${OSVERSION} < 500113
@${ECHO}
- @${ECHO} "You need a uncommitted kernel patch to run this port:"
+ @${ECHO} "You need an uncommitted kernel patch to run this port:"
@${ECHO} "You can get it at: http://people.freebsd.org/~mbr/patches/"
@${ECHO} "linux.shm.patch-cvs-freebsd5-20030329"
@${ECHO}
@@ -120,6 +130,9 @@ post-patch:
${CP} ${FILESDIR}/Makefile ${WRKSRC}
${CP} ${FILESDIR}/Makefile.vmmon ${WRKSRC}/vmmon-only/Makefile
${CP} ${FILESDIR}/Makefile.vmnet ${WRKSRC}/vmnet-only/Makefile
+.if ${OSVERSION} < 500000
+ ${CAT} ${FILESDIR}/freebsd4.patch | (cd ${WRKSRC} && patch) > /dev/null 2>&1
+.endif
setoptions:
${SED} -e 's;@@PREFIX@@;${PREFIX};' \
diff --git a/emulators/vmware3/files/freebsd4.patch b/emulators/vmware3/files/freebsd4.patch
new file mode 100644
index 000000000000..ace0cea17eb4
--- /dev/null
+++ b/emulators/vmware3/files/freebsd4.patch
@@ -0,0 +1,703 @@
+--- vmmon-only/freebsd/driver.c.orig Tue Oct 21 23:03:43 2003
++++ vmmon-only/freebsd/driver.c Tue Oct 21 23:19:51 2003
+@@ -45,7 +45,7 @@
+ #include <sys/kernel.h>
+ #include <sys/module.h>
+ #include <sys/conf.h>
+-#include <sys/selinfo.h>
++#include <sys/select.h>
+ #include <sys/file.h>
+ #include <sys/filedesc.h>
+ #include <sys/fcntl.h>
+@@ -141,11 +141,10 @@
+ *----------------------------------------------------------------------
+ */
+ static d_open_t FreeBSD_Driver_Open;
+-static int FreeBSD_Driver_Close(struct file *, struct thread *);
++static int FreeBSD_Driver_Close(struct file *, struct proc *);
+ static int FreeBSD_Driver_Poll(struct file *, int,
+- struct ucred *, struct thread *);
+-static int FreeBSD_Driver_Ioctl(struct file *, u_long, void *,
+- struct ucred *, struct thread *);
++ struct ucred *, struct proc *);
++static int FreeBSD_Driver_Ioctl(struct file *, u_long, caddr_t, struct proc *);
+
+ static timeout_t FreeBSD_DriverSelectTimeout;
+
+@@ -156,6 +155,11 @@
+
+ #define CDEV_MINOR 0
+
++#define PROC_LOCK(p)
++#define PROC_UNLOCK(p)
++#define FILEDESC_LOCK(fd)
++#define FILEDESC_UNLOCK(fd)
++
+ /* todo01 - support for multiple vms. fileops for each vm opened. */
+ static struct fileops vmmon_fileops = {
+ .fo_ioctl = FreeBSD_Driver_Ioctl,
+@@ -169,12 +171,10 @@
+ .d_name = DEVICE_NAME,
+ .d_maj = CDEV_MAJOR
+ #else
+- /* open */ FreeBSD_Driver_Open,
+- /* close */ noclose,
+- /* read */ noread,
+- /* psize */ nopsize,
+- /* flags */ 0,
+- /* bmaj */ -1
++ .d_open = FreeBSD_Driver_Open,
++ .d_name = DEVICE_NAME,
++ .d_maj = CDEV_MAJOR,
++ .d_bmaj = -1
+ #endif
+ };
+
+@@ -344,25 +344,22 @@
+ * Based on dev/streams/streams.c
+ */
+ static int
+-vmmon_clone(dev_t dev, int flags, void *data, struct thread *td)
++vmmon_clone(dev_t dev, int flags, void *data, struct proc *p)
+ {
+ /* XXX This has been tested with RELENG_5_1 only. */
+ int fd, error;
+ struct file *fp;
+- struct proc *p;
+
+- p = td->td_proc;
+-
+ /* Ensure that the dupfd isn't already used! */
+ PROC_LOCK(p);
+- if (td->td_dupfd >= 0) {
++ if (p->p_dupfd >= 0) {
+ PROC_UNLOCK(p);
+ return ENODEV;
+ }
+ PROC_UNLOCK(p);
+
+ /* Create a new file descriptor used as dupfd */
+- if ((error = falloc(td, &fp, &fd)) != 0)
++ if ((error = falloc(p, &fp, &fd)) != 0)
+ return error;
+
+ FILEDESC_LOCK(p->p_fd);
+@@ -373,7 +370,7 @@
+ FILEDESC_UNLOCK(p->p_fd);
+
+ PROC_LOCK(p);
+- td->td_dupfd = fd;
++ p->p_dupfd = fd;
+ PROC_UNLOCK(p);
+
+ vmmon_ref_count++;
+@@ -396,7 +393,7 @@
+ *----------------------------------------------------------------------
+ */
+ static int
+-FreeBSD_Driver_Open(dev_t dev, int oflag, int devtype, struct thread *td)
++FreeBSD_Driver_Open(dev_t dev, int oflag, int devtype, struct proc *p)
+ {
+ VMFreeBSD *vmFreeBSD;
+
+@@ -441,7 +438,7 @@
+ timespecclear(&vmFreeBSD->max_diff);
+ #endif
+ /* Clone device! */
+- return vmmon_clone (dev, oflag, (void *)vmFreeBSD, td);
++ return vmmon_clone (dev, oflag, (void *)vmFreeBSD, p);
+ }
+
+ /*
+@@ -457,7 +454,7 @@
+ */
+
+ static int
+-FreeBSD_Driver_Close(struct file *fp, struct thread *td)
++FreeBSD_Driver_Close(struct file *fp, struct proc *p)
+ {
+ VMFreeBSD *vmFreeBSD = (VMFreeBSD *)fp->f_data;
+ MemRange *head, *first;
+@@ -472,8 +469,8 @@
+ #endif
+
+ VMDEBUG(DEVICE_NAME ": close fd %d for pid=%d vm=%p\n",
+- td->td_dupfd,
+- td->td_proc->p_pid,
++ p->p_dupfd,
++ p->p_pid,
+ vmFreeBSD);
+
+ if (vmFreeBSD == NULL) {
+@@ -529,7 +526,7 @@
+
+ static int
+ FreeBSD_Driver_Poll(struct file *fp, int events,
+- struct ucred *active_ucred, struct thread *td)
++ struct ucred *active_ucred, struct proc *p)
+ {
+ VMFreeBSD *vmFreeBSD = (VMFreeBSD *)fp->f_data;
+ int revents = 0;
+@@ -559,7 +556,7 @@
+ #if POLL_TRACE
+ nanotime(&vmFreeBSD->time_sleep);
+ #endif
+- selrecord(td, &vmFreeBSD->rsel);
++ selrecord(p, &vmFreeBSD->rsel);
+ vmFreeBSD->flags.twaiting = TRUE;
+ vmFreeBSD->thandle = timeout(FreeBSD_DriverSelectTimeout, vmFreeBSD, 1);
+ }
+@@ -608,12 +605,10 @@
+ *----------------------------------------------------------------------
+ */
+ static int
+-FreeBSD_Driver_Ioctl(struct file *fp, u_long cmd, void *parg,
+- struct ucred *active_ucred, struct thread *td)
++FreeBSD_Driver_Ioctl(struct file *fp, u_long cmd, caddr_t parg, struct proc *p)
+ {
+ VMFreeBSD *vmFreeBSD = (VMFreeBSD *)fp->f_data;
+ VMDriver *vm;
+- struct proc *p;
+ int error;
+ u_long numPages;
+ int32_t limit;
+@@ -633,7 +628,6 @@
+ #endif
+ caddr_t data = *(caddr_t *)parg;
+
+- p = td->td_proc;
+ vm = vmFreeBSD->vm;
+
+ #ifdef SUPPORT_LINUXVMWARE
+@@ -643,7 +637,7 @@
+ switch (cmd) {
+ case VMIO_VERSION:
+ VMDEBUG(" ** VMIO_VERSION pid=%d\n", p->p_pid);
+- td->td_retval[0] = (register_t)VMMON_VERSION;
++ p->p_retval[0] = (register_t)VMMON_VERSION;
+ break;
+
+ case VMIO_CREATE_VM:
+@@ -653,11 +647,11 @@
+ error = copyin(data, &wslimitsInfo, sizeof(wslimitsInfo));
+ if (error != 0)
+ return error;
+- vm = Vmx86_CreateVM((void *)td, (void*)p->p_pid, &wslimitsInfo);
++ vm = Vmx86_CreateVM((void *)p, (void*)p->p_pid, &wslimitsInfo);
+ if (vm == NULL)
+ return ENOMEM;
+ vmFreeBSD->vm = vm;
+- td->td_retval[0] = (register_t)vm->id;
++ p->p_retval[0] = (register_t)vm->id;
+ break;
+
+ case VMIO_BIND_VM:
+@@ -704,7 +698,7 @@
+ VMDEBUG(" ** VMIO_RUN_VM\n");
+ if (vm == NULL)
+ return EINVAL;
+- td->td_retval[0] = (register_t)Vmx86_RunVM(vm);
++ p->p_retval[0] = (register_t)Vmx86_RunVM(vm);
+ break;
+
+ case VMIO_LOOK_UP_MPN:
+@@ -713,7 +707,7 @@
+ return EINVAL;
+
+ mpn = HostIF_LookupUserMPN(vm, data);
+- td->td_retval[0] = mpn;
++ p->p_retval[0] = mpn;
+ break;
+
+ case VMIO_LOCK_PAGE:
+@@ -721,7 +715,7 @@
+ if (vm == NULL)
+ return EINVAL;
+ mpn = Vmx86_LockPage(vm, data, TRUE);
+- td->td_retval[0] = mpn;
++ p->p_retval[0] = mpn;
+ break;
+
+ case VMIO_UNLOCK_PAGE:
+@@ -729,12 +723,12 @@
+ if (vm == NULL)
+ return EINVAL;
+ mpn = Vmx86_UnlockPage(vm, data, TRUE);
+- td->td_retval[0] = mpn;
++ p->p_retval[0] = mpn;
+ break;
+
+ case VMIO_GET_NUM_VMS:
+ VMDEBUG(" ** VMIO_GET_NUM_VMS\n");
+- td->td_retval[0] = (register_t)Vmx86_GetNumVMs();
++ p->p_retval[0] = (register_t)Vmx86_GetNumVMs();
+ break;
+
+ case VMIO_APIC_BASE:
+@@ -752,14 +746,14 @@
+ ma = HostIF_APICEnable(vm);
+ }
+ #endif
+- td->td_retval[0] = (register_t)ma;
++ p->p_retval[0] = (register_t)ma;
+ break;
+
+ case VMIO_IOAPIC_BASE:
+ VMDEBUG(" ** VMIO_IOAPIC_BASE\n");
+ if (vm == NULL)
+ return EINVAL;
+- td->td_retval[0] = (register_t)HostIF_IOAPICBase(vm);
++ p->p_retval[0] = (register_t)HostIF_IOAPICBase(vm);
+ break;
+
+ case VMIO_GET_STATS:
+@@ -782,7 +776,7 @@
+
+ case VMIO_GET_HARD_LIMIT:
+ VMDEBUG(" ** VMIO_GET_HARD_LIMIT\n");
+- td->td_retval[0] = (register_t)Vmx86_GetLockedPagesLimit();
++ p->p_retval[0] = (register_t)Vmx86_GetLockedPagesLimit();
+ break;
+
+ case VMIO_SET_HARD_LIMIT:
+@@ -815,12 +809,12 @@
+
+ case VMIO_PAE_ENABLED:
+ VMDEBUG(" ** VMIO_PAE_ENABLED\n");
+- td->td_retval[0] = (register_t)(int)Vmx86_PAEEnabled();
++ p->p_retval[0] = (register_t)(int)Vmx86_PAEEnabled();
+ break;
+
+ case VMIO_GET_TOTAL_MEM_USAGE:
+ VMDEBUG(" ** VMIO_GET_TOTAL_MEM_USAGE\n");
+- td->td_retval[0] = (register_t)Vmx86_GetTotalMemUsage();
++ p->p_retval[0] = (register_t)Vmx86_GetTotalMemUsage();
+ break;
+
+ case VMIO_SET_UID:
+@@ -830,15 +824,15 @@
+ case VMIO_IS_MP_SAFE:
+ VMDEBUG(" ** VMIO_IS_MP_SAFE\n");
+ #ifdef SMP
+- td->td_retval[0] = (register_t)TRUE;
++ p->p_retval[0] = (register_t)TRUE;
+ #else
+- td->td_retval[0] = (register_t)FALSE;
++ p->p_retval[0] = (register_t)FALSE;
+ #endif
+ break;
+
+ case VMIO_GET_MHZ_ESTIMATE:
+ VMDEBUG(" ** VMIO_GET_MHZ_ESTIMATE\n");
+- td->td_retval[0] = (register_t)Vmx86_GetMHzEstimate(&vmFreeBSD->startTime);
++ p->p_retval[0] = (register_t)Vmx86_GetMHzEstimate(&vmFreeBSD->startTime);
+ break;
+
+ case VMIO_ALLOW_CORE_DUMP:
+@@ -849,7 +843,7 @@
+ VMDEBUG(" ** VMIO_CHECK_MEMORY\n");
+ if (vm == NULL)
+ return EINVAL;
+- td->td_retval[0] = (register_t)HostIF_CheckMemory(vm);
++ p->p_retval[0] = (register_t)HostIF_CheckMemory(vm);
+ break;
+
+ case VMIO_BROADCAST_IPI:
+@@ -862,7 +856,7 @@
+ error = copyin(data, &iorange, sizeof(iorange));
+ if (error)
+ return error;
+- td->td_retval[0] =
++ p->p_retval[0] =
+ Passthrough_RegisterIORegion(iorange.ioBase,
+ iorange.numPorts, "VMware");
+ #else
+@@ -872,7 +866,7 @@
+ case VMIO_REGISTER_PASSTHROUGH_IRQ:
+ VMDEBUG(" ** VMIO_REGISTER_PASSTHROUGH_IRQ\n");
+ #ifdef SUPPORT_PASSTHROUGH
+- td->td_retval[0] =
++ p->p_retval[0] =
+ Passthrough_RegisterIRQ((unsigned char)data, "VMware", vmFreeBSD);
+ #else
+ return EINVAL;
+@@ -884,7 +878,7 @@
+ error = copyin(data, &iorange, sizeof(iorange));
+ if (error)
+ return error;
+- td->td_retval[0] =
++ p->p_retval[0] =
+ Passthrough_ReleaseIORegion(iorange.ioBase, iorange.numPorts);
+ #else
+ return EINVAL;
+@@ -901,7 +895,7 @@
+ case VMIO_START_PASSTHROUGH:
+ VMDEBUG(" ** VMIO_START_PASSTHROUGH\n");
+ #ifdef SUPPORT_PASSTHROUGH
+- td->td_retval[0] = Passthrough_Init(vmFreeBSD);
++ p->p_retval[0] = Passthrough_Init(vmFreeBSD);
+ #else
+ return EINVAL;
+ #endif
+@@ -909,7 +903,7 @@
+ case VMIO_STOP_PASSTHROUGH:
+ VMDEBUG(" ** VMIO_STOP_PASSTHROUGH\n");
+ #ifdef SUPPORT_PASSTHROUGH
+- td->td_retval[0] = Passthrough_Release(vmFreeBSD);
++ p->p_retval[0] = Passthrough_Release(vmFreeBSD);
+ #else
+ return EINVAL;
+ #endif
+@@ -920,7 +914,7 @@
+ if (vmFreeBSD->numPendingPassthroughIRQs > 0) {
+ --vmFreeBSD->numPendingPassthroughIRQs;
+ irq = vmFreeBSD->pendingPassthroughIRQs[vmFreeBSD->numPendingPassthroughIRQs];
+- td->td_retval[0] = vmFreeBSD->numPendingPassthroughIRQs;
++ p->p_retval[0] = vmFreeBSD->numPendingPassthroughIRQs;
+ } else {
+ return EAGAIN;
+ }
+@@ -1049,7 +1043,7 @@
+ VMDriver *vm;
+ va_list args;
+
+- vm = Vmx86_GetVMforProcess((void *)(curthread->td_proc->p_pid));
++ vm = Vmx86_GetVMforProcess((void *)(curproc->p_pid));
+
+ va_start(args, fmt);
+ vsprintf(freebsdState.buf, fmt, args);
+@@ -1076,7 +1070,7 @@
+ VMDriver *vm;
+ va_list args;
+
+- vm = Vmx86_GetVMforProcess((void *)(curthread->td_proc->p_pid));
++ vm = Vmx86_GetVMforProcess((void *)(curproc->p_pid));
+
+ va_start(args, fmt);
+ vsprintf(freebsdState.buf, fmt, args);
+@@ -1107,7 +1101,7 @@
+ void
+ Panic(char *fmt, ...)
+ {
+- VMDriver *vm = Vmx86_GetVMforProcess((void *)(curthread->td_proc->p_pid));
++ VMDriver *vm = Vmx86_GetVMforProcess((void *)(curproc->p_pid));
+ va_list args;
+
+ va_start(args, fmt);
+@@ -1128,13 +1122,13 @@
+ vLog(vm->logFD);
+ vWarning(vm);
+ sprintf(freebsdState.buf, "VMX86 driver panic. pid=%d\n\r",
+- curthread->td_proc->p_pid);
++ curproc->p_pid);
+ vLog(vm->logFD);
+ vWarning(vm);
+ }
+
+ /* XXX Why it's right */
+- exit1(curthread, 0);
++ exit1(curproc, 0);
+ /* NOTREACHED */
+ }
+
+--- vmmon-only/freebsd/linux_emu.c.orig Tue Oct 21 23:03:43 2003
++++ vmmon-only/freebsd/linux_emu.c Tue Oct 21 23:03:45 2003
+@@ -31,16 +31,15 @@
+ #include <sys/param.h>
+ #include <sys/systm.h>
+ #include <sys/kernel.h>
+-#include <sys/stdint.h>
+ #include <sys/proc.h>
+ #include <sys/sysproto.h>
+ #include <sys/disklabel.h>
+ #include <sys/cdio.h>
+ #include <sys/file.h>
+ #include <sys/filedesc.h>
+-#include <sys/selinfo.h>
++#include <sys/select.h>
+
+-#include <sys/fdcio.h>
++#include <machine/ioctl_fd.h>
+
+ #include <i386/linux/linux.h>
+ #include <i386/linux/linux_proto.h>
+@@ -300,13 +299,13 @@
+ }
+
+ static int
+-linux_to_bsd_fdgetprm(struct thread *td, struct file *fp, struct linux_floppy_struct *flp)
++linux_to_bsd_fdgetprm(struct proc *p, struct file *fp, struct linux_floppy_struct *flp)
+ {
+ int error;
+ struct linux_floppy_struct fls;
+ struct fd_type fdt;
+
+- if ((error = fo_ioctl(fp, FD_GTYPE, (caddr_t)&fdt, td->td_ucred, td)) != 0)
++ if ((error = fo_ioctl(fp, FD_GTYPE, (caddr_t)&fdt, p)) != 0)
+ return error;
+ bzero(&fls, sizeof(fls));
+
+@@ -324,13 +323,13 @@
+ }
+
+ static int
+-linux_to_bsd_get_geometry(struct thread *td, struct file *fp, struct linux_hd_geometry *geo)
++linux_to_bsd_get_geometry(struct proc *p, struct file *fp, struct linux_hd_geometry *geo)
+ {
+ int error;
+ struct linux_hd_geometry drive_geo;
+ struct disklabel dl;
+
+- if ((error = fo_ioctl(fp, DIOCGDINFO, (caddr_t)&dl, td->td_ucred, td)) != 0)
++ if ((error = fo_ioctl(fp, DIOCGDINFO, (caddr_t)&dl, p)) != 0)
+ return error;
+
+ bzero(&drive_geo, sizeof(drive_geo));
+@@ -344,14 +343,14 @@
+ }
+
+ static int
+-linux_to_bsd_hdio_identity(struct thread *td, struct file *fp, struct linux_hd_driveid *id)
++linux_to_bsd_hdio_identity(struct proc *p, struct file *fp, struct linux_hd_driveid *id)
+ {
+ int error;
+ struct disklabel dl;
+ struct linux_hd_driveid driveid;
+ unsigned int capacity;
+
+- if ((error = fo_ioctl(fp, DIOCGDINFO, (caddr_t)&dl, td->td_ucred, td)) != 0)
++ if ((error = fo_ioctl(fp, DIOCGDINFO, (caddr_t)&dl, p)) != 0)
+ return error;
+
+ bzero(&driveid, sizeof(driveid));
+@@ -382,13 +381,13 @@
+ }
+
+ static int
+-linux_to_bsd_cdromvolread(struct thread *td, struct file *fp, struct linux_cdrom_volctrl *vol)
++linux_to_bsd_cdromvolread(struct proc *p, struct file *fp, struct linux_cdrom_volctrl *vol)
+ {
+ int error;
+ struct ioc_vol bsd_vol;
+ struct linux_cdrom_volctrl linux_vol;
+
+- if ((error = fo_ioctl(fp, CDIOCGETVOL, (caddr_t)&bsd_vol, td->td_ucred, td)) != 0)
++ if ((error = fo_ioctl(fp, CDIOCGETVOL, (caddr_t)&bsd_vol, p)) != 0)
+ return error;
+
+ linux_vol.channel0 = bsd_vol.vol[0];
+@@ -400,7 +399,7 @@
+ }
+
+ static int
+-linux_cdrom_get_multisession(struct thread *td, struct file *fp, struct linux_cdrom_multisession *muls)
++linux_cdrom_get_multisession(struct proc *p, struct file *fp, struct linux_cdrom_multisession *muls)
+ {
+ struct linux_cdrom_multisession ms;
+ struct ioc_toc_header h;
+@@ -411,7 +410,7 @@
+ if ((error = copyin(muls, &ms, sizeof(ms))) != 0)
+ return error;
+
+- if ((error = fo_ioctl(fp, CDIOREADTOCHEADER, (caddr_t)&h, td->td_ucred, td)) != 0)
++ if ((error = fo_ioctl(fp, CDIOREADTOCHEADER, (caddr_t)&h, p)) != 0)
+ return error;
+
+ bzero(&t, sizeof(t));
+@@ -419,7 +418,7 @@
+ t.address_format = ms.addr_format ; /* BSD and LINUX formats equal */
+ t.track = 0; /* get content from the first track */
+
+- if ((error = fo_ioctl(fp, CDIOREADTOCENTRY, (caddr_t)&t, td->td_ucred, td)) != 0)
++ if ((error = fo_ioctl(fp, CDIOREADTOCENTRY, (caddr_t)&t, p)) != 0)
+ return error;
+
+ bsd_to_linux_msf_lba(ms.addr_format, &t.entry.addr, &ms.addr);
+@@ -430,38 +429,38 @@
+ }
+
+ static int
+-linux_ioctl_hdfdcd(struct thread *td, struct linux_ioctl_args *args)
++linux_ioctl_hdfdcd(struct proc *p, struct linux_ioctl_args *args)
+ {
+- struct file *fp = td->td_proc->p_fd->fd_ofiles[args->fd];
++ struct file *fp = p->p_fd->fd_ofiles[args->fd];
+
+ switch (args->cmd & 0xffff) {
+ case LINUX_HDIO_GET_IDENTITY:
+ case LINUX_HDIO_OBSOLETE_IDENTITY:
+- return linux_to_bsd_hdio_identity(td, fp, (struct linux_hd_driveid *)args->arg);
++ return linux_to_bsd_hdio_identity(p, fp, (struct linux_hd_driveid *)args->arg);
+ case LINUX_HDIO_GETGEO:
+- return linux_to_bsd_get_geometry(td, fp, (struct linux_hd_geometry *)args->arg);
++ return linux_to_bsd_get_geometry(p, fp, (struct linux_hd_geometry *)args->arg);
+
+ case LINUX_FDTWADDLE:
+ return 0;
+ case LINUX_CDROMVOLREAD:
+- return linux_to_bsd_cdromvolread(td, fp, (struct linux_cdrom_volctrl*)args->arg);
++ return linux_to_bsd_cdromvolread(p, fp, (struct linux_cdrom_volctrl*)args->arg);
+ case LINUX_CDROMMULTISESSION:
+- return linux_cdrom_get_multisession(td, fp, (struct linux_cdrom_multisession *)args->arg);
++ return linux_cdrom_get_multisession(p, fp, (struct linux_cdrom_multisession *)args->arg);
+ case LINUX_CDROM_SET_OPTIONS:
+ switch (args->arg) {
+ case 0:
+- td->td_retval[0] = 0;
++ p->p_retval[0] = 0;
+ return 0;
+ default:
+ return ENOSYS;
+ }
+ break;
+ case LINUX_CDROM_CLEAR_OPTIONS:
+- td->td_retval[0] = 0;
++ p->p_retval[0] = 0;
+ return 0;
+ case LINUX_CDROM_LOCKDOOR:
+ args->cmd = args->arg ? CDIOCPREVENT : CDIOCALLOW;
+- return ioctl(td, (struct ioctl_args *)args);
++ return ioctl(p, (struct ioctl_args *)args);
+ case LINUX_CDROM_MEDIA_CHANGED:
+ case LINUX_CDROM_DRIVE_STATUS:
+ case LINUX_CDROM_DISC_STATUS:
+@@ -471,7 +470,7 @@
+ case LINUX_FDPOLLDRVSTAT:
+ return linux_fdpolldrvstat((struct linux_floppy_drive_struct*)args->arg);
+ case LINUX_FDGETPRM:
+- return linux_to_bsd_fdgetprm(td, fp, (struct linux_floppy_struct*)args->arg);
++ return linux_to_bsd_fdgetprm(p, fp, (struct linux_floppy_struct*)args->arg);
+ }
+ return (ENOIOCTL);
+ }
+@@ -483,7 +482,7 @@
+ #define LINUX_TIOCLINUX 0x541C
+
+ static int
+-linux_tioclinux(struct thread *td, struct linux_ioctl_args *args)
++linux_tioclinux(struct proc *p, struct linux_ioctl_args *args)
+ {
+ int type;
+ int error = ENOIOCTL;
+@@ -504,7 +503,7 @@
+
+
+ static int
+-linux_ioctl_video(struct thread *td, struct linux_ioctl_args *args)
++linux_ioctl_video(struct proc *p, struct linux_ioctl_args *args)
+ {
+ int error = ENOIOCTL;
+
+@@ -514,7 +513,7 @@
+ error = 0;
+ break;
+ case LINUX_TIOCLINUX:
+- error = linux_tioclinux(td, args);
++ error = linux_tioclinux(p, args);
+ break;
+ default:
+ break;
+@@ -527,14 +526,14 @@
+ LINUX_IOCTL_SET(vmmon, IOCTLCMD_NONE, IOCTLCMD_LAST);
+
+ static int
+-linux_ioctl_vmmon(struct thread *td, struct linux_ioctl_args *args)
++linux_ioctl_vmmon(struct proc *p, struct linux_ioctl_args *args)
+ {
+ #define DEB(x)
+
+ switch (args->cmd & 0xffff) {
+ #define IOCTL(name) case IOCTLCMD_##name: args->cmd = VMIO_##name; \
+ DEB(printf("vmmware: IOCTL %s arg %p\n", #name, (void *)args->arg)); \
+- return ioctl(td, (struct ioctl_args *)args);
++ return ioctl(p, (struct ioctl_args *)args);
+ #include "ioctls.h"
+ #undef IOCTL
+ }
+--- vmnet-only/freebsd/vmnet_linux.c.orig Tue Oct 21 23:25:05 2003
++++ vmnet-only/freebsd/vmnet_linux.c Tue Oct 21 23:25:48 2003
+@@ -85,9 +85,9 @@
+ #endif
+
+ static int
+-linux_ioctl_setmacaddr(struct thread *td, struct linux_ioctl_args *args)
++linux_ioctl_setmacaddr(struct proc *p, struct linux_ioctl_args *args)
+ {
+- struct file *fp = td->td_proc->p_fd->fd_ofiles[args->fd];
++ struct file *fp = p->p_fd->fd_ofiles[args->fd];
+ int error;
+ VNet_SetMacAddrIOCTL macAddr;
+
+@@ -99,7 +99,7 @@
+
+ switch (macAddr.version) {
+ case 1:
+- error = fo_ioctl(fp, SIOCSIFADDR, (caddr_t)macAddr.addr, td->td_ucred, td);
++ error = fo_ioctl(fp, SIOCSIFADDR, (caddr_t)macAddr.addr, p);
+ DEB(printf("Get ethernet address: %6D\n", macAddr.addr, ":"));
+ break;
+ default:
+@@ -110,7 +110,7 @@
+ }
+
+ static int
+-linux_ioctl_net(struct thread *td, struct linux_ioctl_args *args)
++linux_ioctl_net(struct proc *p, struct linux_ioctl_args *args)
+ {
+ int error = ENOIOCTL;
+
+@@ -125,7 +125,7 @@
+ case LINUX_SIOCSIFADDR:
+ DEB(printf(__FUNCTION__ ": LINUX_SIOCSIFADDR\n"));
+ args->cmd = SIOCSIFADDR;
+- error = ioctl(td, (struct ioctl_args *)args);
++ error = ioctl(p, (struct ioctl_args *)args);
+ break;
+ case LINUX_SIOCSLADRF:
+ DEB(printf(__FUNCTION__ ": LINUX_SIOCSLADRF\n"));
+@@ -146,21 +146,21 @@
+ case LINUX_SIOCPORT:
+ DEB(printf(__FUNCTION__ ": LINUX_SIOCPORT\n"));
+ args->cmd = VMIO_SIOCPORT;
+- error = ioctl(td, (struct ioctl_args *)args);
++ error = ioctl(p, (struct ioctl_args *)args);
+ break;
+ case LINUX_SIOCBRIDGE:
+ DEB(printf(__FUNCTION__ ": LINUX_SIOCBRIDGE\n"));
+ args->cmd = VMIO_SIOCBRIDGE;
+- error = ioctl(td, (struct ioctl_args *)args);
++ error = ioctl(p, (struct ioctl_args *)args);
+ break;
+ case LINUX_SIOCNETIF:
+ DEB(printf(__FUNCTION__ ": LINUX_SIOCNETIF\n"));
+ args->cmd = VMIO_SIOCNETIF;
+- error = ioctl(td, (struct ioctl_args *)args);
++ error = ioctl(p, (struct ioctl_args *)args);
+ break;
+ case LINUX_SIOCSETMACADDR:
+ DEB(printf(__FUNCTION__ ": LINUX_SIOCSETMACADDR\n"));
+- error = linux_ioctl_setmacaddr(td, args);
++ error = linux_ioctl_setmacaddr(p, args);
+ break;
+ }
+ DEB(printf(__FUNCTION__ ": return %d\n", error));
+@@ -171,16 +171,16 @@
+
+ /* What is the dumb idea to use SIOCSIFFLAGS ioctl, and directly pass flags? */
+ static int
+-linux_ioctl_net_sifflags(struct thread *td, struct linux_ioctl_args *args)
++linux_ioctl_net_sifflags(struct proc *p, struct linux_ioctl_args *args)
+ {
+ int error;
+
+ DEB(printf(__FUNCTION__ ": cmd 0x%04lx arg %p\n", args->cmd, (void*)args->arg));
+ args->cmd = SIOCGIFFLAGS;
+- error = ioctl(td, (struct ioctl_args *)args); /* First try standart */
++ error = ioctl(p, (struct ioctl_args *)args); /* First try standart */
+ if (error) {
+ args->cmd = VMIO_SIOCSIFFLAGS; /* Than vmnet */
+- error = ioctl(td, (struct ioctl_args *)args);
++ error = ioctl(p, (struct ioctl_args *)args);
+ }
+ DEB(printf(__FUNCTION__ ": return %d\n", error));
+ return error;
diff --git a/emulators/vmware3/pkg-plist b/emulators/vmware3/pkg-plist
index 963929f0bb8a..81c468d6fd55 100644
--- a/emulators/vmware3/pkg-plist
+++ b/emulators/vmware3/pkg-plist
@@ -2,7 +2,7 @@ bin/vmware
etc/rc.d/vmware.sh
etc/vmware/config
lib/vmware/lib/modules/vmmon_smp.ko
-lib/vmware/lib/modules/linker.hints
+%%FREEBSD5%%lib/vmware/lib/modules/linker.hints
lib/vmware/lib/modules/vmmon_up.ko
lib/vmware/lib/modules/vmnet.ko
lib/vmware/lib/config