summaryrefslogtreecommitdiffstats
path: root/lib/libc/sys/pwrite.c
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>2007-07-04 23:27:38 +0000
committerpeter <peter@FreeBSD.org>2007-07-04 23:27:38 +0000
commit1c8d4bbe1849bcdcc2f85e7f4f049e8077209ac5 (patch)
treec6557e22092cc28b77304e9185ac106ae162a5ca /lib/libc/sys/pwrite.c
parent6f011a901238459d7c02187fc3effe7157c3aeb7 (diff)
downloadFreeBSD-src-1c8d4bbe1849bcdcc2f85e7f4f049e8077209ac5.zip
FreeBSD-src-1c8d4bbe1849bcdcc2f85e7f4f049e8077209ac5.tar.gz
Change the C wrappers for mmap/lseek/pread/pwrite/truncate/ftruncate to
call the pad-less versions of the corresponding syscalls if the running kernel supports it. Check kern.osreldate once per program and cache the result to select the appropriate syscall. This maintains userland compatability with kernel.old's from quite a while back. Approved by: re (kensmith)
Diffstat (limited to 'lib/libc/sys/pwrite.c')
-rw-r--r--lib/libc/sys/pwrite.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/libc/sys/pwrite.c b/lib/libc/sys/pwrite.c
index ebbb1ec..d17ed29 100644
--- a/lib/libc/sys/pwrite.c
+++ b/lib/libc/sys/pwrite.c
@@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$");
#include <sys/types.h>
#include <sys/syscall.h>
#include <unistd.h>
+#include "libc_private.h"
/*
* This function provides 64-bit offset padding that
@@ -48,5 +49,8 @@ pwrite(fd, buf, nbyte, offset)
size_t nbyte;
off_t offset;
{
- return ((ssize_t)__syscall((quad_t)SYS_pwrite, fd, buf, nbyte, 0, offset));
+ if (__getosreldate() >= 700051)
+ return (__sys_pwrite(fd, buf, nbyte, offset));
+ else
+ return (__sys_freebsd6_pwrite(fd, buf, nbyte, 0, offset));
}
OpenPOWER on IntegriCloud