diff options
author | pjd <pjd@FreeBSD.org> | 2007-04-05 21:10:53 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2007-04-05 21:10:53 +0000 |
commit | 4718e01f98485788a9f7b2defc77a984780db526 (patch) | |
tree | c358a7e9b774044c343bcf2b36dc569901065d03 /sys/kern | |
parent | 7e73da14eb8410d6878c1e60cdb665d8a8c74c47 (diff) | |
download | FreeBSD-src-4718e01f98485788a9f7b2defc77a984780db526.zip FreeBSD-src-4718e01f98485788a9f7b2defc77a984780db526.tar.gz |
Implement SEEK_DATA and SEEK_HOLE extensions to lseek(2) as found in
OpenSolaris. For more information please refer to:
http://blogs.sun.com/bonwick/entry/seek_hole_and_seek_data
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/vfs_syscalls.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index c7b278e..72a3f4e 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -54,6 +54,7 @@ __FBSDID("$FreeBSD$"); #include <sys/kernel.h> #include <sys/fcntl.h> #include <sys/file.h> +#include <sys/filio.h> #include <sys/limits.h> #include <sys/linker.h> #include <sys/stat.h> @@ -1740,6 +1741,12 @@ lseek(td, uap) break; case L_SET: break; + case SEEK_DATA: + error = fo_ioctl(fp, FIOSEEKDATA, &offset, cred, td); + break; + case SEEK_HOLE: + error = fo_ioctl(fp, FIOSEEKHOLE, &offset, cred, td); + break; default: error = EINVAL; } |