opnsense-src/lib/libc
John Baldwin 936c09ac0f Add the posix_fadvise(2) system call. It is somewhat similar to
madvise(2) except that it operates on a file descriptor instead of a
memory region.  It is currently only supported on regular files.

Just as with madvise(2), the advice given to posix_fadvise(2) can be
divided into two types.  The first type provide hints about data access
patterns and are used in the file read and write routines to modify the
I/O flags passed down to VOP_READ() and VOP_WRITE().  These modes are
thus filesystem independent.  Note that to ease implementation (and
since this API is only advisory anyway), only a single non-normal
range is allowed per file descriptor.

The second type of hints are used to hint to the OS that data will or
will not be used.  These hints are implemented via a new VOP_ADVISE().
A default implementation is provided which does nothing for the WILLNEED
request and attempts to move any clean pages to the cache page queue for
the DONTNEED request.  This latter case required two other changes.
First, a new V_CLEANONLY flag was added to vinvalbuf().  This requests
vinvalbuf() to only flush clean buffers for the vnode from the buffer
cache and to not remove any backing pages from the vnode.  This is
used to ensure clean pages are not wired into the buffer cache before
attempting to move them to the cache page queue.  The second change adds
a new vm_object_page_cache() method.  This method is somewhat similar to
vm_object_page_remove() except that instead of freeing each page in the
specified range, it attempts to move clean pages to the cache queue if
possible.

To preserve the ABI of struct file, the f_cdevpriv pointer is now reused
in a union to point to the currently active advice region if one is
present for regular files.

Reviewed by:	jilles, kib, arch@
Approved by:	re (kib)
MFC after:	1 month
2011-11-04 04:02:50 +00:00
..
amd64 Make sure that stack is 16-byte aligned before calling a function, 2011-11-02 18:06:22 +00:00
arm Replace a proliferation of buggy MD implementations of modf() with a 2011-10-21 06:40:36 +00:00
compat-43 Powerpc is special here. powerpc and powerpc64 use different ABIs, so 2010-08-24 20:54:43 +00:00
db Fix clang warnings. 2011-06-18 13:56:33 +00:00
gdtoa Unbreak the build for arm and powerpc. 2008-04-12 14:53:52 +00:00
gen Don't forget to kick the man page date. 2011-10-27 17:21:41 +00:00
gmon Provide 64-bit PowerPC support in libc. 2010-07-10 14:45:03 +00:00
i386 Despite official i386 ABI does not mandate any stack alignment besides 2011-11-02 18:08:30 +00:00
ia64 Replace a proliferation of buggy MD implementations of modf() with a 2011-10-21 06:40:36 +00:00
iconv - Fix a trivial bug in iconv. When there is no space to perform the 2011-09-19 22:49:36 +00:00
include Introduce a non-portable function pthread_getthreadid_np(3) to retrieve 2011-02-07 21:26:46 +00:00
inet Merge the resolver part of BIND 9.4.3 into HEAD. 2008-12-14 19:39:53 +00:00
isc Merge BIND 9.4.1 into main chunk. 2007-06-03 17:20:27 +00:00
locale Fix grammar. 2011-09-27 17:54:10 +00:00
mips Replace a proliferation of buggy MD implementations of modf() with a 2011-10-21 06:40:36 +00:00
nameser This commit was generated by cvs2svn to compensate for changes in r174223, 2007-12-03 15:07:58 +00:00
net Fix whitespace inconsistencies found in homegrown Symbol.maps. 2011-10-07 15:05:24 +00:00
nls Merge from English r198040: add C message catalogue entries for newer 2010-06-20 06:52:10 +00:00
posix1e Make it possible to use permission sets (full_set, modify_set, read_set 2011-04-09 07:42:25 +00:00
powerpc Replace a proliferation of buggy MD implementations of modf() with a 2011-10-21 06:40:36 +00:00
powerpc64 Replace a proliferation of buggy MD implementations of modf() with a 2011-10-21 06:40:36 +00:00
quad Powerpc is special here. powerpc and powerpc64 use different ABIs, so 2010-08-24 20:54:43 +00:00
regex mdoc: drop redundant .Pp and .LP calls 2010-10-08 12:40:16 +00:00
resolv Add an option to enforce strict RFC 1034 compliance. 2009-05-29 07:34:54 +00:00
rpc Fix a bug in the userland rpc library, where it would use a 2011-04-10 14:11:07 +00:00
softfloat Powerpc is special here. powerpc and powerpc64 use different ABIs, so 2010-08-24 20:54:43 +00:00
sparc64 Replace a proliferation of buggy MD implementations of modf() with a 2011-10-21 06:40:36 +00:00
stdio Add support for the 'x' mode option in fopen() as specified in the C1X 2011-10-21 06:35:58 +00:00
stdlib Fix building of 32-bit compat libraries on amd64 with clang, and using 2011-07-18 20:07:29 +00:00
stdtime strptime(3) confused July with June with the fr_FR locale. 2010-05-09 22:01:35 +00:00
string Fix prototype for ffsll(3) and fls(3). 2011-05-03 19:33:06 +00:00
sys Add the posix_fadvise(2) system call. It is somewhat similar to 2011-11-04 04:02:50 +00:00
uuid mdoc: drop redundant .Pp and .LP calls 2010-10-08 12:40:16 +00:00
xdr Add a HISTORY section 2011-07-10 06:57:00 +00:00
yp Remove duplicate "in". 2011-03-01 11:47:51 +00:00
Makefile Add the BSD-licensed Citrus iconv to the base system with default off 2011-02-25 00:04:39 +00:00
Versions.def Add a FBSD_1.3 namespace for FreeBSD 10. 2011-10-10 15:42:33 +00:00