diff -ur src/sys/amd64/linux32/linux32_machdep.c /home/suleiman/freebsd/src/sys/amd64/linux32/linux32_machdep.c --- src/sys/amd64/linux32/linux32_machdep.c Mon Mar 20 13:16:39 2006 +++ /home/suleiman/freebsd/src/sys/amd64/linux32/linux32_machdep.c Thu Jul 27 16:58:00 2006 @@ -614,7 +614,6 @@ int prot; int flags; int fd; - long pad; off_t pos; } */ bsd_args; int error; @@ -712,7 +711,6 @@ else bsd_args.fd = linux_args->fd; bsd_args.pos = (off_t)linux_args->pgoff * PAGE_SIZE; - bsd_args.pad = 0; #ifdef DEBUG if (ldebug(mmap)) @@ -908,7 +906,6 @@ #endif sa.fd = args->fd; - sa.pad = 0; sa.length = args->length; return ftruncate(td, &sa); } Only in src/sys/arm/conf: GENERIC.hints diff -ur src/sys/compat/linux/linux_file.c /home/suleiman/freebsd/src/sys/compat/linux/linux_file.c --- src/sys/compat/linux/linux_file.c Thu Jul 27 15:19:44 2006 +++ /home/suleiman/freebsd/src/sys/compat/linux/linux_file.c Thu Jul 27 16:59:26 2006 @@ -155,7 +155,6 @@ struct lseek_args /* { int fd; - int pad; off_t offset; int whence; } */ tmp_args; @@ -666,12 +665,10 @@ { struct ftruncate_args /* { int fd; - int pad; off_t length; } */ nuap; nuap.fd = args->fd; - nuap.pad = 0; nuap.length = args->length; return (ftruncate(td, &nuap)); } diff -ur src/sys/kern/sys_generic.c /home/suleiman/freebsd/src/sys/kern/sys_generic.c --- src/sys/kern/sys_generic.c Thu Jul 27 15:21:21 2006 +++ /home/suleiman/freebsd/src/sys/kern/sys_generic.c Thu Jul 27 17:05:15 2006 @@ -125,7 +125,6 @@ int fd; void *buf; size_t nbyte; - int pad; off_t offset; }; #endif @@ -153,6 +152,30 @@ return(error); } +#ifdef COMPAT_FREEBSD4 +#ifndef _SYS_SYSPROTO_H_ +struct freebsd4_pread_args { + int fd; + void *buf; + size_t nbyte; + int pad; + off_t offset; +}; +#endif +int +freebsd4_pread(struct thread *td, struct freebsd4_pread_args *uap) +{ + struct pread_args nuap; + + nuap.fd = uap->fd; + nuap.buf = uap->buf; + nuap.nbyte = uap->nbyte; + nuap.offset = uap->offset; + + return (pread(td, &nuap)); +} +#endif /* COMPAT_FREEBSD4 */ + /* * Scatter read system call. */ @@ -335,7 +358,6 @@ int fd; const void *buf; size_t nbyte; - int pad; off_t offset; }; #endif @@ -362,6 +384,30 @@ error = kern_pwritev(td, uap->fd, &auio, uap->offset); return(error); } + +#ifdef COMPAT_FREEBSD4 +#ifndef _SYS_SYSPROTO_H_ +struct freebsd4_pwrite_args { + int fd; + const void *buf; + size_t nbyte; + int pad; + off_t offset; +}; +#endif +int +freebsd4_pwrite(struct thread *td, struct freebsd4_pwrite_args *uap) +{ + struct pwrite_args nuap; + + nuap.fd = uap->fd; + nuap.buf = uap->buf; + nuap.nbyte = uap->nbyte; + nuap.offset = uap->offset; + + return (pwrite(td, &nuap)); +} +#endif /* COMPAT_FREEBSD4 */ /* * Gather write system call diff -ur src/sys/kern/syscalls.master /home/suleiman/freebsd/src/sys/kern/syscalls.master --- src/sys/kern/syscalls.master Thu Jul 27 15:21:21 2006 +++ /home/suleiman/freebsd/src/sys/kern/syscalls.master Thu Jul 27 16:48:02 2006 @@ -338,10 +338,11 @@ int a4); } ; XXX should be { int shmsys(int which, ...); } 172 AUE_NULL UNIMPL nosys -173 AUE_PREAD MSTD { ssize_t pread(int fd, void *buf, \ - size_t nbyte, int pad, off_t offset); } -174 AUE_PWRITE MSTD { ssize_t pwrite(int fd, const void *buf, \ +173 AUE_PREAD MCOMPAT4 { ssize_t pread(int fd, void *buf, \ size_t nbyte, int pad, off_t offset); } +174 AUE_PWRITE MCOMPAT4 { ssize_t pwrite(int fd, \ + const void *buf, size_t nbyte, int pad, \ + off_t offset); } 175 AUE_NULL UNIMPL nosys 176 AUE_ADJTIME MSTD { int ntp_adjtime(struct timex *tp); } 177 AUE_NULL UNIMPL sfork (BSD/OS 2.x) @@ -371,16 +372,16 @@ __setrlimit_args int 196 AUE_GETDIRENTRIES MSTD { int getdirentries(int fd, char *buf, \ u_int count, long *basep); } -197 AUE_MMAP MSTD { caddr_t mmap(caddr_t addr, size_t len, \ - int prot, int flags, int fd, int pad, \ - off_t pos); } +197 AUE_MMAP MCOMPAT4 { caddr_t mmap(caddr_t addr, \ + size_t len, int prot, int flags, int fd, \ + int pad, off_t pos); } 198 AUE_NULL MSTD { int nosys(void); } __syscall \ __syscall_args int -199 AUE_LSEEK MSTD { off_t lseek(int fd, int pad, off_t offset, \ - int whence); } -200 AUE_TRUNCATE MSTD { int truncate(char *path, int pad, \ +199 AUE_LSEEK MCOMPAT4 { off_t lseek(int fd, int pad, \ + off_t offset, int whence); } +200 AUE_TRUNCATE MCOMPAT4 { int truncate(char *path, int pad, \ off_t length); } -201 AUE_FTRUNCATE MSTD { int ftruncate(int fd, int pad, \ +201 AUE_FTRUNCATE MCOMPAT4 { int ftruncate(int fd, int pad, \ off_t length); } 202 AUE_SYSCTL MSTD { int __sysctl(int *name, u_int namelen, \ void *old, size_t *oldlenp, void *new, \ @@ -831,5 +832,16 @@ 468 AUE_NULL MSTD { int thr_setschedparam(long id, \ const struct sched_param *param, \ int param_size); } +469 AUE_PREAD MSTD { ssize_t pread(int fd, void *buf, \ + size_t nbyte, off_t offset); } +470 AUE_PWRITE MSTD { ssize_t pwrite(int fd, const void *buf, \ + size_t nbyte, off_t offset); } +471 AUE_MMAP MSTD { caddr_t mmap(caddr_t addr, size_t len, \ + int prot, int flags, int fd, off_t pos); } +472 AUE_LSEEK MSTD { off_t lseek(int fd, off_t offset, \ + int whence); } +473 AUE_TRUNCATE MSTD { int truncate(char *path, off_t length); } +474 AUE_FTRUNCATE MSTD { int ftruncate(int fd, off_t length); } + ; Please copy any additions and changes to the following compatability tables: ; sys/compat/freebsd32/syscalls.master diff -ur src/sys/kern/vfs_syscalls.c /home/suleiman/freebsd/src/sys/kern/vfs_syscalls.c --- src/sys/kern/vfs_syscalls.c Thu Jul 27 15:21:23 2006 +++ /home/suleiman/freebsd/src/sys/kern/vfs_syscalls.c Thu Jul 27 17:04:04 2006 @@ -1713,7 +1713,6 @@ #ifndef _SYS_SYSPROTO_H_ struct lseek_args { int fd; - int pad; off_t offset; int whence; }; @@ -1723,7 +1722,6 @@ struct thread *td; register struct lseek_args /* { int fd; - int pad; off_t offset; int whence; } */ *uap; @@ -1809,7 +1807,6 @@ { struct lseek_args /* { int fd; - int pad; off_t offset; int whence; } */ nuap; @@ -2998,7 +2995,6 @@ #ifndef _SYS_SYSPROTO_H_ struct truncate_args { char *path; - int pad; off_t length; }; #endif @@ -3007,7 +3003,6 @@ struct thread *td; register struct truncate_args /* { char *path; - int pad; off_t length; } */ *uap; { @@ -3064,7 +3059,6 @@ #ifndef _SYS_SYSPROTO_H_ struct ftruncate_args { int fd; - int pad; off_t length; }; #endif @@ -3073,7 +3067,6 @@ struct thread *td; register struct ftruncate_args /* { int fd; - int pad; off_t length; } */ *uap; { @@ -3140,7 +3133,6 @@ { struct truncate_args /* { char *path; - int pad; off_t length; } */ nuap; @@ -3168,7 +3160,6 @@ { struct ftruncate_args /* { int fd; - int pad; off_t length; } */ nuap; @@ -5085,3 +5076,58 @@ VFS_UNLOCK_GIANT(vfslocked); return (error); } + +#ifdef COMPAT_FREEBSD4 + +#ifndef _SYS_SYSPROTO_H_ +struct freebsd4_lseek_args { + int fd; + int pad; + off_t offset; + int whence; +}; +#endif +int +freebsd4_lseek(struct thread *td, struct freebsd4_lseek_args *uap) +{ + struct lseek_args nuap; + + nuap.fd = uap->fd; + nuap.offset = uap->offset; + nuap.whence = uap->whence; + + return (lseek(td, &nuap)); +} + +#ifndef _SYS_SYSPROTO_H_ +struct freebsd4_truncate_args { + char *path; + int pad; + off_t length; +}; +#endif +int +freebsd4_truncate(struct thread *td, struct freebsd4_truncate_args *uap) +{ + return (kern_truncate(td, uap->path, UIO_USERSPACE, uap->length)); +} + +#ifndef _SYS_SYSPROTO_H_ +struct freebsd4_ftruncate_args { + int fd; + int pad; + off_t length; +}; +#endif +int +freebsd4_ftruncate(struct thread *td, struct freebsd4_ftruncate_args *uap) +{ + struct ftruncate_args nuap; + + nuap.fd = uap->fd; + nuap.length = uap->length; + + return (ftruncate(td, &nuap)); +} + +#endif /* COMPAT_FREEBSD4 */ diff -ur src/sys/vm/vm_mmap.c /home/suleiman/freebsd/src/sys/vm/vm_mmap.c --- src/sys/vm/vm_mmap.c Thu Jul 27 15:21:36 2006 +++ /home/suleiman/freebsd/src/sys/vm/vm_mmap.c Thu Jul 27 17:06:47 2006 @@ -193,7 +193,6 @@ int prot; int flags; int fd; - long pad; off_t pos; }; #endif @@ -443,6 +442,33 @@ } #endif /* COMPAT_43 */ +#ifdef COMPAT_FREEBSD4 +#ifndef _SYS_SYSPROTO_H_ +struct freebsd4_mmap_args { + void *addr; + size_t len; + int prot; + int flags; + int fd; + int pad; + off_t pos; +}; +#endif +int +freebsd4_mmap(struct thread *td, struct freebsd4_mmap_args *uap) +{ + struct mmap_args nuap; + + nuap.addr = uap->addr; + nuap.len = uap->len; + nuap.prot = uap->prot; + nuap.flags = uap->flags; + nuap.fd = uap->fd; + nuap.pos = uap->pos; + + return (mmap(td, &nuap)); +} +#endif /* COMPAT_FREEBSD4 */ #ifndef _SYS_SYSPROTO_H_ struct msync_args { diff -ur src/lib/libc/sys/Makefile.inc /home/suleiman/freebsd/src/lib/libc/sys/Makefile.inc --- src/lib/libc/sys/Makefile.inc Mon Mar 20 13:15:47 2006 +++ /home/suleiman/freebsd/src/lib/libc/sys/Makefile.inc Thu Jul 27 17:09:30 2006 @@ -18,7 +18,7 @@ .endif # Sources common to both syscall interfaces: -SRCS+= ftruncate.c lseek.c mmap.c pread.c pwrite.c truncate.c __error.c +SRCS+= __error.c # Add machine dependent asm sources: SRCS+=${MDASM}