Manual Pages for Linux CentOS command on man posix_fadvise
MyWebUniversity

Manual Pages for Linux CentOS command on man posix_fadvise

POSIXFADVISE(2) Linux Programmer's Manual POSIXFADVISE(2)

NAME

posixfadvise - predeclare an access pattern for file data SYNOPSIS

#include int posixfadvise(int fd, offt offset, offt len, int advice); Feature Test Macro Requirements for glibc (see featuretestmacros(7)): posixfadvise(): XOPENSOURCE >= 600 || POSIXCSOURCE >= 200112L DESCRIPTION Programs can use posixfadvise() to announce an intention to access file data in a specific pattern in the future, thus allowing the kernel to perform appropriate optimizations. The advice applies to a (not necessarily existent) region starting at offset and extending for len bytes (or until the end of the file if len is 0) within the file referred to by fd. The advice is not binding; it merely constitutes an expectation on behalf of the application. Permissible values for advice include: POSIXFADVNORMAL Indicates that the application has no advice to give about its access pattern for the specified data. If no advice is given for an open file, this is the default assumption. POSIXFADVSEQUENTIAL The application expects to access the specified data sequen‐ tially (with lower offsets read before higher ones). POSIXFADVRANDOM The specified data will be accessed in random order. POSIXFADVNOREUSE The specified data will be accessed only once. POSIXFADVWILLNEED The specified data will be accessed in the near future. POSIXFADVDONTNEED The specified data will not be accessed in the near future. RETURN VALUE On success, zero is returned. On error, an error number is returned. ERRORS EBADF The fd argument was not a valid file descriptor. EINVAL An invalid value was specified for advice. ESPIPE The specified file descriptor refers to a pipe or FIFO. (Linux actually returns EINVAL in this case.) VERSIONS Kernel support first appeared in Linux 2.5.60; the underlying system call is called fadvise64(). Library support has been provided since glibc version 2.2, via the wrapper function posixfadvise(). CONFORMING TO

POSIX.1-2001. Note that the type of the len argument was changed from

sizet to offt in POSIX.1-2003 TC1. NOTES Under Linux, POSIXFADVNORMAL sets the readahead window to the default size for the backing device; POSIXFADVSEQUENTIAL doubles this size, and POSIXFADVRANDOM disables file readahead entirely. These changes affect the entire file, not just the specified region (but other open file handles to the same file are unaffected). POSIXFADVWILLNEED initiates a nonblocking read of the specified region into the page cache. The amount of data read may be decreased by the kernel depending on virtual memory load. (A few megabytes will usually be fully satisfied, and more is rarely useful.) In kernels before 2.6.18, POSIXFADVNOREUSE had the same semantics as POSIXFADVWILLNEED. This was probably a bug; since kernel 2.6.18,

this flag is a no-op. POSIXFADVDONTNEED attempts to free cached pages associated with the specified region. This is useful, for example, while streaming large files. A program may periodically request the kernel to free cached data that has already been used, so that more useful cached pages are not discarded instead. Pages that have not yet been written out will be unaffected, so if the application wishes to guarantee that pages will be released, it should call fsync(2) or fdatasync(2) first.

Architecture-specific variants

Some architectures require 64-bit arguments to be aligned in a suitable pair of registers (see syscall(2) for further detail). On such archi‐ tectures, the call signature of posixfadvise() shown in the SYNOPSIS would force a register to be wasted as padding between the fd and len arguments. Therefore, these architectures define a version of the sys‐ tem call that orders the arguments suitably, but otherwise is otherwise exactly the same as posixfadvise(). For example, since Linux 2.6.14, ARM has the following system call: long armfadvise6464(int fd, int advice, lofft offset, lofft len);

These architecture-specific details are generally hidden from applica‐ tions by the glibc posixfadvise() wrapper function, which invokes the

appropriate architecture-specific system call. BUGS In kernels before 2.6.6, if len was specified as 0, then this was interpreted literally as "zero bytes", rather than as meaning "all bytes through to the end of the file". SEE ALSO readahead(2), syncfilerange(2), posixfallocate(3), posixmadvise(3) COLOPHON

This page is part of release 3.53 of the Linux man-pages project. A description of the project, and information about reporting bugs, can

be found at http://www.kernel.org/doc/man-pages/.

Linux 2013-04-01 POSIXFADVISE(2)




Contact us      |      About us      |      Term of use      |       Copyright © 2000-2019 MyWebUniversity.com ™