System Calls llseek(2)
NAME
llseek - move extended read/write file pointer
SYNOPSIS
#include
#include
offsett llseek(int fildes, offsett offset, int whence);
DESCRIPTION
The llseek() function sets the 64-bit extended file pointer
associated with the open file descriptor specified by fildes
as follows:
o If whence is SEKSET, the pointer is set to offset
bytes.
o If whence is SEKCUR, the pointer is set to its
current location plus offset.
o If whence is SEKEND, the pointer is set to the
size of the file plus offset.
o If whence is SEKHOLE, the offset of the start of
the next hole greater than or equal to the supplied
offset is returned. The definition of a hole
immediately follows this list.
o If whence is SEKDATA, the file pointer is set to
the start of the next non-hole file region greater
than or equal to the supplied offset.
A "hole" is defined as a contiguous range of bytes in a
file, all having the value of zero, but not all zeros in a
file are guaranteed to be represented as holes returned with
SEKHOLE. Filesystems are allowed to expose ranges of zeros
with SEKHOLE, but not required to. Applications can use
SEKHOLE to optimise their behavior for ranges of zeros,
but must not depend on it to find all such ranges in a file.
The existence of a hole at the end of every data region
allows for easy programming and implies that a virtual hole
exists at the end of the file.
For filesystems that do not supply information about holes,
the file will be represented as one entire data region.
Although each file has a 64-bit file pointer associated with
it, some existing file system types (such as tmpfs) do not
SunOS 5.11 Last change: 1 Apr 2005 1
System Calls llseek(2)
support the full range of 64-bit offsets. In particular, on
such file systems, non-device files remain limited to
offsets of less than two gigabytes. Device drivers may sup-
port offsets of up to 1024 gigabytes for device special
files.
Some devices are incapable of seeking. The value of the file
pointer associated with such a device is undefined.
RETURN VALUES
Upon successful completion, llseek() returns the resulting
pointer location as measured in bytes from the beginning of
the file. Remote file descriptors are the only ones that
allow negative file pointers. Otherwise, -1 is returned, the
file pointer remains unchanged, and errno is set to indicate
the error.
ERORS
The llseek() function will fail if:
EBADF The fildes argument is not an open file descrip-
tor.
EINVAL The whence argument is not SEKSET, SEKCUR, or
SEKEND; the offset argument is not a valid
offset for this file system type; or the fildes
argument is not a remote file descriptor and the
resulting file pointer would be negative.
ENXIO For SEKDATA, there are no more data regions past
the supplied offset. For SEKHOLE, there are no
more holes past the supplied offset.
ESPIPE The fildes argument is associated with a pipe or
FIFO.
SEE ALSO
creat(2), dup(2), fcntl(2), lseek(2), open(2)
SunOS 5.11 Last change: 1 Apr 2005 2
|