newlib-cygwin/newlib/libc
Alexander V. Chernikov b948693357 Convert route caching to nexthop caching.
This change is build on top of nexthop objects introduced in r359823.

Nexthops are separate datastructures, containing all necessary information
 to perform packet forwarding such as gateway interface and mtu. Nexthops
 are shared among the routes, providing more pre-computed cache-efficient
 data while requiring less memory. Splitting the LPM code and the attached
 data solves multiple long-standing problems in the routing layer,
 drastically reduces the coupling with outher parts of the stack and allows
 to transparently introduce faster lookup algorithms.

Route caching was (re)introduced to minimise (slow) routing lookups, allowing
 for notably better performance for large TCP senders. Caching works by
 acquiring rtentry reference, which is protected by per-rtentry mutex.
 If the routing table is changed (checked by comparing the rtable generation id)
 or link goes down, cache record gets withdrawn.

Nexthops have the same reference counting interface, backed by refcount(9).
This change merely replaces rtentry with the actual forwarding nextop as a
 cached object, which is mostly mechanical. Other moving parts like cache
 cleanup on rtable change remains the same.

Differential Revision:	https://reviews.freebsd.org/D24340
2022-07-11 11:52:46 +02:00
..
argz newlib: libc: merge build up a directory 2022-03-16 21:18:25 -04:00
ctype newlib: libc: merge build up a directory 2022-03-16 21:18:25 -04:00
errno newlib: libc: merge build up a directory 2022-03-16 21:18:25 -04:00
iconv iconv: Fix EL/IX level 2 handling 2022-03-21 11:32:59 +01:00
include cdefs.h: Remove redundant #ifdefs 2022-07-11 11:52:46 +02:00
locale newlib: libc: merge build up a directory 2022-03-16 21:18:25 -04:00
machine Remove _global_impure_ptr indirection 2022-05-04 17:31:04 +02:00
misc Remove __sinit_locks / __sinit_recursive_mutex 2022-05-13 12:31:56 +02:00
posix Cygwin: simplify some function names 2022-05-29 17:45:52 -04:00
reent Use global stdio streams for all configurations 2022-06-10 20:13:52 +02:00
search newlib: libc: merge build up a directory 2022-03-16 21:18:25 -04:00
signal newlib: libc: merge build up a directory 2022-03-16 21:18:25 -04:00
ssp newlib: libc: merge build up a directory 2022-03-16 21:18:25 -04:00
stdio Cygwin: stdio: don't try again to read after EOF 2022-07-04 18:55:08 -04:00
stdio64 newlib: libc: merge build up a directory 2022-03-16 21:18:25 -04:00
stdlib Use global atexit data for all configurations 2022-05-18 07:45:09 +02:00
string newlib: libc: merge build up a directory 2022-03-16 21:18:25 -04:00
sys Convert route caching to nexthop caching. 2022-07-11 11:52:46 +02:00
syscalls newlib: libc: merge build up a directory 2022-03-16 21:18:25 -04:00
time Modify tzset_r.c to handle errors 2022-05-27 11:05:11 -04:00
unix newlib: libc: merge build up a directory 2022-03-16 21:18:25 -04:00
xdr newlib: libc: merge build up a directory 2022-03-16 21:18:25 -04:00
Makefile.inc Silence xsltproc when writing manpages 2022-05-04 17:05:52 -04:00
Makefile.unidata cleanup Unicode data files after generating updated tables 2021-11-16 11:24:29 +01:00
acinclude.m4 newlib: drop phoenix support 2022-03-28 23:17:06 -04:00
libc.in.xml Generate manpages for functions in chapter sys.tex 2022-05-04 17:06:19 -04:00
libc.texi newlib: libc: include all chapters all the time in the manual 2022-02-04 19:39:09 -05:00
sys.tex Don't include stdio64 functions in reentrant syscalls menu when not bulding stdio64. 2015-08-03 09:54:33 +01:00