From xdivac02@stud.fit.vutbr.cz  Tue Oct 26 15:08:18 2004
Return-Path: <xdivac02@stud.fit.vutbr.cz>
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id 79EE716A4CE
	for <FreeBSD-gnats-submit@freebsd.org>; Tue, 26 Oct 2004 15:08:18 +0000 (GMT)
Received: from eva.fit.vutbr.cz (eva.fit.vutbr.cz [147.229.10.14])
	by mx1.FreeBSD.org (Postfix) with ESMTP id D950843D31
	for <FreeBSD-gnats-submit@freebsd.org>; Tue, 26 Oct 2004 15:08:16 +0000 (GMT)
	(envelope-from xdivac02@stud.fit.vutbr.cz)
Received: from eva.fit.vutbr.cz (localhost [127.0.0.1])
	by eva.fit.vutbr.cz (8.12.11/8.12.11) with ESMTP id i9QF8BcB019890
	(version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=NO)
	for <FreeBSD-gnats-submit@freebsd.org>; Tue, 26 Oct 2004 17:08:12 +0200 (CEST)
Received: (from xdivac02@localhost)
	by eva.fit.vutbr.cz (8.12.11/8.12.5/Submit) id i9QF8B3S019889;
	Tue, 26 Oct 2004 17:08:11 +0200 (CEST)
Message-Id: <200410261508.i9QF8B3S019889@eva.fit.vutbr.cz>
Date: Tue, 26 Oct 2004 17:08:11 +0200 (CEST)
From: Divacky Roman <xdivac02@stud.fit.vutbr.cz>
Reply-To: Divacky Roman <xdivac02@stud.fit.vutbr.cz>
To: FreeBSD-gnats-submit@freebsd.org
Cc:
Subject: getting rid of COMPAT_43 dependancy in linux emulation layer
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         73165
>Category:       kern
>Synopsis:       [patch] getting rid of COMPAT_43 dependancy in linux emulation layer
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    emulation
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Tue Oct 26 15:10:21 GMT 2004
>Closed-Date:    Sun Aug 21 08:22:19 GMT 2005
>Last-Modified:  Sun Aug 21 08:23:13 GMT 2005
>Originator:     Divacky Roman
>Release:        FreeBSD 6.0-CURRENT i386
>Organization:
home
>Environment:
FreeBSD witten 6.0-CURRENT FreeBSD 6.0-CURRENT #149: Sun Oct 24 14:14:51 CEST
2004     root@witten:/usr/obj/usr/src/sys/NEOLOGISM  i386

	
>Description:

Linux ABI support requires part of COMPAT_43. But whole COMPAT_43 is pretty
useless nowadays, it bloats kernel and makes system slower (for example getpid
with COMPAT_43 requires to lock struct proc). Attached patch removes this
dependancy by introducing new "option COMPAT_43FORLIN" which includes just
those parts of COMPAT_43 which are necessary for linuxator.

>How-To-Repeat:
apply this patch and replace COMPAT_43 with COMPAT_43FORLIN option. your newly
built kernel should be smaller, faster and altogether more happy to use ;)

>Fix:
diff -urN /sys/compat/linux/linux_socket.c src/compat/linux/linux_socket.c
--- sys/compat/linux/linux_socket.c	Tue Aug 24 22:21:21 2004
+++ sys/compat/linux/linux_socket.c	Tue Oct 26 16:16:39 2004
@@ -33,8 +33,8 @@
 #include "opt_compat.h"
 #include "opt_inet6.h"
 
-#ifndef COMPAT_43
-#error "Unable to compile Linux-emulator due to missing COMPAT_43 option!"
+#ifndef COMPAT_43FORLIN
+#error "Unable to compile Linux-emulator due to missing COMPAT_43FORLIN option!"
 #endif
 
 #include <sys/param.h>
diff -urN /sys/conf/options src/conf/options
--- sys/conf/options	Thu Sep 23 10:34:50 2004
+++ sys/conf/options	Tue Oct 26 16:16:57 2004
@@ -62,6 +62,7 @@
 CODA_COMPAT_5	opt_coda.h
 COMPAT_43	opt_compat.h
 COMPAT_FREEBSD4	opt_compat.h
+COMPAT_43FORLIN	opt_compat.h
 COMPILING_LINT	opt_global.h
 CONSPEED	opt_comconsole.h
 CY_PCI_FASTINTR
diff -urN /sys/i386/linux/linux_sysvec.c src/i386/linux/linux_sysvec.c
--- sys/i386/linux/linux_sysvec.c	Thu Jul 15 10:26:05 2004
+++ sys/i386/linux/linux_sysvec.c	Tue Oct 26 16:17:24 2004
@@ -32,8 +32,8 @@
 /* XXX we use functions that might not exist. */
 #include "opt_compat.h"
 
-#ifndef COMPAT_43
-#error "Unable to compile Linux-emulator due to missing COMPAT_43 option!"
+#ifndef COMPAT_43FORLIN
+#error "Unable to compile Linux-emulator due to missing COMPAT_43FORLIN option!"
 #endif
 
 #include <sys/param.h>
diff -urN /sys/kern/kern_xxx.c src/kern/kern_xxx.c
--- sys/kern/kern_xxx.c	Fri Oct 22 14:10:50 2004
+++ sys/kern/kern_xxx.c	Tue Oct 26 16:18:35 2004
@@ -74,7 +74,9 @@
 	mtx_unlock(&Giant);
 	return(error);
 }
+#endif /* COMPAT_43 */
 
+#if defined(COMPAT_43) || defined(COMPAT_43FORLIN)
 #ifndef _SYS_SYSPROTO_H_
 struct sethostname_args {
 	char	*hostname;
@@ -101,7 +103,9 @@
 	mtx_unlock(&Giant);
 	return (error);
 }
+#endif /* COMPAT_43 || COMPAT_43FORLIN */
 
+#ifdef COMPAT_43
 #ifndef _SYS_SYSPROTO_H_
 struct ogethostid_args {
 	int	dummy;
@@ -120,9 +124,7 @@
 	*(long *)(td->td_retval) = hostid;
 	return (0);
 }
-#endif /* COMPAT_43 */
 
-#ifdef COMPAT_43
 #ifndef _SYS_SYSPROTO_H_
 struct osethostid_args {
 	long	hostid;
diff -urN /sys/kern/vfs_syscalls.c src/kern/vfs_syscalls.c
--- sys/kern/vfs_syscalls.c	Mon Jul 26 09:24:03 2004
+++ sys/kern/vfs_syscalls.c	Tue Oct 26 16:20:36 2004
@@ -1898,7 +1898,7 @@
 	return (error);
 }
 
-#if defined(COMPAT_43)
+#if defined(COMPAT_43) || defined(COMPAT_43FORLIN)
 /*
  * Get file status; this version follows links.
  */
@@ -1934,7 +1934,38 @@
 	error = copyout(&osb, uap->ub, sizeof (osb));
 	return (error);
 }
+/*
+ * Convert from an old to a new stat structure.
+ */
+void
+cvtstat(st, ost)
+	struct stat *st;
+	struct ostat *ost;
+{
+
+	ost->st_dev = st->st_dev;
+	ost->st_ino = st->st_ino;
+	ost->st_mode = st->st_mode;
+	ost->st_nlink = st->st_nlink;
+	ost->st_uid = st->st_uid;
+	ost->st_gid = st->st_gid;
+	ost->st_rdev = st->st_rdev;
+	if (st->st_size < (quad_t)1 << 32)
+		ost->st_size = st->st_size;
+	else
+		ost->st_size = -2;
+	ost->st_atime = st->st_atime;
+	ost->st_mtime = st->st_mtime;
+	ost->st_ctime = st->st_ctime;
+	ost->st_blksize = st->st_blksize;
+	ost->st_blocks = st->st_blocks;
+	ost->st_flags = st->st_flags;
+	ost->st_gen = st->st_gen;
+}
+
+#endif /* COMPAT_43 || COMPAT_43FORLIN */
 
+#ifdef COMPAT_43
 /*
  * Get file status; this version does not follow links.
  */
@@ -1973,34 +2004,6 @@
 	return (error);
 }
 
-/*
- * Convert from an old to a new stat structure.
- */
-void
-cvtstat(st, ost)
-	struct stat *st;
-	struct ostat *ost;
-{
-
-	ost->st_dev = st->st_dev;
-	ost->st_ino = st->st_ino;
-	ost->st_mode = st->st_mode;
-	ost->st_nlink = st->st_nlink;
-	ost->st_uid = st->st_uid;
-	ost->st_gid = st->st_gid;
-	ost->st_rdev = st->st_rdev;
-	if (st->st_size < (quad_t)1 << 32)
-		ost->st_size = st->st_size;
-	else
-		ost->st_size = -2;
-	ost->st_atime = st->st_atime;
-	ost->st_mtime = st->st_mtime;
-	ost->st_ctime = st->st_ctime;
-	ost->st_blksize = st->st_blksize;
-	ost->st_blocks = st->st_blocks;
-	ost->st_flags = st->st_flags;
-	ost->st_gen = st->st_gen;
-}
 #endif /* COMPAT_43 */
 
 /*
@@ -3003,7 +3006,9 @@
 	nuap.length = uap->length;
 	return (truncate(td, &nuap));
 }
+#endif /* COMPAT_43 */
 
+#if defined(COMPAT_43) || defined(COMPAT_43FORLIN)
 /*
  * Truncate a file given a file descriptor.
  */
@@ -3031,7 +3036,7 @@
 	nuap.length = uap->length;
 	return (ftruncate(td, &nuap));
 }
-#endif /* COMPAT_43 */
+#endif /* COMPAT_43 || COMPAT_43FORLIN */
 
 /*
  * Sync an open file.
diff -urN /sys/modules/linux/Makefile src/modules/linux/Makefile
--- sys/modules/linux/Makefile	Wed Nov 19 06:08:26 2003
+++ sys/modules/linux/Makefile	Tue Oct 26 16:14:21 2004
@@ -39,9 +39,6 @@
 linux_genassym.o: linux_genassym.c linux.h @ machine
 	${CC} -c ${CFLAGS:N-fno-common} ${.IMPSRC}
 
-opt_compat.h:
-	echo "#define COMPAT_43 1" > opt_compat.h
-
 opt_inet6.h:
 	echo "#define INET6 1" > opt_inet6.h
 
diff -urN /sys/sys/sysproto.h src/sys/sysproto.h
--- sys/sys/sysproto.h	Sat Oct 23 22:01:32 2004
+++ sys/sys/sysproto.h	Tue Oct 26 16:24:28 2004
@@ -1655,10 +1655,6 @@
 	char offset_l_[PADL_(long)]; long offset; char offset_r_[PADR_(long)];
 	char whence_l_[PADL_(int)]; int whence; char whence_r_[PADR_(int)];
 };
-struct ostat_args {
-	char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
-	char ub_l_[PADL_(struct ostat *)]; struct ostat * ub; char ub_r_[PADR_(struct ostat *)];
-};
 struct olstat_args {
 	char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
 	char ub_l_[PADL_(struct ostat *)]; struct ostat * ub; char ub_r_[PADR_(struct ostat *)];
@@ -1694,10 +1690,17 @@
 	char hostname_l_[PADL_(char *)]; char * hostname; char hostname_r_[PADR_(char *)];
 	char len_l_[PADL_(u_int)]; u_int len; char len_r_[PADR_(u_int)];
 };
+#endif	/* COMPAT_43 */
+#if defined(COMPAT_43) || defined(COMPAT_43FORLIN)
 struct sethostname_args {
 	char hostname_l_[PADL_(char *)]; char * hostname; char hostname_r_[PADR_(char *)];
 	char len_l_[PADL_(u_int)]; u_int len; char len_r_[PADR_(u_int)];
 };
+
+struct ostat_args {
+	char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+	char ub_l_[PADL_(struct ostat *)]; struct ostat * ub; char ub_r_[PADR_(struct ostat *)];
+};
 struct osend_args {
 	char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
 	char buf_l_[PADL_(caddr_t)]; caddr_t buf; char buf_r_[PADR_(caddr_t)];
@@ -1710,9 +1713,34 @@
 	char len_l_[PADL_(int)]; int len; char len_r_[PADR_(int)];
 	char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
 };
+struct orecvmsg_args {
+	char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
+	char msg_l_[PADL_(struct omsghdr *)]; struct omsghdr * msg; char msg_r_[PADR_(struct omsghdr *)];
+	char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+};
+struct osendmsg_args {
+	char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
+	char msg_l_[PADL_(caddr_t)]; caddr_t msg; char msg_r_[PADR_(caddr_t)];
+	char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+};
+struct ogetpeername_args {
+	char fdes_l_[PADL_(int)]; int fdes; char fdes_r_[PADR_(int)];
+	char asa_l_[PADL_(caddr_t)]; caddr_t asa; char asa_r_[PADR_(caddr_t)];
+	char alen_l_[PADL_(int *)]; int * alen; char alen_r_[PADR_(int *)];
+};
+struct oftruncate_args {
+	char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+	char length_l_[PADL_(long)]; long length; char length_r_[PADR_(long)];
+};
+#endif /* COMPAT_43 || COMPAT_43FORLIN */
+#ifdef COMPAT_43
 struct osigreturn_args {
 	char sigcntxp_l_[PADL_(struct osigcontext *)]; struct osigcontext * sigcntxp; char sigcntxp_r_[PADR_(struct osigcontext *)];
 };
+struct osigstack_args {
+	char nss_l_[PADL_(struct sigstack *)]; struct sigstack * nss; char nss_r_[PADR_(struct sigstack *)];
+	char oss_l_[PADL_(struct sigstack *)]; struct sigstack * oss; char oss_r_[PADR_(struct sigstack *)];
+};
 struct osigvec_args {
 	char signum_l_[PADL_(int)]; int signum; char signum_r_[PADR_(int)];
 	char nsv_l_[PADL_(struct sigvec *)]; struct sigvec * nsv; char nsv_r_[PADR_(struct sigvec *)];
@@ -1725,35 +1753,14 @@
 	char mask_l_[PADL_(int)]; int mask; char mask_r_[PADR_(int)];
 };
 struct osigsuspend_args {
-	char mask_l_[PADL_(osigset_t)]; osigset_t mask; char mask_r_[PADR_(osigset_t)];
-};
-struct osigstack_args {
-	char nss_l_[PADL_(struct sigstack *)]; struct sigstack * nss; char nss_r_[PADR_(struct sigstack *)];
-	char oss_l_[PADL_(struct sigstack *)]; struct sigstack * oss; char oss_r_[PADR_(struct sigstack *)];
-};
-struct orecvmsg_args {
-	char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
-	char msg_l_[PADL_(struct omsghdr *)]; struct omsghdr * msg; char msg_r_[PADR_(struct omsghdr *)];
-	char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
-};
-struct osendmsg_args {
-	char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
-	char msg_l_[PADL_(caddr_t)]; caddr_t msg; char msg_r_[PADR_(caddr_t)];
-	char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+	char mask_l_[PADL_(osigset_t)]; 
+	osigset_t mask; 
+	char mask_r_[PADR_(osigset_t)];
 };
 struct otruncate_args {
 	char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
 	char length_l_[PADL_(long)]; long length; char length_r_[PADR_(long)];
 };
-struct oftruncate_args {
-	char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
-	char length_l_[PADL_(long)]; long length; char length_r_[PADR_(long)];
-};
-struct ogetpeername_args {
-	char fdes_l_[PADL_(int)]; int fdes; char fdes_r_[PADR_(int)];
-	char asa_l_[PADL_(caddr_t)]; caddr_t asa; char asa_r_[PADR_(caddr_t)];
-	char alen_l_[PADL_(int *)]; int * alen; char alen_r_[PADR_(int *)];
-};
 struct osethostid_args {
 	char hostid_l_[PADL_(long)]; long hostid; char hostid_r_[PADR_(long)];
 };
@@ -1777,7 +1784,6 @@
 };
 int	ocreat(struct thread *, struct ocreat_args *);
 int	olseek(struct thread *, struct olseek_args *);
-int	ostat(struct thread *, struct ostat_args *);
 int	olstat(struct thread *, struct olstat_args *);
 int	osigaction(struct thread *, struct osigaction_args *);
 int	osigprocmask(struct thread *, struct osigprocmask_args *);
@@ -1788,31 +1794,35 @@
 int	ommap(struct thread *, struct ommap_args *);
 int	owait(struct thread *, struct owait_args *);
 int	ogethostname(struct thread *, struct gethostname_args *);
-int	osethostname(struct thread *, struct sethostname_args *);
+#endif	/* COMPAT_43 */
+#if defined(COMPAT_43) || defined(COMPAT_43FORLIN)
 int	oaccept(struct thread *, struct accept_args *);
-int	osend(struct thread *, struct osend_args *);
+int	oftruncate(struct thread *, struct oftruncate_args *);
+int	ogetpeername(struct thread *, struct ogetpeername_args *);
+int	ogetsockname(struct thread *, struct getsockname_args *);
 int	orecv(struct thread *, struct orecv_args *);
+int	orecvfrom(struct thread *, struct recvfrom_args *);
+int	orecvmsg(struct thread *, struct orecvmsg_args *);
+int	osend(struct thread *, struct osend_args *);
+int	osendmsg(struct thread *, struct osendmsg_args *);
+int	osethostname(struct thread *, struct sethostname_args *);
+int	ostat(struct thread *, struct ostat_args *);
+#endif /* COMPAT_43 || COMPAT_43FORLIN */
+#ifdef COMPAT_43
 int	osigreturn(struct thread *, struct osigreturn_args *);
 int	osigvec(struct thread *, struct osigvec_args *);
 int	osigblock(struct thread *, struct osigblock_args *);
 int	osigsetmask(struct thread *, struct osigsetmask_args *);
 int	osigsuspend(struct thread *, struct osigsuspend_args *);
 int	osigstack(struct thread *, struct osigstack_args *);
-int	orecvmsg(struct thread *, struct orecvmsg_args *);
-int	osendmsg(struct thread *, struct osendmsg_args *);
-int	orecvfrom(struct thread *, struct recvfrom_args *);
 int	otruncate(struct thread *, struct otruncate_args *);
-int	oftruncate(struct thread *, struct oftruncate_args *);
-int	ogetpeername(struct thread *, struct ogetpeername_args *);
 int	ogethostid(struct thread *, struct ogethostid_args *);
 int	osethostid(struct thread *, struct osethostid_args *);
 int	ogetrlimit(struct thread *, struct ogetrlimit_args *);
 int	osetrlimit(struct thread *, struct osetrlimit_args *);
 int	okillpg(struct thread *, struct okillpg_args *);
 int	oquota(struct thread *, struct oquota_args *);
-int	ogetsockname(struct thread *, struct getsockname_args *);
 int	ogetdirentries(struct thread *, struct ogetdirentries_args *);
-
 #endif /* COMPAT_43 */
 
 
>Release-Note:
>Audit-Trail:

From: Miroslav Chlastak <chlastak@centrum.cz>
To: freebsd-gnats-submit@FreeBSD.org, xdivac02@stud.fit.vutbr.cz
Cc:  
Subject: Re: kern/73165: getting rid of COMPAT_43 dependancy in linux emulation
 layer
Date: Wed, 27 Oct 2004 09:05:13 +0200

 This version of patch is much more correct, sorry for not testing enough...
 
 
 diff -urN /sys/compat/linux/linux_socket.c src/compat/linux/linux_socket.c
 --- sys/compat/linux/linux_socket.c	Tue Aug 24 22:21:21 2004
 +++ sys/compat/linux/linux_socket.c	Wed Oct 27 08:45:35 2004
 @@ -33,8 +33,8 @@
  #include "opt_compat.h"
  #include "opt_inet6.h"
  
 -#ifndef COMPAT_43
 -#error "Unable to compile Linux-emulator due to missing COMPAT_43 option!"
 +#ifndef COMPAT_43FORLIN
 +#error "Unable to compile Linux-emulator due to missing COMPAT_43FORLIN option!"
  #endif
  
  #include <sys/param.h>
 diff -urN /sys/conf/options src/conf/options
 --- sys/conf/options	Thu Sep 23 10:34:50 2004
 +++ sys/conf/options	Wed Oct 27 08:45:35 2004
 @@ -62,6 +62,7 @@
  CODA_COMPAT_5	opt_coda.h
  COMPAT_43	opt_compat.h
  COMPAT_FREEBSD4	opt_compat.h
 +COMPAT_43FORLIN	opt_compat.h
  COMPILING_LINT	opt_global.h
  CONSPEED	opt_comconsole.h
  CY_PCI_FASTINTR
 diff -urN /sys/i386/linux/linux_sysvec.c src/i386/linux/linux_sysvec.c
 --- sys/i386/linux/linux_sysvec.c	Thu Jul 15 10:26:05 2004
 +++ sys/i386/linux/linux_sysvec.c	Wed Oct 27 08:45:35 2004
 @@ -32,8 +32,8 @@
  /* XXX we use functions that might not exist. */
  #include "opt_compat.h"
  
 -#ifndef COMPAT_43
 -#error "Unable to compile Linux-emulator due to missing COMPAT_43 option!"
 +#ifndef COMPAT_43FORLIN
 +#error "Unable to compile Linux-emulator due to missing COMPAT_43FORLIN option!"
  #endif
  
  #include <sys/param.h>
 diff -urN /sys/kern/kern_xxx.c src/kern/kern_xxx.c
 --- sys/kern/kern_xxx.c	Fri Oct 22 14:10:50 2004
 +++ sys/kern/kern_xxx.c	Wed Oct 27 08:45:35 2004
 @@ -74,7 +74,9 @@
  	mtx_unlock(&Giant);
  	return(error);
  }
 +#endif /* COMPAT_43 */
  
 +#if defined(COMPAT_43) || defined(COMPAT_43FORLIN)
  #ifndef _SYS_SYSPROTO_H_
  struct sethostname_args {
  	char	*hostname;
 @@ -101,7 +103,9 @@
  	mtx_unlock(&Giant);
  	return (error);
  }
 +#endif /* COMPAT_43 || COMPAT_43FORLIN */
  
 +#ifdef COMPAT_43
  #ifndef _SYS_SYSPROTO_H_
  struct ogethostid_args {
  	int	dummy;
 @@ -120,9 +124,7 @@
  	*(long *)(td->td_retval) = hostid;
  	return (0);
  }
 -#endif /* COMPAT_43 */
  
 -#ifdef COMPAT_43
  #ifndef _SYS_SYSPROTO_H_
  struct osethostid_args {
  	long	hostid;
 diff -urN /sys/kern/uipc_syscalls.c src/kern/uipc_syscalls.c
 --- sys/kern/uipc_syscalls.c	Mon Oct 25 01:45:01 2004
 +++ sys/kern/uipc_syscalls.c	Wed Oct 27 08:46:00 2004
 @@ -137,7 +137,7 @@
  /*
   * System call interface to the socket abstraction.
   */
 -#if defined(COMPAT_43)
 +#if defined(COMPAT_43) || defined(COMPAT_43FORLIN)
  #define COMPAT_OLDSOCK
  #endif
  
 diff -urN /sys/kern/vfs_syscalls.c src/kern/vfs_syscalls.c
 --- sys/kern/vfs_syscalls.c	Mon Jul 26 09:24:03 2004
 +++ sys/kern/vfs_syscalls.c	Wed Oct 27 08:45:35 2004
 @@ -1898,7 +1898,7 @@
  	return (error);
  }
  
 -#if defined(COMPAT_43)
 +#if defined(COMPAT_43) || defined(COMPAT_43FORLIN)
  /*
   * Get file status; this version follows links.
   */
 @@ -1934,7 +1934,38 @@
  	error = copyout(&osb, uap->ub, sizeof (osb));
  	return (error);
  }
 +/*
 + * Convert from an old to a new stat structure.
 + */
 +void
 +cvtstat(st, ost)
 +	struct stat *st;
 +	struct ostat *ost;
 +{
 +
 +	ost->st_dev = st->st_dev;
 +	ost->st_ino = st->st_ino;
 +	ost->st_mode = st->st_mode;
 +	ost->st_nlink = st->st_nlink;
 +	ost->st_uid = st->st_uid;
 +	ost->st_gid = st->st_gid;
 +	ost->st_rdev = st->st_rdev;
 +	if (st->st_size < (quad_t)1 << 32)
 +		ost->st_size = st->st_size;
 +	else
 +		ost->st_size = -2;
 +	ost->st_atime = st->st_atime;
 +	ost->st_mtime = st->st_mtime;
 +	ost->st_ctime = st->st_ctime;
 +	ost->st_blksize = st->st_blksize;
 +	ost->st_blocks = st->st_blocks;
 +	ost->st_flags = st->st_flags;
 +	ost->st_gen = st->st_gen;
 +}
 +
 +#endif /* COMPAT_43 || COMPAT_43FORLIN */
  
 +#ifdef COMPAT_43
  /*
   * Get file status; this version does not follow links.
   */
 @@ -1973,34 +2004,6 @@
  	return (error);
  }
  
 -/*
 - * Convert from an old to a new stat structure.
 - */
 -void
 -cvtstat(st, ost)
 -	struct stat *st;
 -	struct ostat *ost;
 -{
 -
 -	ost->st_dev = st->st_dev;
 -	ost->st_ino = st->st_ino;
 -	ost->st_mode = st->st_mode;
 -	ost->st_nlink = st->st_nlink;
 -	ost->st_uid = st->st_uid;
 -	ost->st_gid = st->st_gid;
 -	ost->st_rdev = st->st_rdev;
 -	if (st->st_size < (quad_t)1 << 32)
 -		ost->st_size = st->st_size;
 -	else
 -		ost->st_size = -2;
 -	ost->st_atime = st->st_atime;
 -	ost->st_mtime = st->st_mtime;
 -	ost->st_ctime = st->st_ctime;
 -	ost->st_blksize = st->st_blksize;
 -	ost->st_blocks = st->st_blocks;
 -	ost->st_flags = st->st_flags;
 -	ost->st_gen = st->st_gen;
 -}
  #endif /* COMPAT_43 */
  
  /*
 @@ -3003,7 +3006,9 @@
  	nuap.length = uap->length;
  	return (truncate(td, &nuap));
  }
 +#endif /* COMPAT_43 */
  
 +#if defined(COMPAT_43) || defined(COMPAT_43FORLIN)
  /*
   * Truncate a file given a file descriptor.
   */
 @@ -3031,7 +3036,7 @@
  	nuap.length = uap->length;
  	return (ftruncate(td, &nuap));
  }
 -#endif /* COMPAT_43 */
 +#endif /* COMPAT_43 || COMPAT_43FORLIN */
  
  /*
   * Sync an open file.
 diff -urN /sys/modules/linux/Makefile src/modules/linux/Makefile
 --- sys/modules/linux/Makefile	Wed Nov 19 06:08:26 2003
 +++ sys/modules/linux/Makefile	Wed Oct 27 08:45:35 2004
 @@ -39,9 +39,6 @@
  linux_genassym.o: linux_genassym.c linux.h @ machine
  	${CC} -c ${CFLAGS:N-fno-common} ${.IMPSRC}
  
 -opt_compat.h:
 -	echo "#define COMPAT_43 1" > opt_compat.h
 -
  opt_inet6.h:
  	echo "#define INET6 1" > opt_inet6.h
  
 diff -urN /sys/sys/sysproto.h src/sys/sysproto.h
 --- sys/sys/sysproto.h	Sat Oct 23 22:01:32 2004
 +++ sys/sys/sysproto.h	Wed Oct 27 08:45:35 2004
 @@ -1655,10 +1655,6 @@
  	char offset_l_[PADL_(long)]; long offset; char offset_r_[PADR_(long)];
  	char whence_l_[PADL_(int)]; int whence; char whence_r_[PADR_(int)];
  };
 -struct ostat_args {
 -	char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
 -	char ub_l_[PADL_(struct ostat *)]; struct ostat * ub; char ub_r_[PADR_(struct ostat *)];
 -};
  struct olstat_args {
  	char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
  	char ub_l_[PADL_(struct ostat *)]; struct ostat * ub; char ub_r_[PADR_(struct ostat *)];
 @@ -1694,10 +1690,17 @@
  	char hostname_l_[PADL_(char *)]; char * hostname; char hostname_r_[PADR_(char *)];
  	char len_l_[PADL_(u_int)]; u_int len; char len_r_[PADR_(u_int)];
  };
 +#endif	/* COMPAT_43 */
 +#if defined(COMPAT_43) || defined(COMPAT_43FORLIN)
  struct sethostname_args {
  	char hostname_l_[PADL_(char *)]; char * hostname; char hostname_r_[PADR_(char *)];
  	char len_l_[PADL_(u_int)]; u_int len; char len_r_[PADR_(u_int)];
  };
 +
 +struct ostat_args {
 +	char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
 +	char ub_l_[PADL_(struct ostat *)]; struct ostat * ub; char ub_r_[PADR_(struct ostat *)];
 +};
  struct osend_args {
  	char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
  	char buf_l_[PADL_(caddr_t)]; caddr_t buf; char buf_r_[PADR_(caddr_t)];
 @@ -1710,9 +1713,34 @@
  	char len_l_[PADL_(int)]; int len; char len_r_[PADR_(int)];
  	char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
  };
 +struct orecvmsg_args {
 +	char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
 +	char msg_l_[PADL_(struct omsghdr *)]; struct omsghdr * msg; char msg_r_[PADR_(struct omsghdr *)];
 +	char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
 +};
 +struct osendmsg_args {
 +	char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
 +	char msg_l_[PADL_(caddr_t)]; caddr_t msg; char msg_r_[PADR_(caddr_t)];
 +	char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
 +};
 +struct ogetpeername_args {
 +	char fdes_l_[PADL_(int)]; int fdes; char fdes_r_[PADR_(int)];
 +	char asa_l_[PADL_(caddr_t)]; caddr_t asa; char asa_r_[PADR_(caddr_t)];
 +	char alen_l_[PADL_(int *)]; int * alen; char alen_r_[PADR_(int *)];
 +};
 +struct oftruncate_args {
 +	char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
 +	char length_l_[PADL_(long)]; long length; char length_r_[PADR_(long)];
 +};
 +#endif /* COMPAT_43 || COMPAT_43FORLIN */
 +#ifdef COMPAT_43
  struct osigreturn_args {
  	char sigcntxp_l_[PADL_(struct osigcontext *)]; struct osigcontext * sigcntxp; char sigcntxp_r_[PADR_(struct osigcontext *)];
  };
 +struct osigstack_args {
 +	char nss_l_[PADL_(struct sigstack *)]; struct sigstack * nss; char nss_r_[PADR_(struct sigstack *)];
 +	char oss_l_[PADL_(struct sigstack *)]; struct sigstack * oss; char oss_r_[PADR_(struct sigstack *)];
 +};
  struct osigvec_args {
  	char signum_l_[PADL_(int)]; int signum; char signum_r_[PADR_(int)];
  	char nsv_l_[PADL_(struct sigvec *)]; struct sigvec * nsv; char nsv_r_[PADR_(struct sigvec *)];
 @@ -1725,35 +1753,14 @@
  	char mask_l_[PADL_(int)]; int mask; char mask_r_[PADR_(int)];
  };
  struct osigsuspend_args {
 -	char mask_l_[PADL_(osigset_t)]; osigset_t mask; char mask_r_[PADR_(osigset_t)];
 -};
 -struct osigstack_args {
 -	char nss_l_[PADL_(struct sigstack *)]; struct sigstack * nss; char nss_r_[PADR_(struct sigstack *)];
 -	char oss_l_[PADL_(struct sigstack *)]; struct sigstack * oss; char oss_r_[PADR_(struct sigstack *)];
 -};
 -struct orecvmsg_args {
 -	char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
 -	char msg_l_[PADL_(struct omsghdr *)]; struct omsghdr * msg; char msg_r_[PADR_(struct omsghdr *)];
 -	char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
 -};
 -struct osendmsg_args {
 -	char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
 -	char msg_l_[PADL_(caddr_t)]; caddr_t msg; char msg_r_[PADR_(caddr_t)];
 -	char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
 +	char mask_l_[PADL_(osigset_t)]; 
 +	osigset_t mask; 
 +	char mask_r_[PADR_(osigset_t)];
  };
  struct otruncate_args {
  	char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
  	char length_l_[PADL_(long)]; long length; char length_r_[PADR_(long)];
  };
 -struct oftruncate_args {
 -	char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
 -	char length_l_[PADL_(long)]; long length; char length_r_[PADR_(long)];
 -};
 -struct ogetpeername_args {
 -	char fdes_l_[PADL_(int)]; int fdes; char fdes_r_[PADR_(int)];
 -	char asa_l_[PADL_(caddr_t)]; caddr_t asa; char asa_r_[PADR_(caddr_t)];
 -	char alen_l_[PADL_(int *)]; int * alen; char alen_r_[PADR_(int *)];
 -};
  struct osethostid_args {
  	char hostid_l_[PADL_(long)]; long hostid; char hostid_r_[PADR_(long)];
  };
 @@ -1777,7 +1784,6 @@
  };
  int	ocreat(struct thread *, struct ocreat_args *);
  int	olseek(struct thread *, struct olseek_args *);
 -int	ostat(struct thread *, struct ostat_args *);
  int	olstat(struct thread *, struct olstat_args *);
  int	osigaction(struct thread *, struct osigaction_args *);
  int	osigprocmask(struct thread *, struct osigprocmask_args *);
 @@ -1788,31 +1794,35 @@
  int	ommap(struct thread *, struct ommap_args *);
  int	owait(struct thread *, struct owait_args *);
  int	ogethostname(struct thread *, struct gethostname_args *);
 -int	osethostname(struct thread *, struct sethostname_args *);
 +#endif	/* COMPAT_43 */
 +#if defined(COMPAT_43) || defined(COMPAT_43FORLIN)
  int	oaccept(struct thread *, struct accept_args *);
 -int	osend(struct thread *, struct osend_args *);
 +int	oftruncate(struct thread *, struct oftruncate_args *);
 +int	ogetpeername(struct thread *, struct ogetpeername_args *);
 +int	ogetsockname(struct thread *, struct getsockname_args *);
  int	orecv(struct thread *, struct orecv_args *);
 +int	orecvfrom(struct thread *, struct recvfrom_args *);
 +int	orecvmsg(struct thread *, struct orecvmsg_args *);
 +int	osend(struct thread *, struct osend_args *);
 +int	osendmsg(struct thread *, struct osendmsg_args *);
 +int	osethostname(struct thread *, struct sethostname_args *);
 +int	ostat(struct thread *, struct ostat_args *);
 +#endif /* COMPAT_43 || COMPAT_43FORLIN */
 +#ifdef COMPAT_43
  int	osigreturn(struct thread *, struct osigreturn_args *);
  int	osigvec(struct thread *, struct osigvec_args *);
  int	osigblock(struct thread *, struct osigblock_args *);
  int	osigsetmask(struct thread *, struct osigsetmask_args *);
  int	osigsuspend(struct thread *, struct osigsuspend_args *);
  int	osigstack(struct thread *, struct osigstack_args *);
 -int	orecvmsg(struct thread *, struct orecvmsg_args *);
 -int	osendmsg(struct thread *, struct osendmsg_args *);
 -int	orecvfrom(struct thread *, struct recvfrom_args *);
  int	otruncate(struct thread *, struct otruncate_args *);
 -int	oftruncate(struct thread *, struct oftruncate_args *);
 -int	ogetpeername(struct thread *, struct ogetpeername_args *);
  int	ogethostid(struct thread *, struct ogethostid_args *);
  int	osethostid(struct thread *, struct osethostid_args *);
  int	ogetrlimit(struct thread *, struct ogetrlimit_args *);
  int	osetrlimit(struct thread *, struct osetrlimit_args *);
  int	okillpg(struct thread *, struct okillpg_args *);
  int	oquota(struct thread *, struct oquota_args *);
 -int	ogetsockname(struct thread *, struct getsockname_args *);
  int	ogetdirentries(struct thread *, struct ogetdirentries_args *);
 -
  #endif /* COMPAT_43 */
 
 
 
 

From: Divacky Roman <xdivac02@stud.fit.vutbr.cz>
To: freebsd-gnats-submit@FreeBSD.org
Cc:  
Subject: Re: kern/73165: getting rid of COMPAT_43 dependancy
Date: Wed, 27 Oct 2004 09:18:33 +0200

 sorry for messing... I include the patch once more (the previous one was
 distorted by mozilla mailer), you can also get the mail on:
 hysteria.sk/~neologism/comp.patch
 
 diff -urN /sys/compat/linux/linux_socket.c src/compat/linux/linux_socket.c
 --- sys/compat/linux/linux_socket.c	Tue Aug 24 22:21:21 2004
 +++ sys/compat/linux/linux_socket.c	Wed Oct 27 08:45:35 2004
 @@ -33,8 +33,8 @@
  #include "opt_compat.h"
  #include "opt_inet6.h"
  
 -#ifndef COMPAT_43
 -#error "Unable to compile Linux-emulator due to missing COMPAT_43 option!"
 +#ifndef COMPAT_43FORLIN
 +#error "Unable to compile Linux-emulator due to missing COMPAT_43FORLIN option!"
  #endif
  
  #include <sys/param.h>
 diff -urN /sys/conf/options src/conf/options
 --- sys/conf/options	Thu Sep 23 10:34:50 2004
 +++ sys/conf/options	Wed Oct 27 08:45:35 2004
 @@ -62,6 +62,7 @@
  CODA_COMPAT_5	opt_coda.h
  COMPAT_43	opt_compat.h
  COMPAT_FREEBSD4	opt_compat.h
 +COMPAT_43FORLIN	opt_compat.h
  COMPILING_LINT	opt_global.h
  CONSPEED	opt_comconsole.h
  CY_PCI_FASTINTR
 diff -urN /sys/i386/linux/linux_sysvec.c src/i386/linux/linux_sysvec.c
 --- sys/i386/linux/linux_sysvec.c	Thu Jul 15 10:26:05 2004
 +++ sys/i386/linux/linux_sysvec.c	Wed Oct 27 08:45:35 2004
 @@ -32,8 +32,8 @@
  /* XXX we use functions that might not exist. */
  #include "opt_compat.h"
  
 -#ifndef COMPAT_43
 -#error "Unable to compile Linux-emulator due to missing COMPAT_43 option!"
 +#ifndef COMPAT_43FORLIN
 +#error "Unable to compile Linux-emulator due to missing COMPAT_43FORLIN option!"
  #endif
  
  #include <sys/param.h>
 diff -urN /sys/kern/kern_xxx.c src/kern/kern_xxx.c
 --- sys/kern/kern_xxx.c	Fri Oct 22 14:10:50 2004
 +++ sys/kern/kern_xxx.c	Wed Oct 27 08:45:35 2004
 @@ -74,7 +74,9 @@
  	mtx_unlock(&Giant);
  	return(error);
  }
 +#endif /* COMPAT_43 */
  
 +#if defined(COMPAT_43) || defined(COMPAT_43FORLIN)
  #ifndef _SYS_SYSPROTO_H_
  struct sethostname_args {
  	char	*hostname;
 @@ -101,7 +103,9 @@
  	mtx_unlock(&Giant);
  	return (error);
  }
 +#endif /* COMPAT_43 || COMPAT_43FORLIN */
  
 +#ifdef COMPAT_43
  #ifndef _SYS_SYSPROTO_H_
  struct ogethostid_args {
  	int	dummy;
 @@ -120,9 +124,7 @@
  	*(long *)(td->td_retval) = hostid;
  	return (0);
  }
 -#endif /* COMPAT_43 */
  
 -#ifdef COMPAT_43
  #ifndef _SYS_SYSPROTO_H_
  struct osethostid_args {
  	long	hostid;
 diff -urN /sys/kern/uipc_syscalls.c src/kern/uipc_syscalls.c
 --- sys/kern/uipc_syscalls.c	Mon Oct 25 01:45:01 2004
 +++ sys/kern/uipc_syscalls.c	Wed Oct 27 08:46:00 2004
 @@ -137,7 +137,7 @@
  /*
   * System call interface to the socket abstraction.
   */
 -#if defined(COMPAT_43)
 +#if defined(COMPAT_43) || defined(COMPAT_43FORLIN)
  #define COMPAT_OLDSOCK
  #endif
  
 diff -urN /sys/kern/vfs_syscalls.c src/kern/vfs_syscalls.c
 --- sys/kern/vfs_syscalls.c	Mon Jul 26 09:24:03 2004
 +++ sys/kern/vfs_syscalls.c	Wed Oct 27 08:45:35 2004
 @@ -1898,7 +1898,7 @@
  	return (error);
  }
  
 -#if defined(COMPAT_43)
 +#if defined(COMPAT_43) || defined(COMPAT_43FORLIN)
  /*
   * Get file status; this version follows links.
   */
 @@ -1934,7 +1934,38 @@
  	error = copyout(&osb, uap->ub, sizeof (osb));
  	return (error);
  }
 +/*
 + * Convert from an old to a new stat structure.
 + */
 +void
 +cvtstat(st, ost)
 +	struct stat *st;
 +	struct ostat *ost;
 +{
 +
 +	ost->st_dev = st->st_dev;
 +	ost->st_ino = st->st_ino;
 +	ost->st_mode = st->st_mode;
 +	ost->st_nlink = st->st_nlink;
 +	ost->st_uid = st->st_uid;
 +	ost->st_gid = st->st_gid;
 +	ost->st_rdev = st->st_rdev;
 +	if (st->st_size < (quad_t)1 << 32)
 +		ost->st_size = st->st_size;
 +	else
 +		ost->st_size = -2;
 +	ost->st_atime = st->st_atime;
 +	ost->st_mtime = st->st_mtime;
 +	ost->st_ctime = st->st_ctime;
 +	ost->st_blksize = st->st_blksize;
 +	ost->st_blocks = st->st_blocks;
 +	ost->st_flags = st->st_flags;
 +	ost->st_gen = st->st_gen;
 +}
 +
 +#endif /* COMPAT_43 || COMPAT_43FORLIN */
  
 +#ifdef COMPAT_43
  /*
   * Get file status; this version does not follow links.
   */
 @@ -1973,34 +2004,6 @@
  	return (error);
  }
  
 -/*
 - * Convert from an old to a new stat structure.
 - */
 -void
 -cvtstat(st, ost)
 -	struct stat *st;
 -	struct ostat *ost;
 -{
 -
 -	ost->st_dev = st->st_dev;
 -	ost->st_ino = st->st_ino;
 -	ost->st_mode = st->st_mode;
 -	ost->st_nlink = st->st_nlink;
 -	ost->st_uid = st->st_uid;
 -	ost->st_gid = st->st_gid;
 -	ost->st_rdev = st->st_rdev;
 -	if (st->st_size < (quad_t)1 << 32)
 -		ost->st_size = st->st_size;
 -	else
 -		ost->st_size = -2;
 -	ost->st_atime = st->st_atime;
 -	ost->st_mtime = st->st_mtime;
 -	ost->st_ctime = st->st_ctime;
 -	ost->st_blksize = st->st_blksize;
 -	ost->st_blocks = st->st_blocks;
 -	ost->st_flags = st->st_flags;
 -	ost->st_gen = st->st_gen;
 -}
  #endif /* COMPAT_43 */
  
  /*
 @@ -3003,7 +3006,9 @@
  	nuap.length = uap->length;
  	return (truncate(td, &nuap));
  }
 +#endif /* COMPAT_43 */
  
 +#if defined(COMPAT_43) || defined(COMPAT_43FORLIN)
  /*
   * Truncate a file given a file descriptor.
   */
 @@ -3031,7 +3036,7 @@
  	nuap.length = uap->length;
  	return (ftruncate(td, &nuap));
  }
 -#endif /* COMPAT_43 */
 +#endif /* COMPAT_43 || COMPAT_43FORLIN */
  
  /*
   * Sync an open file.
 diff -urN /sys/modules/linux/Makefile src/modules/linux/Makefile
 --- sys/modules/linux/Makefile	Wed Nov 19 06:08:26 2003
 +++ sys/modules/linux/Makefile	Wed Oct 27 08:45:35 2004
 @@ -39,9 +39,6 @@
  linux_genassym.o: linux_genassym.c linux.h @ machine
  	${CC} -c ${CFLAGS:N-fno-common} ${.IMPSRC}
  
 -opt_compat.h:
 -	echo "#define COMPAT_43 1" > opt_compat.h
 -
  opt_inet6.h:
  	echo "#define INET6 1" > opt_inet6.h
  
 diff -urN /sys/sys/sysproto.h src/sys/sysproto.h
 --- sys/sys/sysproto.h	Sat Oct 23 22:01:32 2004
 +++ sys/sys/sysproto.h	Wed Oct 27 08:45:35 2004
 @@ -1655,10 +1655,6 @@
  	char offset_l_[PADL_(long)]; long offset; char offset_r_[PADR_(long)];
  	char whence_l_[PADL_(int)]; int whence; char whence_r_[PADR_(int)];
  };
 -struct ostat_args {
 -	char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
 -	char ub_l_[PADL_(struct ostat *)]; struct ostat * ub; char ub_r_[PADR_(struct ostat *)];
 -};
  struct olstat_args {
  	char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
  	char ub_l_[PADL_(struct ostat *)]; struct ostat * ub; char ub_r_[PADR_(struct ostat *)];
 @@ -1694,10 +1690,17 @@
  	char hostname_l_[PADL_(char *)]; char * hostname; char hostname_r_[PADR_(char *)];
  	char len_l_[PADL_(u_int)]; u_int len; char len_r_[PADR_(u_int)];
  };
 +#endif	/* COMPAT_43 */
 +#if defined(COMPAT_43) || defined(COMPAT_43FORLIN)
  struct sethostname_args {
  	char hostname_l_[PADL_(char *)]; char * hostname; char hostname_r_[PADR_(char *)];
  	char len_l_[PADL_(u_int)]; u_int len; char len_r_[PADR_(u_int)];
  };
 +
 +struct ostat_args {
 +	char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
 +	char ub_l_[PADL_(struct ostat *)]; struct ostat * ub; char ub_r_[PADR_(struct ostat *)];
 +};
  struct osend_args {
  	char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
  	char buf_l_[PADL_(caddr_t)]; caddr_t buf; char buf_r_[PADR_(caddr_t)];
 @@ -1710,9 +1713,34 @@
  	char len_l_[PADL_(int)]; int len; char len_r_[PADR_(int)];
  	char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
  };
 +struct orecvmsg_args {
 +	char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
 +	char msg_l_[PADL_(struct omsghdr *)]; struct omsghdr * msg; char msg_r_[PADR_(struct omsghdr *)];
 +	char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
 +};
 +struct osendmsg_args {
 +	char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
 +	char msg_l_[PADL_(caddr_t)]; caddr_t msg; char msg_r_[PADR_(caddr_t)];
 +	char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
 +};
 +struct ogetpeername_args {
 +	char fdes_l_[PADL_(int)]; int fdes; char fdes_r_[PADR_(int)];
 +	char asa_l_[PADL_(caddr_t)]; caddr_t asa; char asa_r_[PADR_(caddr_t)];
 +	char alen_l_[PADL_(int *)]; int * alen; char alen_r_[PADR_(int *)];
 +};
 +struct oftruncate_args {
 +	char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
 +	char length_l_[PADL_(long)]; long length; char length_r_[PADR_(long)];
 +};
 +#endif /* COMPAT_43 || COMPAT_43FORLIN */
 +#ifdef COMPAT_43
  struct osigreturn_args {
  	char sigcntxp_l_[PADL_(struct osigcontext *)]; struct osigcontext * sigcntxp; char sigcntxp_r_[PADR_(struct osigcontext *)];
  };
 +struct osigstack_args {
 +	char nss_l_[PADL_(struct sigstack *)]; struct sigstack * nss; char nss_r_[PADR_(struct sigstack *)];
 +	char oss_l_[PADL_(struct sigstack *)]; struct sigstack * oss; char oss_r_[PADR_(struct sigstack *)];
 +};
  struct osigvec_args {
  	char signum_l_[PADL_(int)]; int signum; char signum_r_[PADR_(int)];
  	char nsv_l_[PADL_(struct sigvec *)]; struct sigvec * nsv; char nsv_r_[PADR_(struct sigvec *)];
 @@ -1725,35 +1753,14 @@
  	char mask_l_[PADL_(int)]; int mask; char mask_r_[PADR_(int)];
  };
  struct osigsuspend_args {
 -	char mask_l_[PADL_(osigset_t)]; osigset_t mask; char mask_r_[PADR_(osigset_t)];
 -};
 -struct osigstack_args {
 -	char nss_l_[PADL_(struct sigstack *)]; struct sigstack * nss; char nss_r_[PADR_(struct sigstack *)];
 -	char oss_l_[PADL_(struct sigstack *)]; struct sigstack * oss; char oss_r_[PADR_(struct sigstack *)];
 -};
 -struct orecvmsg_args {
 -	char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
 -	char msg_l_[PADL_(struct omsghdr *)]; struct omsghdr * msg; char msg_r_[PADR_(struct omsghdr *)];
 -	char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
 -};
 -struct osendmsg_args {
 -	char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
 -	char msg_l_[PADL_(caddr_t)]; caddr_t msg; char msg_r_[PADR_(caddr_t)];
 -	char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
 +	char mask_l_[PADL_(osigset_t)]; 
 +	osigset_t mask; 
 +	char mask_r_[PADR_(osigset_t)];
  };
  struct otruncate_args {
  	char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
  	char length_l_[PADL_(long)]; long length; char length_r_[PADR_(long)];
  };
 -struct oftruncate_args {
 -	char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
 -	char length_l_[PADL_(long)]; long length; char length_r_[PADR_(long)];
 -};
 -struct ogetpeername_args {
 -	char fdes_l_[PADL_(int)]; int fdes; char fdes_r_[PADR_(int)];
 -	char asa_l_[PADL_(caddr_t)]; caddr_t asa; char asa_r_[PADR_(caddr_t)];
 -	char alen_l_[PADL_(int *)]; int * alen; char alen_r_[PADR_(int *)];
 -};
  struct osethostid_args {
  	char hostid_l_[PADL_(long)]; long hostid; char hostid_r_[PADR_(long)];
  };
 @@ -1777,7 +1784,6 @@
  };
  int	ocreat(struct thread *, struct ocreat_args *);
  int	olseek(struct thread *, struct olseek_args *);
 -int	ostat(struct thread *, struct ostat_args *);
  int	olstat(struct thread *, struct olstat_args *);
  int	osigaction(struct thread *, struct osigaction_args *);
  int	osigprocmask(struct thread *, struct osigprocmask_args *);
 @@ -1788,31 +1794,35 @@
  int	ommap(struct thread *, struct ommap_args *);
  int	owait(struct thread *, struct owait_args *);
  int	ogethostname(struct thread *, struct gethostname_args *);
 -int	osethostname(struct thread *, struct sethostname_args *);
 +#endif	/* COMPAT_43 */
 +#if defined(COMPAT_43) || defined(COMPAT_43FORLIN)
  int	oaccept(struct thread *, struct accept_args *);
 -int	osend(struct thread *, struct osend_args *);
 +int	oftruncate(struct thread *, struct oftruncate_args *);
 +int	ogetpeername(struct thread *, struct ogetpeername_args *);
 +int	ogetsockname(struct thread *, struct getsockname_args *);
  int	orecv(struct thread *, struct orecv_args *);
 +int	orecvfrom(struct thread *, struct recvfrom_args *);
 +int	orecvmsg(struct thread *, struct orecvmsg_args *);
 +int	osend(struct thread *, struct osend_args *);
 +int	osendmsg(struct thread *, struct osendmsg_args *);
 +int	osethostname(struct thread *, struct sethostname_args *);
 +int	ostat(struct thread *, struct ostat_args *);
 +#endif /* COMPAT_43 || COMPAT_43FORLIN */
 +#ifdef COMPAT_43
  int	osigreturn(struct thread *, struct osigreturn_args *);
  int	osigvec(struct thread *, struct osigvec_args *);
  int	osigblock(struct thread *, struct osigblock_args *);
  int	osigsetmask(struct thread *, struct osigsetmask_args *);
  int	osigsuspend(struct thread *, struct osigsuspend_args *);
  int	osigstack(struct thread *, struct osigstack_args *);
 -int	orecvmsg(struct thread *, struct orecvmsg_args *);
 -int	osendmsg(struct thread *, struct osendmsg_args *);
 -int	orecvfrom(struct thread *, struct recvfrom_args *);
  int	otruncate(struct thread *, struct otruncate_args *);
 -int	oftruncate(struct thread *, struct oftruncate_args *);
 -int	ogetpeername(struct thread *, struct ogetpeername_args *);
  int	ogethostid(struct thread *, struct ogethostid_args *);
  int	osethostid(struct thread *, struct osethostid_args *);
  int	ogetrlimit(struct thread *, struct ogetrlimit_args *);
  int	osetrlimit(struct thread *, struct osetrlimit_args *);
  int	okillpg(struct thread *, struct okillpg_args *);
  int	oquota(struct thread *, struct oquota_args *);
 -int	ogetsockname(struct thread *, struct getsockname_args *);
  int	ogetdirentries(struct thread *, struct ogetdirentries_args *);
 -
  #endif /* COMPAT_43 */
  
  
Responsible-Changed-From-To: freebsd-bugs->emulation 
Responsible-Changed-By: linimon 
Responsible-Changed-When: Sat Oct 30 06:33:03 GMT 2004 
Responsible-Changed-Why:  
Over to mailing list for evaluation. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=73165 
State-Changed-From-To: open->closed 
State-Changed-By: linimon 
State-Changed-When: Sun Aug 21 08:21:46 GMT 2005 
State-Changed-Why:  
Superceded by kern/85175. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=73165 
>Unformatted:
