diff options
author | tjr <tjr@FreeBSD.org> | 2004-08-16 07:28:16 +0000 |
---|---|---|
committer | tjr <tjr@FreeBSD.org> | 2004-08-16 07:28:16 +0000 |
commit | 6d0528abdfecb0a45eec1ee51b594803b1e11866 (patch) | |
tree | 8df9260c749ffef486077cca195f2e786112fc5d /sys/compat/linux/linux_stats.c | |
parent | e6930a385cee9ccad60b87c385ea268f880443c3 (diff) | |
download | FreeBSD-src-6d0528abdfecb0a45eec1ee51b594803b1e11866.zip FreeBSD-src-6d0528abdfecb0a45eec1ee51b594803b1e11866.tar.gz |
Changes to MI Linux emulation code necessary to run 32-bit Linux binaries
on AMD64, and the general case where the emulated platform has different
size pointers than we use natively:
- declare certain structure members as l_uintptr_t and use the new PTRIN
and PTROUT macros to convert to and from native pointers.
- declare some structures __packed on amd64 when the layout would differ
from that used on i386.
- include <machine/../linux32/linux.h> instead of <machine/../linux/linux.h>
if compiling with COMPAT_LINUX32. This will need to be revisited before
32-bit and 64-bit Linux emulation support can coexist in the same kernel.
- other small scattered changes.
This should be a no-op on i386 and Alpha.
Diffstat (limited to 'sys/compat/linux/linux_stats.c')
-rw-r--r-- | sys/compat/linux/linux_stats.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/sys/compat/linux/linux_stats.c b/sys/compat/linux/linux_stats.c index 4a78554..406b524 100644 --- a/sys/compat/linux/linux_stats.c +++ b/sys/compat/linux/linux_stats.c @@ -45,8 +45,15 @@ __FBSDID("$FreeBSD$"); #include <sys/systm.h> #include <sys/vnode.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> @@ -392,7 +399,7 @@ linux_ustat(struct thread *td, struct linux_ustat_args *args) return (copyout(&lu, args->ubuf, sizeof(lu))); } -#if defined(__i386__) +#if defined(__i386__) || (defined(__amd64__) && COMPAT_LINUX32) static int stat64_copyout(struct stat *buf, void *ubuf) @@ -531,4 +538,4 @@ linux_fstat64(struct thread *td, struct linux_fstat64_args *args) return (error); } -#endif /* __i386__ */ +#endif /* __i386__ || __amd64__ */ |