PERFORCE change 149503 for review
Oleksandr Tymoshenko
gonzo at FreeBSD.org
Wed Sep 10 00:46:56 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=149503
Change 149503 by gonzo at gonzo_jeeves on 2008/09/10 00:46:07
One more IFC in order to generate new mips2 patchset
Affected files ...
.. //depot/projects/mips2/src/bin/cp/utils.c#5 integrate
.. //depot/projects/mips2/src/etc/rc.initdiskless#4 integrate
.. //depot/projects/mips2/src/include/rpc/svc_auth.h#2 integrate
.. //depot/projects/mips2/src/lib/libc/gen/arc4random.c#5 integrate
.. //depot/projects/mips2/src/lib/libc/rpc/svc.c#3 integrate
.. //depot/projects/mips2/src/lib/libc/rpc/svc_auth.c#3 integrate
.. //depot/projects/mips2/src/lib/libthr/thread/thr_exit.c#10 integrate
.. //depot/projects/mips2/src/sys/compat/linux/linux_file.c#12 integrate
.. //depot/projects/mips2/src/sys/compat/linux/linux_socket.c#7 integrate
.. //depot/projects/mips2/src/sys/dev/ath/if_athvar.h#6 integrate
.. //depot/projects/mips2/src/sys/dev/drm/ati_pcigart.c#4 integrate
.. //depot/projects/mips2/src/sys/dev/jme/if_jme.c#3 integrate
.. //depot/projects/mips2/src/sys/dev/jme/if_jmereg.h#2 integrate
.. //depot/projects/mips2/src/sys/dev/usb/usb_quirks.c#8 integrate
.. //depot/projects/mips2/src/sys/dev/usb/usbdevs#22 integrate
.. //depot/projects/mips2/src/sys/netinet/tcp_input.c#15 integrate
Differences ...
==== //depot/projects/mips2/src/bin/cp/utils.c#5 (text+ko) ====
@@ -33,7 +33,7 @@
#endif
#endif /* not lint */
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/bin/cp/utils.c,v 1.54 2008/08/07 07:29:26 trasz Exp $");
+__FBSDID("$FreeBSD: src/bin/cp/utils.c,v 1.55 2008/09/09 12:31:42 trasz Exp $");
#include <sys/types.h>
#include <sys/acl.h>
@@ -224,7 +224,6 @@
rval = 1;
if (pflag && preserve_fd_acls(from_fd, to_fd) != 0)
rval = 1;
- (void)close(from_fd);
if (close(to_fd)) {
warn("%s", to.p_path);
rval = 1;
==== //depot/projects/mips2/src/etc/rc.initdiskless#4 (text+ko) ====
@@ -24,7 +24,7 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD: src/etc/rc.initdiskless,v 1.53 2008/05/15 11:00:23 bms Exp $
+# $FreeBSD: src/etc/rc.initdiskless,v 1.54 2008/09/09 18:40:50 bms Exp $
# On entry to this script the entire system consists of a read-only root
# mounted via NFS. The kernel has run BOOTP and configured an interface
@@ -73,6 +73,16 @@
# If this file exists, then failure to execute the mount
# command contained in /conf/T/M/remount is non-fatal.
#
+# /conf/T/M/remount_subdir
+# If this file exists, then the behaviour of /conf/T/M/remount
+# changes as follows:
+# 1. /conf/T/M/remount is invoked to mount the root of the
+# filesystem where the configuration data exists on a
+# temporary mountpoint.
+# 2. /conf/T/M/remount_subdir is then invoked to mount a
+# *subdirectory* of the filesystem mounted by
+# /conf/T/M/remount on /conf/T/M/.
+#
# /conf/T/M/diskless_remount
# The contents of the file points to an NFS filesystem,
# possibly followed by mount_nfs options. If the server name
@@ -296,10 +306,33 @@
# remount. Beware, the command is in the file itself!
if [ -f $j/remount ]; then
- nfspt=`/bin/cat $j/remount`
- $nfspt $j
- chkerr $? "$nfspt $j"
- to_umount="$j ${to_umount}" # XXX hope it is really a mount!
+ if [ -f $j/remount_subdir ]; then
+ k="/conf.tmp/$i/$subdir"
+ [ -d $k ] || continue
+
+ # Mount the filesystem root where the config data is
+ # on the temporary mount point.
+ nfspt=`/bin/cat $j/remount`
+ $nfspt $k
+ chkerr $? "$nfspt $k"
+
+ # Now use a nullfs mount to get the data where we
+ # really want to see it.
+ remount_subdir=`/bin/cat $j/remount_subdir`
+ remount_subdir_cmd="mount -t nullfs $k/$remount_subdir"
+
+ $remount_subdir_cmd $j
+ chkerr $? "$remount_subdir_cmd $j"
+
+ # XXX check order -- we must force $k to be unmounted
+ # after j, as j depends on k.
+ to_umount="$j $k ${to_umount}"
+ else
+ nfspt=`/bin/cat $j/remount`
+ $nfspt $j
+ chkerr $? "$nfspt $j"
+ to_umount="$j ${to_umount}" # XXX hope it is really a mount!
+ fi
fi
# NFS remount
==== //depot/projects/mips2/src/include/rpc/svc_auth.h#2 (text+ko) ====
@@ -30,7 +30,7 @@
*
* from: @(#)svc_auth.h 1.6 86/07/16 SMI
* @(#)svc_auth.h 2.1 88/07/29 4.0 RPCSRC
- * $FreeBSD: src/include/rpc/svc_auth.h,v 1.14 2002/03/23 17:24:55 imp Exp $
+ * $FreeBSD: src/include/rpc/svc_auth.h,v 1.15 2008/09/09 14:15:55 dfr Exp $
*/
/*
@@ -46,6 +46,8 @@
* Server side authenticator
*/
__BEGIN_DECLS
+extern struct svc_auth_ops svc_auth_null_ops;
+
extern enum auth_stat _authenticate(struct svc_req *, struct rpc_msg *);
extern int svc_auth_reg(int, enum auth_stat (*)(struct svc_req *,
struct rpc_msg *));
==== //depot/projects/mips2/src/lib/libc/gen/arc4random.c#5 (text+ko) ====
@@ -33,7 +33,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/gen/arc4random.c,v 1.24 2008/08/03 20:15:22 ache Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/gen/arc4random.c,v 1.25 2008/09/09 09:46:36 ache Exp $");
#include "namespace.h"
#include <sys/types.h>
@@ -54,7 +54,7 @@
static pthread_mutex_t arc4random_mtx = PTHREAD_MUTEX_INITIALIZER;
-#define RANDOMDEV "/dev/urandom"
+#define RANDOMDEV "/dev/random"
#define KEYSIZE 128
#define THREAD_LOCK() \
do { \
@@ -193,6 +193,7 @@
THREAD_LOCK();
arc4_check_init();
arc4_stir();
+ rs_stired = 1;
THREAD_UNLOCK();
}
==== //depot/projects/mips2/src/lib/libc/rpc/svc.c#3 (text+ko) ====
@@ -34,7 +34,7 @@
static char *sccsid = "@(#)svc.c 2.4 88/08/11 4.0 RPCSRC";
#endif
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/rpc/svc.c,v 1.25 2008/08/06 14:02:05 dfr Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/rpc/svc.c,v 1.26 2008/09/09 14:15:55 dfr Exp $");
/*
* svc.c, Server-side remote procedure call interface.
@@ -569,6 +569,7 @@
ext = mem_alloc(sizeof(SVCXPRT_EXT));
memset(ext, 0, sizeof(SVCXPRT_EXT));
xprt->xp_p3 = ext;
+ ext->xp_auth.svc_ah_ops = &svc_auth_null_ops;
return (xprt);
}
==== //depot/projects/mips2/src/lib/libc/rpc/svc_auth.c#3 (text+ko) ====
@@ -37,7 +37,7 @@
static char sccsid[] = "@(#)svc_auth.c 1.26 89/02/07 Copyr 1984 Sun Micro";
#endif
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/rpc/svc_auth.c,v 1.14 2008/08/06 14:02:05 dfr Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/rpc/svc_auth.c,v 1.15 2008/09/09 14:15:55 dfr Exp $");
/*
* svc_auth.c, Server-side rpc authenticator interface.
@@ -75,7 +75,7 @@
};
static struct authsvc *Auths = NULL;
-static struct svc_auth_ops svc_auth_null_ops;
+struct svc_auth_ops svc_auth_null_ops;
/*
* The call rpc message, msg has been obtained from the wire. The msg contains
@@ -162,7 +162,7 @@
return (xdr_func(xdrs, xdr_ptr));
}
-static struct svc_auth_ops svc_auth_null_ops = {
+struct svc_auth_ops svc_auth_null_ops = {
svcauth_null_wrap,
svcauth_null_wrap,
};
==== //depot/projects/mips2/src/lib/libthr/thread/thr_exit.c#10 (text+ko) ====
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/lib/libthr/thread/thr_exit.c,v 1.30 2008/08/27 02:00:53 jasone Exp $
+ * $FreeBSD: src/lib/libthr/thread/thr_exit.c,v 1.31 2008/09/09 17:14:32 jasone Exp $
*/
#include "namespace.h"
@@ -96,9 +96,6 @@
_thread_cleanupspecific();
}
- /* Tell malloc that the thread is exiting. */
- _malloc_thread_cleanup();
-
if (!_thr_isthreaded())
exit(0);
@@ -109,6 +106,12 @@
exit(0);
/* Never reach! */
}
+ THREAD_LIST_UNLOCK(curthread);
+
+ /* Tell malloc that the thread is exiting. */
+ _malloc_thread_cleanup();
+
+ THREAD_LIST_LOCK(curthread);
THR_LOCK(curthread);
curthread->state = PS_DEAD;
if (curthread->flags & THR_FLAGS_NEED_SUSPEND) {
==== //depot/projects/mips2/src/sys/compat/linux/linux_file.c#12 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_file.c,v 1.114 2008/06/08 11:09:25 rdivacky Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_file.c,v 1.115 2008/09/09 16:00:17 rdivacky Exp $");
#include "opt_compat.h"
#include "opt_mac.h"
@@ -303,9 +303,20 @@
char d_name[LINUX_NAME_MAX + 1];
};
-#define LINUX_RECLEN(de,namlen) \
- ALIGN((((char *)&(de)->d_name - (char *)de) + (namlen) + 1))
+/*
+ * Linux uses the last byte in the dirent buffer to store d_type,
+ * at least glibc-2.7 requires it. That is why l_dirent is padded with 2 bytes.
+ */
+#define LINUX_RECLEN(namlen) \
+ roundup((offsetof(struct l_dirent, d_name) + (namlen) + 2), \
+ sizeof(l_ulong))
+
+#define LINUX_RECLEN64(namlen) \
+ roundup((offsetof(struct l_dirent64, d_name) + (namlen) + 1), \
+ sizeof(uint64_t))
+#define LINUX_MAXRECLEN max(LINUX_RECLEN(LINUX_NAME_MAX), \
+ LINUX_RECLEN64(LINUX_NAME_MAX))
#define LINUX_DIRBLKSIZ 512
static int
@@ -318,12 +329,13 @@
int len, reclen; /* BSD-format */
caddr_t outp; /* Linux-format */
int resid, linuxreclen=0; /* Linux-format */
+ caddr_t lbuf; /* Linux-format */
struct file *fp;
struct uio auio;
struct iovec aiov;
off_t off;
- struct l_dirent linux_dirent;
- struct l_dirent64 linux_dirent64;
+ struct l_dirent *linux_dirent;
+ struct l_dirent64 *linux_dirent64;
int buflen, error, eofflag, nbytes, justone;
u_long *cookies = NULL, *cookiep;
int ncookies, vfslocked;
@@ -359,6 +371,7 @@
buflen = max(LINUX_DIRBLKSIZ, nbytes);
buflen = min(buflen, MAXBSIZE);
buf = malloc(buflen, M_TEMP, M_WAITOK);
+ lbuf = malloc(LINUX_MAXRECLEN, M_TEMP, M_WAITOK | M_ZERO);
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
again:
@@ -436,8 +449,8 @@
}
linuxreclen = (is64bit)
- ? LINUX_RECLEN(&linux_dirent64, bdp->d_namlen)
- : LINUX_RECLEN(&linux_dirent, bdp->d_namlen);
+ ? LINUX_RECLEN64(bdp->d_namlen)
+ : LINUX_RECLEN(bdp->d_namlen);
if (reclen > len || resid < linuxreclen) {
outp++;
@@ -446,34 +459,41 @@
if (justone) {
/* readdir(2) case. */
- linux_dirent.d_ino = bdp->d_fileno;
- linux_dirent.d_off = (l_off_t)linuxreclen;
- linux_dirent.d_reclen = (l_ushort)bdp->d_namlen;
- strcpy(linux_dirent.d_name, bdp->d_name);
- error = copyout(&linux_dirent, outp, linuxreclen);
- } else {
- if (is64bit) {
- linux_dirent64.d_ino = bdp->d_fileno;
- linux_dirent64.d_off = (cookiep)
- ? (l_off_t)*cookiep
- : (l_off_t)(off + reclen);
- linux_dirent64.d_reclen =
- (l_ushort)linuxreclen;
- linux_dirent64.d_type = bdp->d_type;
- strcpy(linux_dirent64.d_name, bdp->d_name);
- error = copyout(&linux_dirent64, outp,
- linuxreclen);
- } else {
- linux_dirent.d_ino = bdp->d_fileno;
- linux_dirent.d_off = (cookiep)
- ? (l_off_t)*cookiep
- : (l_off_t)(off + reclen);
- linux_dirent.d_reclen = (l_ushort)linuxreclen;
- strcpy(linux_dirent.d_name, bdp->d_name);
- error = copyout(&linux_dirent, outp,
- linuxreclen);
- }
+ linux_dirent = (struct l_dirent*)lbuf;
+ linux_dirent->d_ino = bdp->d_fileno;
+ linux_dirent->d_off = (l_off_t)linuxreclen;
+ linux_dirent->d_reclen = (l_ushort)bdp->d_namlen;
+ strlcpy(linux_dirent->d_name, bdp->d_name,
+ linuxreclen - offsetof(struct l_dirent, d_name));
+ error = copyout(linux_dirent, outp, linuxreclen);
+ }
+ if (is64bit) {
+ linux_dirent64 = (struct l_dirent64*)lbuf;
+ linux_dirent64->d_ino = bdp->d_fileno;
+ linux_dirent64->d_off = (cookiep)
+ ? (l_off_t)*cookiep
+ : (l_off_t)(off + reclen);
+ linux_dirent64->d_reclen = (l_ushort)linuxreclen;
+ linux_dirent64->d_type = bdp->d_type;
+ strlcpy(linux_dirent64->d_name, bdp->d_name,
+ linuxreclen - offsetof(struct l_dirent64, d_name));
+ error = copyout(linux_dirent64, outp, linuxreclen);
+ } else if (!justone) {
+ linux_dirent = (struct l_dirent*)lbuf;
+ linux_dirent->d_ino = bdp->d_fileno;
+ linux_dirent->d_off = (cookiep)
+ ? (l_off_t)*cookiep
+ : (l_off_t)(off + reclen);
+ linux_dirent->d_reclen = (l_ushort)linuxreclen;
+ /*
+ * Copy d_type to last byte of l_dirent buffer
+ */
+ lbuf[linuxreclen-1] = bdp->d_type;
+ strlcpy(linux_dirent->d_name, bdp->d_name,
+ linuxreclen - offsetof(struct l_dirent, d_name)-1);
+ error = copyout(linux_dirent, outp, linuxreclen);
}
+
if (error)
goto out;
@@ -509,6 +529,7 @@
VFS_UNLOCK_GIANT(vfslocked);
fdrop(fp, td);
free(buf, M_TEMP);
+ free(lbuf, M_TEMP);
return (error);
}
==== //depot/projects/mips2/src/sys/compat/linux/linux_socket.c#7 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_socket.c,v 1.75 2008/08/17 23:27:27 bz Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_socket.c,v 1.76 2008/09/09 13:01:14 kib Exp $");
/* XXX we use functions that might not exist. */
#include "opt_compat.h"
@@ -546,21 +546,16 @@
static int
linux_socket(struct thread *td, struct linux_socket_args *args)
{
- struct linux_socket_args linux_args;
struct socket_args /* {
int domain;
int type;
int protocol;
} */ bsd_args;
- int error;
int retval_socket;
- if ((error = copyin(args, &linux_args, sizeof(linux_args))))
- return (error);
-
- bsd_args.protocol = linux_args.protocol;
- bsd_args.type = linux_args.type;
- bsd_args.domain = linux_to_bsd_domain(linux_args.domain);
+ bsd_args.protocol = args->protocol;
+ bsd_args.type = args->type;
+ bsd_args.domain = linux_to_bsd_domain(args->domain);
if (bsd_args.domain == -1)
return (EINVAL);
@@ -613,21 +608,17 @@
static int
linux_bind(struct thread *td, struct linux_bind_args *args)
{
- struct linux_bind_args linux_args;
struct sockaddr *sa;
int error;
- if ((error = copyin(args, &linux_args, sizeof(linux_args))))
- return (error);
-
- error = linux_getsockaddr(&sa, PTRIN(linux_args.name),
- linux_args.namelen);
+ error = linux_getsockaddr(&sa, PTRIN(args->name),
+ args->namelen);
if (error)
return (error);
- error = kern_bind(td, linux_args.s, sa);
+ error = kern_bind(td, args->s, sa);
free(sa, M_SONAME);
- if (error == EADDRNOTAVAIL && linux_args.namelen != sizeof(struct sockaddr_in))
+ if (error == EADDRNOTAVAIL && args->namelen != sizeof(struct sockaddr_in))
return (EINVAL);
return (error);
}
@@ -642,22 +633,17 @@
int
linux_connect(struct thread *td, struct linux_connect_args *args)
{
- struct linux_connect_args linux_args;
struct socket *so;
struct sockaddr *sa;
u_int fflag;
int error;
- if ((error = copyin(args, &linux_args, sizeof(linux_args))))
- return (error);
-
- error = linux_getsockaddr(&sa,
- (struct osockaddr *)PTRIN(linux_args.name),
- linux_args.namelen);
+ error = linux_getsockaddr(&sa, (struct osockaddr *)PTRIN(args->name),
+ args->namelen);
if (error)
return (error);
- error = kern_connect(td, linux_args.s, sa);
+ error = kern_connect(td, args->s, sa);
free(sa, M_SONAME);
if (error != EISCONN)
return (error);
@@ -671,7 +657,7 @@
* socket and use the file descriptor reference instead of
* creating a new one.
*/
- error = fgetsock(td, linux_args.s, &so, &fflag);
+ error = fgetsock(td, args->s, &so, &fflag);
if (error == 0) {
error = EISCONN;
if (fflag & FNONBLOCK) {
@@ -694,18 +680,13 @@
static int
linux_listen(struct thread *td, struct linux_listen_args *args)
{
- struct linux_listen_args linux_args;
struct listen_args /* {
int s;
int backlog;
} */ bsd_args;
- int error;
- if ((error = copyin(args, &linux_args, sizeof(linux_args))))
- return (error);
-
- bsd_args.s = linux_args.s;
- bsd_args.backlog = linux_args.backlog;
+ bsd_args.s = args->s;
+ bsd_args.backlog = args->backlog;
return (listen(td, &bsd_args));
}
@@ -718,7 +699,6 @@
static int
linux_accept(struct thread *td, struct linux_accept_args *args)
{
- struct linux_accept_args linux_args;
struct accept_args /* {
int s;
struct sockaddr * __restrict name;
@@ -726,22 +706,19 @@
} */ bsd_args;
int error, fd;
- if ((error = copyin(args, &linux_args, sizeof(linux_args))))
- return (error);
-
- bsd_args.s = linux_args.s;
+ bsd_args.s = args->s;
/* XXX: */
- bsd_args.name = (struct sockaddr * __restrict)PTRIN(linux_args.addr);
- bsd_args.anamelen = PTRIN(linux_args.namelen);/* XXX */
+ bsd_args.name = (struct sockaddr * __restrict)PTRIN(args->addr);
+ bsd_args.anamelen = PTRIN(args->namelen);/* XXX */
error = accept(td, &bsd_args);
bsd_to_linux_sockaddr((struct sockaddr *)bsd_args.name);
if (error) {
- if (error == EFAULT && linux_args.namelen != sizeof(struct sockaddr_in))
- return (EINVAL);
+ if (error == EFAULT && args->namelen != sizeof(struct sockaddr_in))
+ return (EINVAL);
return (error);
}
- if (linux_args.addr) {
- error = linux_sa_put(PTRIN(linux_args.addr));
+ if (args->addr) {
+ error = linux_sa_put(PTRIN(args->addr));
if (error) {
(void)kern_close(td, td->td_retval[0]);
return (error);
@@ -768,7 +745,6 @@
static int
linux_getsockname(struct thread *td, struct linux_getsockname_args *args)
{
- struct linux_getsockname_args linux_args;
struct getsockname_args /* {
int fdes;
struct sockaddr * __restrict asa;
@@ -776,18 +752,15 @@
} */ bsd_args;
int error;
- if ((error = copyin(args, &linux_args, sizeof(linux_args))))
- return (error);
-
- bsd_args.fdes = linux_args.s;
+ bsd_args.fdes = args->s;
/* XXX: */
- bsd_args.asa = (struct sockaddr * __restrict)PTRIN(linux_args.addr);
- bsd_args.alen = PTRIN(linux_args.namelen); /* XXX */
+ bsd_args.asa = (struct sockaddr * __restrict)PTRIN(args->addr);
+ bsd_args.alen = PTRIN(args->namelen); /* XXX */
error = getsockname(td, &bsd_args);
bsd_to_linux_sockaddr((struct sockaddr *)bsd_args.asa);
if (error)
return (error);
- error = linux_sa_put(PTRIN(linux_args.addr));
+ error = linux_sa_put(PTRIN(args->addr));
if (error)
return (error);
return (0);
@@ -802,7 +775,6 @@
static int
linux_getpeername(struct thread *td, struct linux_getpeername_args *args)
{
- struct linux_getpeername_args linux_args;
struct getpeername_args /* {
int fdes;
caddr_t asa;
@@ -810,17 +782,14 @@
} */ bsd_args;
int error;
- if ((error = copyin(args, &linux_args, sizeof(linux_args))))
- return (error);
-
- bsd_args.fdes = linux_args.s;
- bsd_args.asa = (struct sockaddr *)PTRIN(linux_args.addr);
- bsd_args.alen = (int *)PTRIN(linux_args.namelen);
+ bsd_args.fdes = args->s;
+ bsd_args.asa = (struct sockaddr *)PTRIN(args->addr);
+ bsd_args.alen = (int *)PTRIN(args->namelen);
error = getpeername(td, &bsd_args);
bsd_to_linux_sockaddr((struct sockaddr *)bsd_args.asa);
if (error)
return (error);
- error = linux_sa_put(PTRIN(linux_args.addr));
+ error = linux_sa_put(PTRIN(args->addr));
if (error)
return (error);
return (0);
@@ -836,25 +805,20 @@
static int
linux_socketpair(struct thread *td, struct linux_socketpair_args *args)
{
- struct linux_socketpair_args linux_args;
struct socketpair_args /* {
int domain;
int type;
int protocol;
int *rsv;
} */ bsd_args;
- int error;
- if ((error = copyin(args, &linux_args, sizeof(linux_args))))
- return (error);
-
- bsd_args.domain = linux_to_bsd_domain(linux_args.domain);
+ bsd_args.domain = linux_to_bsd_domain(args->domain);
if (bsd_args.domain == -1)
return (EINVAL);
- bsd_args.type = linux_args.type;
- bsd_args.protocol = linux_args.protocol;
- bsd_args.rsv = (int *)PTRIN(linux_args.rsv);
+ bsd_args.type = args->type;
+ bsd_args.protocol = args->protocol;
+ bsd_args.rsv = (int *)PTRIN(args->rsv);
return (socketpair(td, &bsd_args));
}
@@ -868,7 +832,6 @@
static int
linux_send(struct thread *td, struct linux_send_args *args)
{
- struct linux_send_args linux_args;
struct sendto_args /* {
int s;
caddr_t buf;
@@ -877,15 +840,11 @@
caddr_t to;
int tolen;
} */ bsd_args;
- int error;
- if ((error = copyin(args, &linux_args, sizeof(linux_args))))
- return (error);
-
- bsd_args.s = linux_args.s;
- bsd_args.buf = (caddr_t)PTRIN(linux_args.msg);
- bsd_args.len = linux_args.len;
- bsd_args.flags = linux_args.flags;
+ bsd_args.s = args->s;
+ bsd_args.buf = (caddr_t)PTRIN(args->msg);
+ bsd_args.len = args->len;
+ bsd_args.flags = args->flags;
bsd_args.to = NULL;
bsd_args.tolen = 0;
return sendto(td, &bsd_args);
@@ -901,7 +860,6 @@
static int
linux_recv(struct thread *td, struct linux_recv_args *args)
{
- struct linux_recv_args linux_args;
struct recvfrom_args /* {
int s;
caddr_t buf;
@@ -910,15 +868,11 @@
struct sockaddr *from;
socklen_t fromlenaddr;
} */ bsd_args;
- int error;
- if ((error = copyin(args, &linux_args, sizeof(linux_args))))
- return (error);
-
- bsd_args.s = linux_args.s;
- bsd_args.buf = (caddr_t)PTRIN(linux_args.msg);
- bsd_args.len = linux_args.len;
- bsd_args.flags = linux_args.flags;
+ bsd_args.s = args->s;
+ bsd_args.buf = (caddr_t)PTRIN(args->msg);
+ bsd_args.len = args->len;
+ bsd_args.flags = args->flags;
bsd_args.from = NULL;
bsd_args.fromlenaddr = 0;
return (recvfrom(td, &bsd_args));
@@ -927,28 +881,23 @@
static int
linux_sendto(struct thread *td, struct linux_sendto_args *args)
{
- struct linux_sendto_args linux_args;
struct msghdr msg;
struct iovec aiov;
int error;
- if ((error = copyin(args, &linux_args, sizeof(linux_args))))
- return (error);
-
- if (linux_check_hdrincl(td, linux_args.s) == 0)
+ if (linux_check_hdrincl(td, args->s) == 0)
/* IP_HDRINCL set, tweak the packet before sending */
- return (linux_sendto_hdrincl(td, &linux_args));
+ return (linux_sendto_hdrincl(td, args));
- msg.msg_name = PTRIN(linux_args.to);
- msg.msg_namelen = linux_args.tolen;
+ msg.msg_name = PTRIN(args->to);
+ msg.msg_namelen = args->tolen;
msg.msg_iov = &aiov;
msg.msg_iovlen = 1;
msg.msg_control = NULL;
msg.msg_flags = 0;
- aiov.iov_base = PTRIN(linux_args.msg);
- aiov.iov_len = linux_args.len;
- error = linux_sendit(td, linux_args.s, &msg, linux_args.flags,
- UIO_USERSPACE);
+ aiov.iov_base = PTRIN(args->msg);
+ aiov.iov_len = args->len;
+ error = linux_sendit(td, args->s, &msg, args->flags, UIO_USERSPACE);
return (error);
}
@@ -964,7 +913,6 @@
static int
linux_recvfrom(struct thread *td, struct linux_recvfrom_args *args)
{
- struct linux_recvfrom_args linux_args;
struct recvfrom_args /* {
int s;
caddr_t buf;
@@ -976,19 +924,16 @@
size_t len;
int error;
- if ((error = copyin(args, &linux_args, sizeof(linux_args))))
+ if ((error = copyin(PTRIN(args->fromlen), &len, sizeof(size_t))))
return (error);
- if ((error = copyin(PTRIN(linux_args.fromlen), &len, sizeof(size_t))))
- return (error);
-
- bsd_args.s = linux_args.s;
- bsd_args.buf = PTRIN(linux_args.buf);
- bsd_args.len = linux_args.len;
- bsd_args.flags = linux_to_bsd_msg_flags(linux_args.flags);
+ bsd_args.s = args->s;
+ bsd_args.buf = PTRIN(args->buf);
+ bsd_args.len = args->len;
+ bsd_args.flags = linux_to_bsd_msg_flags(args->flags);
/* XXX: */
- bsd_args.from = (struct sockaddr * __restrict)PTRIN(linux_args.from);
- bsd_args.fromlenaddr = PTRIN(linux_args.fromlen);/* XXX */
+ bsd_args.from = (struct sockaddr * __restrict)PTRIN(args->from);
+ bsd_args.fromlenaddr = PTRIN(args->fromlen);/* XXX */
linux_to_bsd_sockaddr((struct sockaddr *)bsd_args.from, len);
error = recvfrom(td, &bsd_args);
@@ -996,9 +941,9 @@
if (error)
return (error);
- if (linux_args.from) {
+ if (args->from) {
error = linux_sa_put((struct osockaddr *)
- PTRIN(linux_args.from));
+ PTRIN(args->from));
if (error)
return (error);
}
@@ -1014,19 +959,15 @@
static int
linux_sendmsg(struct thread *td, struct linux_sendmsg_args *args)
{
- struct linux_sendmsg_args linux_args;
struct msghdr msg;
struct iovec *iov;
int error;
/* XXXTJR sendmsg is broken on amd64 */
- error = copyin(args, &linux_args, sizeof(linux_args));
+ error = copyin(PTRIN(args->msg), &msg, sizeof(msg));
if (error)
return (error);
- error = copyin(PTRIN(linux_args.msg), &msg, sizeof(msg));
- if (error)
- return (error);
/*
* Some Linux applications (ping) define a non-NULL control data
@@ -1042,8 +983,7 @@
return (error);
msg.msg_iov = iov;
msg.msg_flags = 0;
- error = linux_sendit(td, linux_args.s, &msg, linux_args.flags,
- UIO_USERSPACE);
+ error = linux_sendit(td, args->s, &msg, args->flags, UIO_USERSPACE);
free(iov, M_IOV);
return (error);
}
@@ -1057,7 +997,6 @@
static int
linux_recvmsg(struct thread *td, struct linux_recvmsg_args *args)
{
- struct linux_recvmsg_args linux_args;
struct recvmsg_args /* {
int s;
struct msghdr *msg;
@@ -1069,15 +1008,12 @@
/* XXXTJR recvmsg is broken on amd64 */
- if ((error = copyin(args, &linux_args, sizeof(linux_args))))
- return (error);
-
if ((error = copyin(PTRIN(args->msg), &msg, sizeof (msg))))
return (error);
- bsd_args.s = linux_args.s;
- bsd_args.msg = PTRIN(linux_args.msg);
- bsd_args.flags = linux_to_bsd_msg_flags(linux_args.flags);
+ bsd_args.s = args->s;
+ bsd_args.msg = PTRIN(args->msg);
+ bsd_args.flags = linux_to_bsd_msg_flags(args->flags);
if (msg.msg_name) {
linux_to_bsd_sockaddr((struct sockaddr *)msg.msg_name,
msg.msg_namelen);
@@ -1094,7 +1030,7 @@
cmsg->cmsg_level = bsd_to_linux_sockopt_level(cmsg->cmsg_level);
}
- error = copyin(PTRIN(linux_args.msg), &msg, sizeof(msg));
+ error = copyin(PTRIN(args->msg), &msg, sizeof(msg));
if (error)
return (error);
if (msg.msg_name && msg.msg_namelen > 2)
@@ -1110,18 +1046,13 @@
static int
linux_shutdown(struct thread *td, struct linux_shutdown_args *args)
{
- struct linux_shutdown_args linux_args;
struct shutdown_args /* {
int s;
int how;
} */ bsd_args;
- int error;
- if ((error = copyin(args, &linux_args, sizeof(linux_args))))
- return (error);
-
- bsd_args.s = linux_args.s;
- bsd_args.how = linux_args.how;
+ bsd_args.s = args->s;
+ bsd_args.how = args->how;
return (shutdown(td, &bsd_args));
}
@@ -1136,7 +1067,6 @@
static int
linux_setsockopt(struct thread *td, struct linux_setsockopt_args *args)
{
- struct linux_setsockopt_args linux_args;
struct setsockopt_args /* {
int s;
int level;
@@ -1146,21 +1076,18 @@
} */ bsd_args;
int error, name;
- if ((error = copyin(args, &linux_args, sizeof(linux_args))))
- return (error);
-
- bsd_args.s = linux_args.s;
- bsd_args.level = linux_to_bsd_sockopt_level(linux_args.level);
+ bsd_args.s = args->s;
+ bsd_args.level = linux_to_bsd_sockopt_level(args->level);
switch (bsd_args.level) {
case SOL_SOCKET:
- name = linux_to_bsd_so_sockopt(linux_args.optname);
+ name = linux_to_bsd_so_sockopt(args->optname);
break;
case IPPROTO_IP:
- name = linux_to_bsd_ip_sockopt(linux_args.optname);
+ name = linux_to_bsd_ip_sockopt(args->optname);
break;
case IPPROTO_TCP:
/* Linux TCP option values match BSD's */
- name = linux_args.optname;
+ name = args->optname;
break;
default:
name = -1;
@@ -1170,8 +1097,8 @@
return (ENOPROTOOPT);
bsd_args.name = name;
- bsd_args.val = PTRIN(linux_args.optval);
- bsd_args.valsize = linux_args.optlen;
+ bsd_args.val = PTRIN(args->optval);
+ bsd_args.valsize = args->optlen;
if (name == IPV6_NEXTHOP) {
linux_to_bsd_sockaddr((struct sockaddr *)bsd_args.val,
@@ -1195,7 +1122,6 @@
static int
linux_getsockopt(struct thread *td, struct linux_getsockopt_args *args)
{
- struct linux_getsockopt_args linux_args;
struct getsockopt_args /* {
int s;
int level;
@@ -1205,21 +1131,18 @@
} */ bsd_args;
int error, name;
- if ((error = copyin(args, &linux_args, sizeof(linux_args))))
- return (error);
-
- bsd_args.s = linux_args.s;
- bsd_args.level = linux_to_bsd_sockopt_level(linux_args.level);
+ bsd_args.s = args->s;
+ bsd_args.level = linux_to_bsd_sockopt_level(args->level);
switch (bsd_args.level) {
case SOL_SOCKET:
- name = linux_to_bsd_so_sockopt(linux_args.optname);
+ name = linux_to_bsd_so_sockopt(args->optname);
break;
case IPPROTO_IP:
- name = linux_to_bsd_ip_sockopt(linux_args.optname);
+ name = linux_to_bsd_ip_sockopt(args->optname);
break;
case IPPROTO_TCP:
/* Linux TCP option values match BSD's */
- name = linux_args.optname;
+ name = args->optname;
break;
default:
name = -1;
@@ -1229,8 +1152,8 @@
return (EINVAL);
bsd_args.name = name;
- bsd_args.val = PTRIN(linux_args.optval);
- bsd_args.avalsize = PTRIN(linux_args.optlen);
+ bsd_args.val = PTRIN(args->optval);
+ bsd_args.avalsize = PTRIN(args->optlen);
if (name == IPV6_NEXTHOP) {
error = getsockopt(td, &bsd_args);
==== //depot/projects/mips2/src/sys/dev/ath/if_athvar.h#6 (text+ko) ====
@@ -26,7 +26,7 @@
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGES.
*
- * $FreeBSD: src/sys/dev/ath/if_athvar.h,v 1.65 2008/05/29 00:10:48 sam Exp $
+ * $FreeBSD: src/sys/dev/ath/if_athvar.h,v 1.66 2008/09/09 16:21:25 rpaulo Exp $
*/
/*
@@ -506,7 +506,7 @@
#define ath_hal_getregdomain(_ah, _prd) \
(ath_hal_getcapability(_ah, HAL_CAP_REG_DMN, 0, (_prd)) == HAL_OK)
#define ath_hal_setregdomain(_ah, _rd) \
- (*(uint16_t *)(((uint8_t *)(_ah)) + 520) = (_rd))
+ (*(uint16_t *)(((uint8_t *)&(_ah)[1]) + 128) = (_rd))
#define ath_hal_getcountrycode(_ah, _pcc) \
(*(_pcc) = (_ah)->ah_countryCode)
#define ath_hal_gettkipmic(_ah) \
==== //depot/projects/mips2/src/sys/dev/drm/ati_pcigart.c#4 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/ati_pcigart.c,v 1.5 2008/09/09 02:05:03 rnoland Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/ati_pcigart.c,v 1.6 2008/09/09 02:18:37 rnoland Exp $");
/** @file ati_pcigart.c
* Implementation of ATI's PCIGART, which provides an aperture in card virtual
@@ -42,31 +42,86 @@
#define ATI_PCIE_WRITE 0x4
#define ATI_PCIE_READ 0x8
-static int drm_ati_alloc_pcigart_table(struct drm_device *dev,
- struct drm_ati_pcigart_info *gart_info)
+static void
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list