From c2815ad564f29ace8944b8dd302e870e2e005aa8 Mon Sep 17 00:00:00 2001 From: Peter Wemm Date: Wed, 4 Jul 2007 22:57:21 +0000 Subject: [PATCH] Add freebsd6_ wrappers for mmap/lseek/pread/pwrite/truncate/ftruncate Approved by: re (kensmith) --- sys/kern/sys_generic.c | 28 ++++++++++++++++++++++++++++ sys/kern/vfs_syscalls.c | 39 ++++++++++++++++++++++++++++++++++++--- sys/vm/vm_mmap.c | 14 ++++++++++++++ 3 files changed, 78 insertions(+), 3 deletions(-) diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c index 992d181f008..16bd19509cc 100644 --- a/sys/kern/sys_generic.c +++ b/sys/kern/sys_generic.c @@ -142,6 +142,20 @@ pread(td, uap) return(error); } +int +freebsd6_pread(td, uap) + struct thread *td; + struct freebsd6_pread_args *uap; +{ + struct pread_args oargs; + + oargs.fd = uap->fd; + oargs.buf = uap->buf; + oargs.nbyte = uap->nbyte; + oargs.offset = uap->offset; + return (pread(td, &oargs)); +} + /* * Scatter read system call. */ @@ -337,6 +351,20 @@ pwrite(td, uap) return(error); } +int +freebsd6_pwrite(td, uap) + struct thread *td; + struct freebsd6_pwrite_args *uap; +{ + struct pwrite_args oargs; + + oargs.fd = uap->fd; + oargs.buf = uap->buf; + oargs.nbyte = uap->nbyte; + oargs.offset = uap->offset; + return (pwrite(td, &oargs)); +} + /* * Gather write system call. */ diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index d73c4a2188a..819a74c73a8 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -1785,16 +1785,28 @@ olseek(td, uap) off_t offset; int whence; } */ nuap; - int error; nuap.fd = uap->fd; nuap.offset = uap->offset; nuap.whence = uap->whence; - error = lseek(td, &nuap); - return (error); + return (lseek(td, &nuap)); } #endif /* COMPAT_43 */ +/* Version with the 'pad' argument */ +int +freebsd6_lseek(td, uap) + struct thread *td; + register struct freebsd6_lseek_args *uap; +{ + struct lseek_args ouap; + + ouap.fd = uap->fd; + ouap.offset = uap->offset; + ouap.whence = uap->whence; + return (lseek(td, &ouap)); +} + /* * Check access permissions using passed credentials. */ @@ -3150,6 +3162,27 @@ oftruncate(td, uap) } #endif /* COMPAT_43 */ +/* Versions with the pad argument */ +int +freebsd6_truncate(struct thread *td, struct freebsd6_truncate_args *uap) +{ + struct truncate_args ouap; + + ouap.path = uap->path; + ouap.length = uap->length; + return (truncate(td, &ouap)); +} + +int +freebsd6_ftruncate(struct thread *td, struct freebsd6_ftruncate_args *uap) +{ + struct ftruncate_args ouap; + + ouap.fd = uap->fd; + ouap.length = uap->length; + return (ftruncate(td, &ouap)); +} + /* * Sync an open file. */ diff --git a/sys/vm/vm_mmap.c b/sys/vm/vm_mmap.c index b91b82287f1..87441560e00 100644 --- a/sys/vm/vm_mmap.c +++ b/sys/vm/vm_mmap.c @@ -392,6 +392,20 @@ done: return (error); } +int +freebsd6_mmap(struct thread *td, struct freebsd6_mmap_args *uap) +{ + struct mmap_args oargs; + + oargs.addr = uap->addr; + oargs.len = uap->len; + oargs.prot = uap->prot; + oargs.flags = uap->flags; + oargs.fd = uap->fd; + oargs.pos = uap->pos; + return (mmap(td, &oargs)); +} + #ifdef COMPAT_43 #ifndef _SYS_SYSPROTO_H_ struct ommap_args {