mirror of
https://github.com/opnsense/src.git
synced 2026-03-29 06:03:14 -04:00
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
144 lines
1.4 KiB
Text
144 lines
1.4 KiB
Text
/*
|
|
* $FreeBSD$
|
|
*/
|
|
|
|
FBSD_1.0 {
|
|
_Exit;
|
|
a64l;
|
|
abort;
|
|
abs;
|
|
atexit;
|
|
__cxa_atexit;
|
|
__cxa_finalize;
|
|
atof;
|
|
atoi;
|
|
atol;
|
|
atoll;
|
|
bsearch;
|
|
div;
|
|
__isthreaded;
|
|
exit;
|
|
getenv;
|
|
opterr;
|
|
optind;
|
|
optopt;
|
|
optreset;
|
|
optarg;
|
|
getopt;
|
|
getopt_long;
|
|
getopt_long_only;
|
|
suboptarg;
|
|
getsubopt;
|
|
grantpt;
|
|
ptsname;
|
|
unlockpt;
|
|
hcreate;
|
|
hdestroy;
|
|
hsearch;
|
|
heapsort;
|
|
imaxabs;
|
|
imaxdiv;
|
|
insque;
|
|
l64a;
|
|
l64a_r;
|
|
labs;
|
|
ldiv;
|
|
llabs;
|
|
lldiv;
|
|
lsearch;
|
|
lfind;
|
|
mergesort;
|
|
putenv;
|
|
qsort;
|
|
radixsort;
|
|
sradixsort;
|
|
rand_r;
|
|
srandom;
|
|
srandomdev;
|
|
initstate;
|
|
setstate;
|
|
random;
|
|
reallocf;
|
|
realpath;
|
|
remque;
|
|
setenv;
|
|
unsetenv;
|
|
strfmon;
|
|
strtoimax;
|
|
strtol;
|
|
strtoll;
|
|
strtonum;
|
|
strtoq;
|
|
strtoul;
|
|
strtoull;
|
|
strtoumax;
|
|
strtouq;
|
|
system;
|
|
tdelete;
|
|
tfind;
|
|
tsearch;
|
|
twalk;
|
|
};
|
|
|
|
FBSD_1.3 {
|
|
at_quick_exit;
|
|
atof_l;
|
|
atoi_l;
|
|
atol_l;
|
|
atoll_l;
|
|
quick_exit;
|
|
strtod_l;
|
|
strtof_l;
|
|
strtoimax_l;
|
|
strtol_l;
|
|
strtold_l;
|
|
strtoll_l;
|
|
strtoul_l;
|
|
strtoull_l;
|
|
strtoumax_l;
|
|
};
|
|
|
|
FBSD_1.4 {
|
|
atexit_b;
|
|
bsearch_b;
|
|
heapsort_b;
|
|
mergesort_b;
|
|
qsort_b;
|
|
hcreate_r;
|
|
hdestroy_r;
|
|
hsearch_r;
|
|
reallocarray;
|
|
};
|
|
|
|
FBSD_1.5 {
|
|
__cxa_thread_atexit;
|
|
__cxa_thread_atexit_impl;
|
|
abort_handler_s;
|
|
ignore_handler_s;
|
|
set_constraint_handler_s;
|
|
};
|
|
|
|
FBSD_1.6 {
|
|
ptsname_r;
|
|
qsort_s;
|
|
rand;
|
|
srand;
|
|
};
|
|
|
|
FBSD_1.7 {
|
|
bsort;
|
|
bsort_b;
|
|
bsort_r;
|
|
bsort_s;
|
|
clearenv;
|
|
qsort_r;
|
|
secure_getenv;
|
|
};
|
|
|
|
FBSDprivate_1.0 {
|
|
__system;
|
|
_system;
|
|
__libc_system;
|
|
__cxa_thread_call_dtors;
|
|
__libc_atexit;
|
|
};
|