PERFORCE change 59852 for review

Robert Watson rwatson at FreeBSD.org
Mon Aug 16 07:51:36 PDT 2004


http://perforce.freebsd.org/chv.cgi?CH=59852

Change 59852 by rwatson at rwatson_paprika on 2004/08/16 14:51:23

	Integrate netperf_socket from FreeBSD CVS:
	
	More linux32 fixage.  IA32 -> COMPAT_IA32.
	geom_raid3.
	powerpc /dev/mem.
	amd64 agp support.
	VM_KMEM_SIZE_MAX tweakage.
	ipfw2 ABI broken again.
	debug_mpsafevm to do-Giant some interesting VM pieces.

Affected files ...

.. //depot/projects/netperf_socket/sys/alpha/linux/linux.h#2 integrate
.. //depot/projects/netperf_socket/sys/amd64/amd64/exception.S#5 integrate
.. //depot/projects/netperf_socket/sys/amd64/conf/GENERIC#14 integrate
.. //depot/projects/netperf_socket/sys/amd64/conf/NOTES#8 integrate
.. //depot/projects/netperf_socket/sys/amd64/linux32/Makefile#1 branch
.. //depot/projects/netperf_socket/sys/amd64/linux32/linux.h#1 branch
.. //depot/projects/netperf_socket/sys/amd64/linux32/linux32_dummy.c#1 branch
.. //depot/projects/netperf_socket/sys/amd64/linux32/linux32_genassym.c#1 branch
.. //depot/projects/netperf_socket/sys/amd64/linux32/linux32_ipc64.h#1 branch
.. //depot/projects/netperf_socket/sys/amd64/linux32/linux32_locore.s#1 branch
.. //depot/projects/netperf_socket/sys/amd64/linux32/linux32_machdep.c#1 branch
.. //depot/projects/netperf_socket/sys/amd64/linux32/linux32_proto.h#1 branch
.. //depot/projects/netperf_socket/sys/amd64/linux32/linux32_syscall.h#1 branch
.. //depot/projects/netperf_socket/sys/amd64/linux32/linux32_sysent.c#1 branch
.. //depot/projects/netperf_socket/sys/amd64/linux32/linux32_sysvec.c#1 branch
.. //depot/projects/netperf_socket/sys/amd64/linux32/syscalls.conf#1 branch
.. //depot/projects/netperf_socket/sys/amd64/linux32/syscalls.master#1 branch
.. //depot/projects/netperf_socket/sys/compat/linprocfs/linprocfs.c#4 integrate
.. //depot/projects/netperf_socket/sys/compat/linux/linux_file.c#4 integrate
.. //depot/projects/netperf_socket/sys/compat/linux/linux_getcwd.c#2 integrate
.. //depot/projects/netperf_socket/sys/compat/linux/linux_ioctl.c#6 integrate
.. //depot/projects/netperf_socket/sys/compat/linux/linux_ipc.c#2 integrate
.. //depot/projects/netperf_socket/sys/compat/linux/linux_ipc.h#2 integrate
.. //depot/projects/netperf_socket/sys/compat/linux/linux_mib.c#2 integrate
.. //depot/projects/netperf_socket/sys/compat/linux/linux_misc.c#7 integrate
.. //depot/projects/netperf_socket/sys/compat/linux/linux_signal.c#2 integrate
.. //depot/projects/netperf_socket/sys/compat/linux/linux_socket.c#5 integrate
.. //depot/projects/netperf_socket/sys/compat/linux/linux_stats.c#6 integrate
.. //depot/projects/netperf_socket/sys/compat/linux/linux_sysctl.c#2 integrate
.. //depot/projects/netperf_socket/sys/compat/linux/linux_uid16.c#4 integrate
.. //depot/projects/netperf_socket/sys/conf/NOTES#36 integrate
.. //depot/projects/netperf_socket/sys/conf/files#47 integrate
.. //depot/projects/netperf_socket/sys/conf/files.amd64#15 integrate
.. //depot/projects/netperf_socket/sys/conf/files.i386#27 integrate
.. //depot/projects/netperf_socket/sys/conf/files.pc98#15 integrate
.. //depot/projects/netperf_socket/sys/conf/files.powerpc#7 integrate
.. //depot/projects/netperf_socket/sys/conf/options#25 integrate
.. //depot/projects/netperf_socket/sys/conf/options.amd64#6 integrate
.. //depot/projects/netperf_socket/sys/conf/options.i386#5 integrate
.. //depot/projects/netperf_socket/sys/conf/options.pc98#5 integrate
.. //depot/projects/netperf_socket/sys/dev/ata/ata-all.c#15 integrate
.. //depot/projects/netperf_socket/sys/dev/ata/ata-chipset.c#16 integrate
.. //depot/projects/netperf_socket/sys/dev/ata/ata-lowlevel.c#15 integrate
.. //depot/projects/netperf_socket/sys/dev/ata/ata-queue.c#11 integrate
.. //depot/projects/netperf_socket/sys/dev/cp/cpddk.c#2 integrate
.. //depot/projects/netperf_socket/sys/dev/cp/cpddk.h#2 integrate
.. //depot/projects/netperf_socket/sys/dev/pccbb/pccbb_isa.c#2 integrate
.. //depot/projects/netperf_socket/sys/dev/pccbb/pccbb_pci.c#2 integrate
.. //depot/projects/netperf_socket/sys/geom/raid3/g_raid3.c#1 branch
.. //depot/projects/netperf_socket/sys/geom/raid3/g_raid3.h#1 branch
.. //depot/projects/netperf_socket/sys/geom/raid3/g_raid3_ctl.c#1 branch
.. //depot/projects/netperf_socket/sys/i386/conf/NOTES#25 integrate
.. //depot/projects/netperf_socket/sys/i386/include/vmparam.h#3 integrate
.. //depot/projects/netperf_socket/sys/i386/linux/linux.h#2 integrate
.. //depot/projects/netperf_socket/sys/kern/vfs_subr.c#21 integrate
.. //depot/projects/netperf_socket/sys/modules/Makefile#17 integrate
.. //depot/projects/netperf_socket/sys/modules/agp/Makefile#2 integrate
.. //depot/projects/netperf_socket/sys/modules/geom/Makefile#9 integrate
.. //depot/projects/netperf_socket/sys/modules/geom/geom_raid3/Makefile#1 branch
.. //depot/projects/netperf_socket/sys/netinet/ip_fw.h#8 integrate
.. //depot/projects/netperf_socket/sys/pci/agp.c#8 integrate
.. //depot/projects/netperf_socket/sys/pci/agp_amd.c#6 integrate
.. //depot/projects/netperf_socket/sys/pci/agp_amd64.c#1 branch
.. //depot/projects/netperf_socket/sys/pci/agp_sis.c#5 integrate
.. //depot/projects/netperf_socket/sys/pci/agp_via.c#7 integrate
.. //depot/projects/netperf_socket/sys/pci/agpreg.h#5 integrate
.. //depot/projects/netperf_socket/sys/powerpc/conf/GENERIC#9 integrate
.. //depot/projects/netperf_socket/sys/powerpc/include/memdev.h#1 branch
.. //depot/projects/netperf_socket/sys/powerpc/include/ofw_machdep.h#2 integrate
.. //depot/projects/netperf_socket/sys/powerpc/include/pmap.h#6 integrate
.. //depot/projects/netperf_socket/sys/powerpc/ofw/ofw_syscons.c#4 integrate
.. //depot/projects/netperf_socket/sys/powerpc/powerpc/mem.c#1 branch
.. //depot/projects/netperf_socket/sys/powerpc/powerpc/ofw_machdep.c#2 integrate
.. //depot/projects/netperf_socket/sys/powerpc/powerpc/pmap.c#14 integrate
.. //depot/projects/netperf_socket/sys/ufs/ufs/ufs_dirhash.c#3 integrate
.. //depot/projects/netperf_socket/sys/vm/vm.h#3 integrate
.. //depot/projects/netperf_socket/sys/vm/vm_fault.c#7 integrate
.. //depot/projects/netperf_socket/sys/vm/vm_map.c#22 integrate
.. //depot/projects/netperf_socket/sys/vm/vm_meter.c#3 integrate

Differences ...

==== //depot/projects/netperf_socket/sys/alpha/linux/linux.h#2 (text+ko) ====

@@ -25,7 +25,7 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/alpha/linux/linux.h,v 1.58 2003/04/16 20:04:47 jhb Exp $
+ * $FreeBSD: src/sys/alpha/linux/linux.h,v 1.59 2004/08/16 07:05:44 tjr Exp $
  */
 
 #ifndef _ALPHA_LINUX_LINUX_H_
@@ -45,6 +45,9 @@
 MALLOC_DECLARE(M_LINUX);
 #endif
 
+#define	PTRIN(v)	(void *)(v)
+#define	PTROUT(v)	(l_uintptr_t)(v)
+
 typedef int		l_int;
 typedef int64_t		l_long;
 typedef int64_t		l_longlong;
@@ -55,6 +58,7 @@
 typedef unsigned short	l_ushort;
 
 typedef char		*l_caddr_t;
+typedef l_ulong		l_uintptr_t;
 typedef l_long		l_clock_t;
 typedef l_int		l_daddr_t;
 typedef l_uint		l_dev_t;

==== //depot/projects/netperf_socket/sys/amd64/amd64/exception.S#5 (text+ko) ====

@@ -27,11 +27,11 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/amd64/amd64/exception.S,v 1.119 2004/05/24 12:42:16 bde Exp $
+ * $FreeBSD: src/sys/amd64/amd64/exception.S,v 1.120 2004/08/16 12:51:32 obrien Exp $
  */
 
 #include "opt_atpic.h"
-#include "opt_ia32.h"
+#include "opt_compat.h"
 
 #include <machine/asmacros.h>
 #include <machine/psl.h>
@@ -307,7 +307,7 @@
  * included.
  */
 
-#ifdef IA32
+#ifdef COMPAT_IA32
 	.data
 	.p2align 4
 	.text

==== //depot/projects/netperf_socket/sys/amd64/conf/GENERIC#14 (text+ko) ====

@@ -16,7 +16,7 @@
 # If you are in doubt as to the purpose or necessity of a line, check first
 # in NOTES.
 #
-# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.419 2004/08/03 19:24:52 markm Exp $
+# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.420 2004/08/16 12:51:32 obrien Exp $
 
 machine		amd64
 cpu		HAMMER
@@ -44,7 +44,7 @@
 options 	PROCFS			# Process filesystem (requires PSEUDOFS)
 options 	PSEUDOFS		# Pseudo-filesystem framework
 options 	GEOM_GPT		# GUID Partition Tables.
-options 	IA32			# Compatible with i386 binaries
+options 	COMPAT_IA32		# Compatible with i386 binaries
 options 	COMPAT_FREEBSD4		# Compatible with FreeBSD4
 options 	SCSI_DELAY=15000	# Delay (in ms) before probing SCSI
 options 	KTRACE			# ktrace(1) support

==== //depot/projects/netperf_socket/sys/amd64/conf/NOTES#8 (text+ko) ====

@@ -4,7 +4,7 @@
 # This file contains machine dependent kernel configuration notes.  For
 # machine independent notes, look in /sys/conf/NOTES.
 #
-# $FreeBSD: src/sys/amd64/conf/NOTES,v 1.15 2004/08/01 11:40:51 markm Exp $
+# $FreeBSD: src/sys/amd64/conf/NOTES,v 1.18 2004/08/16 12:39:27 tjr Exp $
 #
 
 #
@@ -456,6 +456,9 @@
 #XXX keep these here for now and reactivate when support for emulating
 #XXX these 32 bit binaries is added.
 
+# Enable 32-bit runtime support for FreeBSD/i386 binaries.
+options 	COMPAT_IA32
+
 # Enable iBCS2 runtime support for SCO and ISC binaries
 #XXX#options 	IBCS2
 
@@ -465,9 +468,12 @@
 # Enable Linux ABI emulation
 #XXX#options 	COMPAT_LINUX
 
-# Enable the linux-like proc filesystem support (requires COMPAT_LINUX
+# Enable 32-bit Linux ABI emulation (requires COMPAT_43 and IA32)
+options 	COMPAT_LINUX32
+
+# Enable the linux-like proc filesystem support (requires COMPAT_LINUX32
 # and PSEUDOFS)
-#XXX#options 	LINPROCFS
+options 	LINPROCFS
 
 #
 # SysVR4 ABI emulation

==== //depot/projects/netperf_socket/sys/compat/linprocfs/linprocfs.c#4 (text+ko) ====

@@ -40,7 +40,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linprocfs/linprocfs.c,v 1.83 2004/04/01 00:04:22 pjd Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linprocfs/linprocfs.c,v 1.84 2004/08/16 08:19:18 tjr Exp $");
 
 #include <sys/param.h>
 #include <sys/queue.h>
@@ -86,12 +86,17 @@
 extern int ncpus;
 #endif /* __alpha__ */
 
-#ifdef __i386__
+#if defined(__i386__) || defined(__amd64__)
 #include <machine/cputypes.h>
 #include <machine/md_var.h>
-#endif /* __i386__ */
+#endif /* __i386__ || __amd64__ */
 
+#include "opt_compat.h"
+#if !COMPAT_LINUX32				/* XXX */
 #include <machine/../linux/linux.h>
+#else
+#include <machine/../linux32/linux.h>
+#endif
 #include <compat/linux/linux_ioctl.h>
 #include <compat/linux/linux_mib.h>
 #include <compat/linux/linux_util.h>
@@ -251,9 +256,9 @@
 }
 #endif /* __alpha__ */
 
-#ifdef __i386__
+#if defined(__i386__) || defined(__amd64__)
 /*
- * Filler function for proc/cpuinfo (i386 version)
+ * Filler function for proc/cpuinfo (i386 & amd64 version)
  */
 static int
 linprocfs_docpuinfo(PFS_FILL_ARGS)
@@ -276,6 +281,7 @@
 	};
 
 	switch (cpu_class) {
+#ifdef __i386__
 	case CPUCLASS_286:
 		class = 2;
 		break;
@@ -294,6 +300,11 @@
 	default:
 		class = 0;
 		break;
+#else
+	default:
+		class = 6;
+		break;
+#endif
 	}
 
 	for (i = 0; i < mp_ncpus; ++i) {
@@ -331,7 +342,7 @@
 
 	return (0);
 }
-#endif /* __i386__ */
+#endif /* __i386__ || __amd64__ */
 
 /*
  * Filler function for proc/mtab

==== //depot/projects/netperf_socket/sys/compat/linux/linux_file.c#4 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_file.c,v 1.86 2004/07/27 21:38:42 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_file.c,v 1.87 2004/08/16 07:28:16 tjr Exp $");
 
 #include "opt_compat.h"
 #include "opt_mac.h"
@@ -54,8 +54,15 @@
 #include <ufs/ufs/quota.h>
 #include <ufs/ufs/ufsmount.h>
 
+#include "opt_compat.h"
+
+#if !COMPAT_LINUX32
 #include <machine/../linux/linux.h>
 #include <machine/../linux/linux_proto.h>
+#else
+#include <machine/../linux32/linux.h>
+#include <machine/../linux32/linux32_proto.h>
+#endif
 #include <compat/linux/linux_util.h>
 
 #ifndef __alpha__
@@ -827,7 +834,11 @@
 	l_off_t		l_start;
 	l_off_t		l_len;
 	l_pid_t		l_pid;
-};
+}
+#if __amd64__ && COMPAT_LINUX32
+__packed
+#endif
+;
 
 static void
 linux_to_bsd_flock(struct l_flock *linux_flock, struct flock *bsd_flock)
@@ -872,14 +883,18 @@
 	linux_flock->l_pid = (l_pid_t)bsd_flock->l_pid;
 }
 
-#if defined(__i386__)
+#if defined(__i386__) || (defined(__amd64__) && COMPAT_LINUX32)
 struct l_flock64 {
 	l_short		l_type;
 	l_short		l_whence;
 	l_loff_t	l_start;
 	l_loff_t	l_len;
 	l_pid_t		l_pid;
-};
+}
+#if __amd64__ && COMPAT_LINUX32
+__packed
+#endif
+;
 
 static void
 linux_to_bsd_flock64(struct l_flock64 *linux_flock, struct flock *bsd_flock)
@@ -923,7 +938,7 @@
 	linux_flock->l_len = (l_loff_t)bsd_flock->l_len;
 	linux_flock->l_pid = (l_pid_t)bsd_flock->l_pid;
 }
-#endif /* __i386__ */
+#endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */
 
 #if defined(__alpha__)
 #define	linux_fcntl64_args	linux_fcntl_args
@@ -1051,7 +1066,7 @@
 	return (fcntl_common(td, &args64));
 }
 
-#if defined(__i386__)
+#if defined(__i386__) || (defined(__amd64__) && COMPAT_LINUX32)
 int
 linux_fcntl64(struct thread *td, struct linux_fcntl64_args *args)
 {
@@ -1099,7 +1114,7 @@
 
 	return (fcntl_common(td, args));
 }
-#endif /* __i386__ */
+#endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */
 
 int
 linux_chown(struct thread *td, struct linux_chown_args *args)

==== //depot/projects/netperf_socket/sys/compat/linux/linux_getcwd.c#2 (text+ko) ====

@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_getcwd.c,v 1.14 2003/11/17 18:57:20 rwatson Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_getcwd.c,v 1.15 2004/08/16 07:28:16 tjr Exp $");
 
 #include "opt_compat.h"
 #include "opt_mac.h"
@@ -59,8 +59,15 @@
 #include <sys/dirent.h>
 #include <ufs/ufs/dir.h>	/* XXX only for DIRBLKSIZ */
 
+#include "opt_compat.h"
+
+#if !COMPAT_LINUX32
 #include <machine/../linux/linux.h>
 #include <machine/../linux/linux_proto.h>
+#else
+#include <machine/../linux32/linux.h>
+#include <machine/../linux32/linux32_proto.h>
+#endif
 #include <compat/linux/linux_util.h>
 
 static int

==== //depot/projects/netperf_socket/sys/compat/linux/linux_ioctl.c#6 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_ioctl.c,v 1.120 2004/07/02 15:31:44 netchild Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_ioctl.c,v 1.121 2004/08/16 07:28:16 tjr Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -56,8 +56,15 @@
 #include <net/if_dl.h>
 #include <net/if_types.h>
 
+#include "opt_compat.h"
+
+#if !COMPAT_LINUX32
 #include <machine/../linux/linux.h>
 #include <machine/../linux/linux_proto.h>
+#else
+#include <machine/../linux32/linux.h>
+#include <machine/../linux32/linux32_proto.h>
+#endif
 
 #include <compat/linux/linux_ioctl.h>
 #include <compat/linux/linux_mib.h>
@@ -2081,7 +2088,11 @@
 static int
 linux_ifconf(struct thread *td, struct ifconf *uifc)
 {
+#if COMPAT_LINUX32
+	struct l_ifconf ifc;
+#else
 	struct ifconf ifc;
+#endif
 	struct l_ifreq ifr;
 	struct ifnet *ifp;
 	struct ifaddr *ifa;
@@ -2094,7 +2105,7 @@
 		return (error);
 
 	/* handle the 'request buffer size' case */
-	if (ifc.ifc_buf == NULL) {
+	if (ifc.ifc_buf == PTROUT(NULL)) {
 		ifc.ifc_len = 0;
 		TAILQ_FOREACH(ifp, &ifnet, if_link) {
 			TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) {
@@ -2108,7 +2119,7 @@
 	}
 
 	/* much easier to use uiomove than keep track ourselves */
-	iov.iov_base = ifc.ifc_buf;
+	iov.iov_base = PTRIN(ifc.ifc_buf);
 	iov.iov_len = ifc.ifc_len;
 	uio.uio_iov = &iov;
 	uio.uio_iovcnt = 1;

==== //depot/projects/netperf_socket/sys/compat/linux/linux_ipc.c#2 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_ipc.c,v 1.38 2003/11/05 01:53:10 fjoe Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_ipc.c,v 1.39 2004/08/16 07:28:16 tjr Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -39,9 +39,17 @@
 #include <sys/sem.h>
 #include <sys/shm.h>
 
+#include "opt_compat.h"
+
+#if !COMPAT_LINUX32
 #include <machine/../linux/linux.h>
 #include <machine/../linux/linux_proto.h>
 #include <machine/../linux/linux_ipc64.h>
+#else
+#include <machine/../linux32/linux.h>
+#include <machine/../linux32/linux32_proto.h>
+#include <machine/../linux32/linux32_ipc64.h>
+#endif
 #include <compat/linux/linux_ipc.h>
 #include <compat/linux/linux_util.h>
 
@@ -133,8 +141,8 @@
 
 struct l_msqid_ds {
 	struct l_ipc_perm	msg_perm;
-	struct l_msg		*msg_first;	/* first message on queue,unused */
-	struct l_msg		*msg_last;	/* last message in queue,unused */
+	l_uintptr_t		msg_first;	/* first message on queue,unused */
+	l_uintptr_t		msg_last;	/* last message in queue,unused */
 	l_time_t		msg_stime;	/* last msgsnd time */
 	l_time_t		msg_rtime;	/* last msgrcv time */
 	l_time_t		msg_ctime;	/* last change time */
@@ -145,18 +153,26 @@
 	l_ushort		msg_qbytes;	/* max number of bytes on queue */
 	l_pid_t			msg_lspid;	/* pid of last msgsnd */
 	l_pid_t			msg_lrpid;	/* last receive pid */
-};
+}
+#if __amd64__ && COMPAT_LINUX32
+__packed
+#endif
+;
 
 struct l_semid_ds {
 	struct l_ipc_perm	sem_perm;
 	l_time_t		sem_otime;
 	l_time_t		sem_ctime;
-	void			*sem_base;
-	void			*sem_pending;
-	void			*sem_pending_last;
-	void			*undo;
+	l_uintptr_t		sem_base;
+	l_uintptr_t		sem_pending;
+	l_uintptr_t		sem_pending_last;
+	l_uintptr_t		undo;
 	l_ushort		sem_nsems;
-};
+}
+#if __amd64__ && COMPAT_LINUX32
+__packed
+#endif
+;
 
 struct l_shmid_ds {
 	struct l_ipc_perm	shm_perm;
@@ -168,8 +184,8 @@
 	l_ushort		shm_lpid;
 	l_short			shm_nattch;
 	l_ushort		private1;
-	void			*private2;
-	void			*private3;
+	l_uintptr_t		private2;
+	l_uintptr_t		private3;
 };
 
 static void
@@ -179,7 +195,7 @@
     bsp->sem_otime = lsp->sem_otime;
     bsp->sem_ctime = lsp->sem_ctime;
     bsp->sem_nsems = lsp->sem_nsems;
-    bsp->sem_base = lsp->sem_base;
+    bsp->sem_base = PTRIN(lsp->sem_base);
 }
 
 static void
@@ -189,7 +205,7 @@
 	lsp->sem_otime = bsp->sem_otime;
 	lsp->sem_ctime = bsp->sem_ctime;
 	lsp->sem_nsems = bsp->sem_nsems;
-	lsp->sem_base = bsp->sem_base;
+	lsp->sem_base = PTROUT(bsp->sem_base);
 }
 
 static void
@@ -203,7 +219,8 @@
     bsp->shm_atime = lsp->shm_atime;
     bsp->shm_dtime = lsp->shm_dtime;
     bsp->shm_ctime = lsp->shm_ctime;
-    bsp->shm_internal = lsp->private3;	/* this goes (yet) SOS */
+    /* this goes (yet) SOS */
+    bsp->shm_internal = PTRIN(lsp->private3);
 }
 
 static void
@@ -217,7 +234,8 @@
     lsp->shm_atime = bsp->shm_atime;
     lsp->shm_dtime = bsp->shm_dtime;
     lsp->shm_ctime = bsp->shm_ctime;
-    lsp->private3 = bsp->shm_internal;	/* this goes (yet) SOS */
+    /* this goes (yet) SOS */
+    lsp->private3 = PTROUT(bsp->shm_internal);
 }
 
 static void
@@ -447,7 +465,7 @@
 	} */ bsd_args;
 
 	bsd_args.semid = args->semid;
-	bsd_args.sops = (struct sembuf *)args->tsops;
+	bsd_args.sops = (struct sembuf *)PTRIN(args->tsops);
 	bsd_args.nsops = args->nsops;
 	return semop(td, &bsd_args);
 }
@@ -516,7 +534,7 @@
 	case LINUX_IPC_SET:
 		bsd_args.cmd = IPC_SET;
 		error = linux_semid_pullup(args->cmd & LINUX_IPC_64,
-		    &linux_semid, (caddr_t)args->arg.buf);
+		    &linux_semid, (caddr_t)PTRIN(args->arg.buf));
 		if (error)
 			return (error);
 		unptr->buf = stackgap_alloc(&sg, sizeof(struct semid_ds));
@@ -536,7 +554,7 @@
 							unptr->buf->sem_perm);
 		bsd_to_linux_semid_ds(unptr->buf, &linux_semid);
 		return (linux_semid_pushdown(args->cmd & LINUX_IPC_64,
-		    &linux_semid, (caddr_t)args->arg.buf));
+		    &linux_semid, (caddr_t)PTRIN(args->arg.buf)));
 	case LINUX_IPC_INFO:
 	case LINUX_SEM_INFO:
 		bcopy(&seminfo, &linux_seminfo, sizeof(linux_seminfo) );
@@ -546,8 +564,8 @@
 		linux_seminfo.semusz = used_semids;
 		linux_seminfo.semaem = used_sems;
 */
-		error = copyout(&linux_seminfo, args->arg.buf,
-		    sizeof(linux_seminfo));
+		error = copyout(&linux_seminfo,
+		    PTRIN(args->arg.buf), sizeof(linux_seminfo));
 		if (error)
 			return error;
 		td->td_retval[0] = seminfo.semmni;
@@ -575,7 +593,7 @@
     } */ bsd_args;
 
     bsd_args.msqid = args->msqid;
-    bsd_args.msgp = args->msgp;
+    bsd_args.msgp = PTRIN(args->msgp);
     bsd_args.msgsz = args->msgsz;
     bsd_args.msgflg = args->msgflg;
     return msgsnd(td, &bsd_args);
@@ -593,7 +611,7 @@
     } */ bsd_args;
 
     bsd_args.msqid = args->msqid;
-    bsd_args.msgp = args->msgp;
+    bsd_args.msgp = PTRIN(args->msgp);
     bsd_args.msgsz = args->msgsz;
     bsd_args.msgtyp = args->msgtyp;
     bsd_args.msgflg = args->msgflg;
@@ -626,7 +644,7 @@
     caddr_t sg = stackgap_init();
 
     error = linux_msqid_pullup(args->cmd & LINUX_IPC_64,
-      &linux_msqid, (caddr_t)args->buf);
+      &linux_msqid, (caddr_t)PTRIN(args->buf));
     if (error != 0)
 	return (error);
     bsd_args.buf = (struct msqid_ds*)stackgap_alloc(&sg,
@@ -644,7 +662,7 @@
     if (bsd_args.cmd == LINUX_IPC_STAT) {
 	bsd_to_linux_msqid_ds(bsd_args.buf, &linux_msqid);
 	return (linux_msqid_pushdown(args->cmd & LINUX_IPC_64,
-	  &linux_msqid, (caddr_t)args->buf));
+	  &linux_msqid, (caddr_t)PTRIN(args->buf)));
     }
 
     return (0);
@@ -659,14 +677,18 @@
 	int shmflg;
     } */ bsd_args;
     int error;
+#if defined(__i386__) || (defined(__amd64__) && COMPAT_LINUX32)
+    l_uintptr_t addr;
+#endif
 
     bsd_args.shmid = args->shmid;
-    bsd_args.shmaddr = args->shmaddr;
+    bsd_args.shmaddr = PTRIN(args->shmaddr);
     bsd_args.shmflg = args->shmflg;
     if ((error = shmat(td, &bsd_args)))
 	return error;
-#ifdef __i386__
-    if ((error = copyout(td->td_retval, args->raddr, sizeof(l_ulong))))
+#if defined(__i386__) || (defined(__amd64__) && COMPAT_LINUX32)
+    addr = td->td_retval[0];
+    if ((error = copyout(&addr, PTRIN(args->raddr), sizeof(addr))))
 	return error;
     td->td_retval[0] = 0;
 #endif
@@ -680,7 +702,7 @@
 	void *shmaddr;
     } */ bsd_args;
 
-    bsd_args.shmaddr = args->shmaddr;
+    bsd_args.shmaddr = PTRIN(args->shmaddr);
     return shmdt(td, &bsd_args);
 }
 
@@ -723,7 +745,7 @@
 	    bsd_to_linux_shminfo(&bsd_shminfo, &linux_shminfo);
 
 	    return (linux_shminfo_pushdown(args->cmd & LINUX_IPC_64,
-	       &linux_shminfo, (caddr_t)args->buf));
+	       &linux_shminfo, (caddr_t)PTRIN(args->buf)));
 	}
 
 	case LINUX_SHM_INFO: {
@@ -737,7 +759,7 @@
 
 	    bsd_to_linux_shm_info(&bsd_shm_info, &linux_shm_info);
 
-	    return copyout(&linux_shm_info, (caddr_t)args->buf,
+	    return copyout(&linux_shm_info, (caddr_t)PTRIN(args->buf),
 	        sizeof(struct l_shm_info));
 	}
 
@@ -751,7 +773,7 @@
 	    bsd_to_linux_shmid_ds(&bsd_shmid, &linux_shmid);
 
 	    return (linux_shmid_pushdown(args->cmd & LINUX_IPC_64,
-	  &linux_shmid, (caddr_t)args->buf));
+	  &linux_shmid, (caddr_t)PTRIN(args->buf)));
 
     case LINUX_SHM_STAT:
 	/* Perform shmctl wanting removed segments lookup */
@@ -763,11 +785,11 @@
 	bsd_to_linux_shmid_ds(&bsd_shmid, &linux_shmid);
 	
 	return (linux_shmid_pushdown(args->cmd & LINUX_IPC_64,
-	   &linux_shmid, (caddr_t)args->buf));
+	   &linux_shmid, (caddr_t)PTRIN(args->buf)));
 
     case LINUX_IPC_SET:
 	error = linux_shmid_pullup(args->cmd & LINUX_IPC_64,
-	  &linux_shmid, (caddr_t)args->buf);
+	  &linux_shmid, (caddr_t)PTRIN(args->buf));
 	if (error)
     		return error;
 
@@ -780,11 +802,11 @@
     case LINUX_IPC_RMID: {
 	void *buf;
 		
-	if (args->buf == NULL)
+	if (args->buf == 0)
     		buf = NULL;
 	else {
     		error = linux_shmid_pullup(args->cmd & LINUX_IPC_64,
-		    &linux_shmid, (caddr_t)args->buf);
+		    &linux_shmid, (caddr_t)PTRIN(args->buf));
 		if (error)
 			return error;
 		linux_to_bsd_shmid_ds(&linux_shmid, &bsd_shmid);

==== //depot/projects/netperf_socket/sys/compat/linux/linux_ipc.h#2 (text+ko) ====

@@ -25,7 +25,7 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/compat/linux/linux_ipc.h,v 1.9 2002/10/11 11:43:08 sobomax Exp $
+ * $FreeBSD: src/sys/compat/linux/linux_ipc.h,v 1.10 2004/08/16 07:28:16 tjr Exp $
  */
 
 #ifndef _LINUX_IPC_H_
@@ -40,7 +40,7 @@
 #define	LINUX_IPC_64	0x0100	/* New version (support 32-bit UIDs, bigger
 				   message sizes, etc. */
 
-#ifdef __i386__
+#if defined(__i386__) || defined(__amd64__)
 
 struct linux_msgctl_args 
 {
@@ -135,6 +135,6 @@
 int linux_shmdt(struct thread *, struct linux_shmdt_args *);
 int linux_shmget(struct thread *, struct linux_shmget_args *);
 
-#endif	/* __i386__ */
+#endif	/* __i386__ || __amd64__ */
 
 #endif /* _LINUX_IPC_H_ */

==== //depot/projects/netperf_socket/sys/compat/linux/linux_mib.c#2 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_mib.c,v 1.21 2003/06/10 21:27:39 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_mib.c,v 1.22 2004/08/16 07:28:16 tjr Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -39,7 +39,13 @@
 #include <sys/lock.h>
 #include <sys/mutex.h>
 
+#include "opt_compat.h"
+
+#if !COMPAT_LINUX32
 #include <machine/../linux/linux.h>
+#else
+#include <machine/../linux32/linux.h>
+#endif
 #include <compat/linux/linux_mib.h>
 
 struct linux_prison {

==== //depot/projects/netperf_socket/sys/compat/linux/linux_misc.c#7 (text+ko) ====

@@ -28,14 +28,16 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.157 2004/08/15 12:34:15 tjr Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.160 2004/08/16 11:12:57 obrien Exp $");
 
 #include "opt_mac.h"
 
 #include <sys/param.h>
 #include <sys/blist.h>
 #include <sys/fcntl.h>
+#if defined(__i386__) || defined(__alpha__)
 #include <sys/imgact_aout.h>
+#endif
 #include <sys/jail.h>
 #include <sys/kernel.h>
 #include <sys/limits.h>
@@ -70,8 +72,15 @@
 
 #include <posix4/sched.h>
 
+#include "opt_compat.h"
+
+#if !COMPAT_LINUX32
 #include <machine/../linux/linux.h>
 #include <machine/../linux/linux_proto.h>
+#else
+#include <machine/../linux32/linux.h>
+#include <machine/../linux32/linux32_proto.h>
+#endif
 
 #include <compat/linux/linux_mib.h>
 #include <compat/linux/linux_util.h>
@@ -224,7 +233,7 @@
 
 #ifdef DEBUG
 	if (ldebug(brk))
-		printf(ARGS(brk, "%p"), (void *)args->dsend);
+		printf(ARGS(brk, "%p"), (void *)(uintptr_t)args->dsend);
 #endif
 	old = (vm_offset_t)vm->vm_daddr + ctob(vm->vm_dsize);
 	new = (vm_offset_t)args->dsend;
@@ -237,6 +246,8 @@
 	return 0;
 }
 
+#if defined(__i386__) || defined(__alpha__)
+
 int
 linux_uselib(struct thread *td, struct linux_uselib_args *args)
 {
@@ -427,7 +438,7 @@
 			goto cleanup;
 
 		/* copy from kernel VM space to user space */
-		error = copyout((void *)(uintptr_t)(buffer + file_offset),
+		error = copyout(PTRIN(buffer + file_offset),
 		    (void *)vmaddr, a_out->a_text + a_out->a_data);
 
 		/* release temporary kernel space */
@@ -485,6 +496,8 @@
 	return error;
 }
 
+#endif	/* __i386__ || __alpha__ */
+
 int
 linux_select(struct thread *td, struct linux_select_args *args)
 {
@@ -596,7 +609,7 @@
 #ifdef DEBUG
 	if (ldebug(mremap))
 		printf(ARGS(mremap, "%p, %08lx, %08lx, %08lx"),
-		    (void *)args->addr,
+		    (void *)(uintptr_t)args->addr,
 		    (unsigned long)args->old_len,
 		    (unsigned long)args->new_len,
 		    (unsigned long)args->flags);
@@ -610,7 +623,8 @@
 	}
 
 	if (args->new_len < args->old_len) {
-		bsd_args.addr = (caddr_t)(args->addr + args->new_len);
+		bsd_args.addr =
+		    (caddr_t)((uintptr_t)args->addr + args->new_len);
 		bsd_args.len = args->old_len - args->new_len;
 		error = munmap(td, &bsd_args);
 	}
@@ -628,8 +642,8 @@
 {
 	struct msync_args bsd_args;
 
-	bsd_args.addr = (caddr_t)args->addr;
-	bsd_args.len = args->len;
+	bsd_args.addr = (caddr_t)(uintptr_t)args->addr;
+	bsd_args.len = (uintptr_t)args->len;
 	bsd_args.flags = args->fl & ~LINUX_MS_SYNC;
 
 	return msync(td, &bsd_args);
@@ -755,7 +769,7 @@
 	return (copyout(&utsname, args->buf, sizeof(utsname)));
 }
 
-#if defined(__i386__)
+#if defined(__i386__) || (defined(__amd64__) && COMPAT_LINUX32)
 struct l_utimbuf {
 	l_time_t l_actime;
 	l_time_t l_modtime;
@@ -793,7 +807,7 @@
 	LFREEPATH(fname);
 	return (error);
 }
-#endif /* __i386__ */
+#endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */
 
 #define __WCLONE 0x80000000
 
@@ -935,7 +949,7 @@
 #ifdef DEBUG
 	if (ldebug(setitimer))
 		printf(ARGS(setitimer, "%p, %p"),
-		    (void *)args->itv, (void *)args->oitv);
+		    (void *)uap->itv, (void *)uap->oitv);
 #endif
 	lp = uap->itv;
 	if (lp != NULL) {
@@ -993,7 +1007,7 @@
 
 #ifdef DEBUG
 	if (ldebug(getitimer))
-		printf(ARGS(getitimer, "%p"), (void *)args->itv);
+		printf(ARGS(getitimer, "%p"), (void *)uap->itv);
 #endif
 	lp = uap->itv;
 	if (lp != NULL) {
@@ -1179,12 +1193,21 @@
 	lim_rlimit(p, which, &bsd_rlim);
 	PROC_UNLOCK(p);
 
+#if !COMPAT_LINUX32
 	rlim.rlim_cur = (unsigned long)bsd_rlim.rlim_cur;
 	if (rlim.rlim_cur == ULONG_MAX)
 		rlim.rlim_cur = LONG_MAX;
 	rlim.rlim_max = (unsigned long)bsd_rlim.rlim_max;
 	if (rlim.rlim_max == ULONG_MAX)
 		rlim.rlim_max = LONG_MAX;
+#else
+	rlim.rlim_cur = (unsigned int)bsd_rlim.rlim_cur;
+	if (rlim.rlim_cur == UINT_MAX)
+		rlim.rlim_cur = INT_MAX;
+	rlim.rlim_max = (unsigned int)bsd_rlim.rlim_max;
+	if (rlim.rlim_max == UINT_MAX)
+		rlim.rlim_max = INT_MAX;
+#endif
 	return (copyout(&rlim, args->rlim, sizeof(rlim)));
 }
 

==== //depot/projects/netperf_socket/sys/compat/linux/linux_signal.c#2 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_signal.c,v 1.45 2003/06/10 21:27:39 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_signal.c,v 1.47 2004/08/16 12:15:07 obrien Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -38,8 +38,15 @@
 #include <sys/syscallsubr.h>
 #include <sys/sysproto.h>
 
+#include "opt_compat.h"
+
+#if !COMPAT_LINUX32
 #include <machine/../linux/linux.h>
 #include <machine/../linux/linux_proto.h>
+#else
+#include <machine/../linux32/linux.h>
+#include <machine/../linux32/linux32_proto.h>
+#endif
 #include <compat/linux/linux_signal.h>
 #include <compat/linux/linux_util.h>
 
@@ -90,7 +97,7 @@
 {
 
 	linux_to_bsd_sigset(&lsa->lsa_mask, &bsa->sa_mask);
-	bsa->sa_handler = lsa->lsa_handler;
+	bsa->sa_handler = PTRIN(lsa->lsa_handler);
 	bsa->sa_flags = 0;
 	if (lsa->lsa_flags & LINUX_SA_NOCLDSTOP)
 		bsa->sa_flags |= SA_NOCLDSTOP;
@@ -113,8 +120,12 @@
 {
 
 	bsd_to_linux_sigset(&bsa->sa_mask, &lsa->lsa_mask);
+#if COMPAT_LINUX32
+	lsa->lsa_handler = (uintptr_t)bsa->sa_handler;
+#else

>>> TRUNCATED FOR MAIL (1000 lines) <<<


More information about the p4-projects mailing list