opnsense-src/sys
Doug Moore 6f309b9d56 log2: move log2 functions from linuxkpi to libkern
Linux has a header file that defines an ilog2 function and some simple
functions/macros that use it: roundup_pow_of_two, is_power_of_2,
rounddown_pow_of_two, and order_base_2.  This change moves three of
those simple functions (all but is_power_of_2) from linuxkpi to
libkern.  It also deletes a few implementations of these functions
that have previously been copied into code for various device drivers,
so that they can use the libkern version.  The is_power_of_2 macro was
not moved because powerof2 in param.h provides almost the same service
already (except that they disagree about whether 0 is a power of two).

Since the linux definitions of these functions were copied into
FreeBSD 11 years ago, linux has improved them, and this change
provides those improvements.  In particular, a giant table of log
values for evaluating ilog2 for constant values is no longer
necessary.

Reviewed by:	alc, markj (previous version)
Differential Revision:	https://reviews.freebsd.org/D45536

(cherry picked from commit c8b0c33b03ac072413b27bed2bdae2ae27426f3a)
2025-02-10 04:29:23 -06:00
..
amd64 libkern: add ilog2 macro 2025-02-10 04:27:12 -06:00
arm atomics: Constify loads 2025-01-16 19:06:53 +01:00
arm64 libkern: add ilog2 macro 2025-02-10 04:27:12 -06:00
bsm
cam cam: Add 3e/3 as a fatal code 2025-01-24 15:34:19 -07:00
cddl dtrace: Use size_t instead of uintptr_t to represent buffer offsets 2025-02-07 14:46:53 +00:00
compat log2: move log2 functions from linuxkpi to libkern 2025-02-10 04:29:23 -06:00
conf ng_ubt(4): do not attach Realtek 87XX/88XX adaptors in bootloader mode. 2024-12-22 06:34:09 +03:00
contrib zfs: merge openzfs/zfs@e269af1b3 (zfs-2.2-release) into stable/14 2024-12-12 13:22:56 +01:00
crypto openssl: Import OpenSSL 3.0.15. 2024-09-27 20:50:47 -07:00
ddb
dev log2: move log2 functions from linuxkpi to libkern 2025-02-10 04:29:23 -06:00
dts
fs nfsd: Add support for the NFSv4.2 change_attr_type attribute 2025-01-31 19:23:15 -08:00
gdb
geom gvinum: Emit deprecation notice upon drive tasting 2025-02-04 08:35:32 -05:00
gnu
i386 libkern: add ilog2 macro 2025-02-10 04:27:12 -06:00
isa isa: Use a bus_child_deleted method to free ivars for children 2024-11-30 21:46:06 -05:00
kern thread: Add a missing include of asan.h 2025-02-07 14:46:53 +00:00
kgssapi
libkern
modules dtrace: Build systrace_freebsd32 only if COMPAT_FREEBSD32 is configured 2025-01-30 15:23:04 +00:00
net ifnet: Detach BPF descriptors on interface vmove event 2025-02-07 02:37:01 +08:00
net80211 net80211: Fix a typo in a source code comment 2025-01-29 06:56:16 +01:00
netgraph ng_hci: add support for Bluetooth Secure Simple Pairing 2025-02-09 00:36:04 +00:00
netinet TCP BBR: remove dead code 2025-02-05 11:04:01 +01:00
netinet6 icmp: improve INVARIANTS check 2025-02-05 08:58:54 +01:00
netipsec netipsec: Pass the right mbuf up 2025-01-20 00:26:35 +00:00
netlink netlink: restore the ability to delete PINNED routes 2025-01-21 14:37:26 +03:00
netpfil pf: Force logging if pf_create_state() fails 2025-01-30 15:28:15 +00:00
netsmb netsmb: Stop checking for failures from malloc(M_WAITOK) 2024-09-30 12:44:16 +08:00
nfs
nfsclient
nfsserver
nlm
ofed ibcore: Mark write-only variables 2024-07-15 12:28:53 +00:00
opencrypto ktls: Remove the socket parameter to ktls_ocf_try() 2024-07-23 09:01:30 -04:00
powerpc libkern: add ilog2 macro 2025-02-10 04:27:12 -06:00
riscv atomics: Constify loads: riscv: Convert missed atomic_load_acq_64() 2025-01-27 19:19:52 +01:00
rpc nfs, rpc: Ensure kernel credentials have at least one group 2024-11-15 11:47:43 +01:00
security audit/audit.c: fix typo KERNEL_PANICED->KERNEL_PANICKED 2025-02-08 02:26:56 +02:00
sys log2: move log2 functions from linuxkpi to libkern 2025-02-10 04:29:23 -06:00
teken
tests tests: Stop checking for failures from malloc(M_WAITOK) 2024-09-30 12:44:18 +08:00
tools vnode: Make the vop_vector reference a pointer to const 2024-12-03 01:02:10 +00:00
ufs Defer the January 19, 2038 date limit in UFS1 filesystems to February 7, 2106 2025-02-06 11:25:09 -08:00
vm thread: Simplify sanitizer integration with thread creation 2025-02-07 14:46:53 +00:00
x86 hwpstate_amd: add amd pstate for zen5 2025-01-30 15:23:23 +00:00
xdr rpc: Fix the definition of xdr_void() 2024-11-05 01:05:26 +00:00
xen
Makefile
README.md

FreeBSD Kernel Source:

This directory contains the source files and build glue that make up the FreeBSD kernel and its modules, including both original and contributed software.

Kernel configuration files are located in the conf/ subdirectory of each architecture. GENERIC is the configuration used in release builds. NOTES contains documentation of all possible entries. LINT is a compile-only configuration used to maximize build coverage and detect regressions.

Documentation:

Source code documentation is maintained in a set of man pages, under section 9. These pages are located in share/man/man9, from the top-level of the src tree. Consult intro(9) for an overview of existing pages.

Some additional high-level documentation of the kernel is maintained in the Architecture Handbook.

Source Roadmap:

Directory Description
amd64 AMD64 (64-bit x86) architecture support
arm 32-bit ARM architecture support
arm64 64-bit ARM (AArch64) architecture support
cam Common Access Method storage subsystem - cam(4) and ctl(4)
cddl CDDL-licensed optional sources such as DTrace
conf kernel build glue
compat Linux compatibility layer, FreeBSD 32-bit compatibility
contrib 3rd-party imported software such as OpenZFS
crypto crypto drivers
ddb interactive kernel debugger - ddb(4)
fs most filesystems, excluding UFS, NFS, and ZFS
dev device drivers and other arch independent code
gdb kernel remote GDB stub - gdb(4)
geom GEOM framework - geom(4)
i386 i386 (32-bit x86) architecture support
kern main part of the kernel
libkern libc-like and other support functions for kernel use
modules kernel module infrastructure
net core networking code
net80211 wireless networking (IEEE 802.11) - net80211(4)
netgraph graph-based networking subsystem - netgraph(4)
netinet IPv4 protocol implementation - inet(4)
netinet6 IPv6 protocol implementation - inet6(4)
netipsec IPsec protocol implementation - ipsec(4)
netpfil packet filters - ipfw(4), pf(4), and ipfilter(4)
opencrypto OpenCrypto framework - crypto(7)
powerpc PowerPC/POWER (32 and 64-bit) architecture support
riscv 64-bit RISC-V architecture support
security security facilities - audit(4) and mac(4)
sys kernel headers
tests kernel unit tests
ufs Unix File System - ffs(7)
vm virtual memory system
x86 code shared by AMD64 and i386 architectures