freebsd-dev/include
Hans Petter Selasky 8dcf3a82c5 libc: Implement bsort(3) a bitonic type of sorting algorithm.
The bsort(3) algorithm works by swapping objects, similarly to qsort(3),
and does not require any significant amount of additional memory.

The bsort(3) algorithm doesn't suffer from the processing time issues
known the plague the qsort(3) family of algorithms, and is bounded by
a complexity of O(log2(N) * log2(N) * N), where N is the number of
elements in the sorting array. The additional complexity compared to
mergesort(3) is a fair tradeoff in situations where no memory may
be allocated.

The bsort(3) APIs are identical to those of qsort(3), allowing for
easy drop-in and testing.

The design of the bsort(3) algorithm allows for future parallell CPU
execution when sorting arrays. The current version of the bsort(3)
algorithm is single threaded. This is possible because fixed areas
of the sorting data is compared at a time, and can easily be divided
among different CPU's to sort large arrays faster.

Reviewed by:	gbe@, delphij@, pauamma_gundo.com (manpages)
Sponsored by:	NVIDIA Networking
Differential Revision:	https://reviews.freebsd.org/D36493
2023-04-19 14:04:22 +02:00
..
arpa arpa: garbage collect ns_newmsg/ns_rdata decls 2023-03-22 14:58:23 -04:00
gssapi Add META_MODE support. 2015-06-13 19:20:56 +00:00
i386 include/i386: fix release builds 2022-06-13 21:37:34 +01:00
protocols include: Fix typos 2023-02-22 11:52:57 -05:00
rpc include: Fix typos 2023-02-22 11:52:57 -05:00
rpcsvc Increase YPMAXRECORD to 16M to be compatible with Linux. 2019-08-12 20:27:33 +00:00
xlocale Remove 'All Rights Reserved' from xlocale FreeBSD Foundation copyrights 2021-12-16 14:29:12 -05:00
_ctype.h include: further adoption of SPDX licensing ID tags. 2017-11-20 19:45:28 +00:00
a.out.h include: further adoption of SPDX licensing ID tags. 2017-11-20 19:45:28 +00:00
ar.h include: further adoption of SPDX licensing ID tags. 2017-11-20 19:45:28 +00:00
assert.h include: further adoption of SPDX licensing ID tags. 2017-11-20 19:45:28 +00:00
bitstring.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
byteswap.h byteswap.h: Add a glibc/linux compatible byteswap.h 2023-01-20 16:37:39 -07:00
complex.h Implementations of cexpl() 2021-11-05 13:51:42 +02:00
cpio.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
ctype.h include: further adoption of SPDX licensing ID tags. 2017-11-20 19:45:28 +00:00
db.h include: further adoption of SPDX licensing ID tags. 2017-11-20 19:45:28 +00:00
dirent.h libc: Add strverscmp(3) and versionsort(3) 2022-08-25 03:29:03 +03:00
dlfcn.h Implement RTLD_DEEPBIND. 2020-05-15 11:58:01 +00:00
elf-hints.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
elf.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
endian.h linux: For better compatibility, provide compatible endian.h 2023-01-20 16:32:45 -07:00
err.h Avoid implicit gcc nonnull attribute in vwarnx(). 2018-01-28 19:37:30 +00:00
fmtmsg.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
fnmatch.h include: further adoption of SPDX licensing ID tags. 2017-11-20 19:45:28 +00:00
fstab.h include: further adoption of SPDX licensing ID tags. 2017-11-20 19:45:28 +00:00
fts.h include: further adoption of SPDX licensing ID tags. 2017-11-20 19:45:28 +00:00
ftw.h SPDX: license IDs for some ISC-related files. 2017-12-08 15:57:29 +00:00
getopt.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
glob.h include: further adoption of SPDX licensing ID tags. 2017-11-20 19:45:28 +00:00
grp.h include: further adoption of SPDX licensing ID tags. 2017-11-20 19:45:28 +00:00
gssapi.h
hesiod.h SPDX: license IDs for some ISC-related files. 2017-12-08 15:57:29 +00:00
iconv.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
ieeefp.h
ifaddrs.h SPDX: mostly fixes to previous changes. 2017-12-13 16:13:17 +00:00
inttypes.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
iso646.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
kenv.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
langinfo.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
libgen.h Remove basename_r(3). 2017-12-08 22:06:18 +00:00
limits.h Reduce NL_ARGMAX to 4096 to match Linux. 2018-10-04 21:55:58 +00:00
link.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
locale.h include: further adoption of SPDX licensing ID tags. 2017-11-20 19:45:28 +00:00
Makefile include: Remove no longer existing netgraph/atm 2023-03-09 21:39:41 +00:00
Makefile.depend Update/fix Makefile.depend for userland 2023-04-18 17:14:23 -07:00
malloc_np.h Add memalign(3), mostly for glibc compatibility. 2020-05-14 21:12:08 +00:00
malloc.h Make include/malloc.h usable again. 2020-05-12 18:17:57 +00:00
memory.h include: further adoption of SPDX licensing ID tags. 2017-11-20 19:45:28 +00:00
mk-osreldate.sh Move to using newvers -c instead of VARS_ONLY=1 2019-05-23 17:19:05 +00:00
monetary.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
mpool.h include: further adoption of SPDX licensing ID tags. 2017-11-20 19:45:28 +00:00
mqueue.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
ndbm.h include: further adoption of SPDX licensing ID tags. 2017-11-20 19:45:28 +00:00
netconfig.h netconfig.h: sync with upstream. 2017-11-27 17:18:31 +00:00
netdb.h netdb.h: re-enable EAI_ADDRFAMILY, EAI_NODATA 2022-11-02 11:03:30 -05:00
nl_types.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
nlist.h include: further adoption of SPDX licensing ID tags. 2017-11-20 19:45:28 +00:00
nss.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
nsswitch.h include: Fix typos 2023-02-22 11:52:57 -05:00
paths.h Add search of LOCALBASE/share/calendar for calendars supplied by a port. 2020-10-23 09:22:23 +00:00
printf.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
proc_service.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
pthread_np.h Revert r361770 "Add pthread_getname_np() and pthread_setname_np() aliases" for now. 2020-06-04 09:06:03 +00:00
pthread.h Reduce code duplication in machine/_types.h 2021-06-14 16:30:16 +01:00
pwd.h include: further adoption of SPDX licensing ID tags. 2017-11-20 19:45:28 +00:00
ranlib.h include: further adoption of SPDX licensing ID tags. 2017-11-20 19:45:28 +00:00
readpassphrase.h SPDX: license IDs for some ISC-related files. 2017-12-08 15:57:29 +00:00
regex.h <regex.h>: reserve a regcomp field for REG_POSIX 2020-07-31 12:40:31 +00:00
res_update.h SPDX: license IDs for some ISC-related files. 2017-12-08 15:57:29 +00:00
resolv.h SPDX: license IDs for some ISC-related files. 2017-12-08 15:57:29 +00:00
runetype.h Remove __NO_TLS. 2021-02-23 20:08:10 +02:00
sched.h sched.h: Use pid_t type for pid argument 2021-12-17 08:22:21 +02:00
search.h Improve typing of POSIX search tree functions. 2016-10-13 18:25:40 +00:00
semaphore.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
setjmp.h include: further adoption of SPDX licensing ID tags. 2017-11-20 19:45:28 +00:00
signal.h Add sigsetop extensions commonly found in musl libc and glibc 2019-12-12 01:41:55 +00:00
spawn.h posix_spawn: add closefrom non-portable action 2021-11-30 03:43:54 +02:00
stab.h include: further adoption of SPDX licensing ID tags. 2017-11-20 19:45:28 +00:00
stdalign.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
stdbool.h Remove obsolete check for GCC < 3 and support for Intel Compiler 2020-10-24 23:21:06 +00:00
stddef.h include: further adoption of SPDX licensing ID tags. 2017-11-20 19:45:28 +00:00
stdio.h libc: provide fputc_unlocked 2020-02-02 19:45:12 +00:00
stdlib.h libc: Implement bsort(3) a bitonic type of sorting algorithm. 2023-04-19 14:04:22 +02:00
stdnoreturn.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
string.h libc: Add strverscmp(3) and versionsort(3) 2022-08-25 03:29:03 +03:00
stringlist.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
strings.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
sysexits.h include: further adoption of SPDX licensing ID tags. 2017-11-20 19:45:28 +00:00
tar.h include: further adoption of SPDX licensing ID tags. 2017-11-20 19:45:28 +00:00
termios.h Add tcgetwinsize(3) and tcsetwinsize(3) to termios 2020-12-25 20:43:09 +02:00
tgmath.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
time.h libc: Remove prototype and documentation for tzsetwall(). 2023-03-07 17:20:49 +00:00
timeconv.h include: further adoption of SPDX licensing ID tags. 2017-11-20 19:45:28 +00:00
timers.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
ttyent.h Improve missing tty handling in init(8). This removes a check that did 2018-02-27 10:54:15 +00:00
uchar.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
ulimit.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
unistd.h swapoff: add one more variant of the syscall 2021-12-09 02:48:46 +02:00
utime.h include: further adoption of SPDX licensing ID tags. 2017-11-20 19:45:28 +00:00
utmpx.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
uuid.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
varargs.h We don't support gcc < 4.2.1, so varargs.h now is just #error 2018-02-12 14:48:14 +00:00
wchar.h libc: add mempcpy(3) and wmempcpy(3) 2021-07-15 19:40:28 +03:00
wctype.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
wordexp.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00
xlocale.h include: General further adoption of SPDX licensing ID tags. 2017-11-25 17:09:43 +00:00