1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-13 10:02:38 +00:00
freebsd/sys/sys
Doug Moore 5d91386826 rb_tree: avoid extra reads in rebalancing
In RB_INSERT_COLOR and RB_REMOVE_COLOR, avoid reading a parent pointer
from memory, and then reading the left-color bit from memory, and then
reading the right-color bit from memory, since they're all in the same
field. The compiler can't infer that only the first read is really
necessary, so write the code in a way so that it doesn't have to.

Drop RB_RED_LEFT and RB_RED_RIGHT macros that reach into memory to get
those bits.  Drop RB_COLOR, the only thing left using RB_RED_LEFT and
RB_RED_RIGHT after the other changes, and go straight to DIAGNOSTIC
code in subr_stats to implement RB_COLOR for its single, dubious use
there.

Reviewed by:	alc
MFC after:	3 weeks
Differential Revision:	https://reviews.freebsd.org/D36353
2022-08-29 11:11:31 -05:00
..
disk geom: Add HiFive boot partitions 2022-01-26 10:54:45 -05:00
_atomic64e.h
_atomic_subword.h
_bitset.h sys/_bitset.h: Fix fall-out from commit 5e04571cf3 2021-12-08 08:52:56 +01:00
_blockcount.h
_bus_dma.h
_callout.h sys: make callout.h self-contained 2021-12-17 12:38:34 +01:00
_clock_id.h clock_id: These symbols weren't in 4.4BSD, adjust copyright 2021-08-02 15:50:32 -06:00
_cpuset.h sys/sys/cpuset.h 2021-12-30 13:14:43 +01:00
_domainset.h sys/bitset.h: reduce visibility of BIT_* macros 2021-12-05 23:00:25 +01:00
_endian.h Consolidate machine/endian.h definitions 2021-03-26 19:00:22 -03:00
_eventhandler.h eventhandler: Remove a double world in two comments 2022-04-09 09:13:38 +02:00
_ffcounter.h
_iovec.h
_lock.h
_lockmgr.h lockmgr: shrink struct lock by 8 bytes on LP64 2021-02-15 13:57:25 +00:00
_mutex.h
_null.h
_pctrie.h
_pthreadtypes.h
_rangeset.h Remove "All Rights Reserved" from FreeBSD Foundation sys/ copyrights 2021-08-08 10:42:24 -04:00
_rmlock.h
_rwlock.h
_semaphore.h
_seqc.h
_sigset.h
_smr.h
_sockaddr_storage.h
_stack.h
_stdarg.h <sys/_stdarg.h>: Fix indentation after removing __GNUCLIKE checks. 2022-04-12 10:12:13 -07:00
_stdint.h
_sx.h
_task.h
_termios.h termios: add more speeds 2021-03-18 10:44:01 +00:00
_timespec.h
_timeval.h
_tls_variant_i.h Add <machine/tls.h> header to hold MD constants and helpers for TLS. 2021-12-09 13:17:13 -08:00
_types.h Remove checks for __GNUCLIKE macros for varargs. 2022-04-12 10:06:00 -07:00
_ucontext.h
_uio.h
_umtx.h Revert most of ce42e79310 2021-07-28 13:21:12 +03:00
_unrhdr.h
_winsize.h Add tcgetwinsize(3) and tcsetwinsize(3) to termios 2020-12-25 20:43:09 +02:00
aac_ioctl.h
abi_compat.h
acct.h sys/acct.h: Add sys/types.h include 2021-11-24 11:26:44 -07:00
acl.h libc/posix1e: Add acl_extended_file_np() function. 2021-08-27 11:52:26 +03:00
agpio.h
aio.h lio_listio(2): Allow LIO_READV and LIO_WRITEV. 2021-08-22 23:00:42 +12:00
alq.h sys/alq.h: Kernel only file, mark as such 2021-11-24 11:26:45 -07:00
apm.h
arb.h
asan.h kasan: Create a shadow for the bootstack prior to hammer_time() 2022-06-15 11:39:10 -04:00
assym.h genoffset: simplify and rewrite in sh 2021-07-28 13:50:09 -06:00
ata.h add and use defintions for ATA power modes 2022-01-11 15:41:38 +02:00
atomic_common.h atomic: Add plain atomic_load/store_bool() 2022-08-09 18:34:01 -04:00
atomic_san.h Only define sanitizer wrappers for atomic fences once. 2021-09-15 09:03:17 -07:00
auxv.h
backlight.h sys/backlight.h: include sys/types.h 2021-11-24 11:26:45 -07:00
bio.h bio: Add the speedup flags to PRINT_BIO_FLAGS 2022-04-24 14:01:08 -06:00
bitcount.h sys: Extract __bitcount* from sys/types.h to new sys/bitcount.h 2022-08-18 02:46:27 +01:00
bitset.h Make CPU_SET macros compliant with other implementations 2021-12-30 12:20:32 +01:00
bitstring.h bitstring: fix ff_area() when start!=0 2022-05-10 11:53:52 -05:00
blist.h
blockcount.h
boot.h
boottrace.h boottrace: annotate init and shutdown utilities 2022-02-21 20:16:07 -04:00
buf_ring.h Minor style tidy: if( -> if ( 2021-04-18 11:19:15 -06:00
buf.h buf.h: Fix declaration of unmapped_buf 2022-08-16 15:39:03 -04:00
bufobj.h
bus_dma_internal.h
bus_dma.h bus_dma: Deduplicate locking helper functions. 2022-01-05 13:50:40 -08:00
bus_san.h Only define sanitizer wrappers for unsized bus space operations once. 2021-09-15 09:03:17 -07:00
bus.h *DRIVER_MODULE*: Remove the compat shims to accept the devclass argument. 2022-08-23 09:38:09 -07:00
busdma_bufalloc.h
callout.h callout: Remove the CS_EXECUTING flag 2022-03-23 12:37:02 -04:00
caprights.h Remove "All Rights Reserved" from FreeBSD Foundation sys/ copyrights 2021-08-08 10:42:24 -04:00
capsicum.h
cdefs.h cdefs: Add some notes about the different versions of POSIX 2022-07-25 21:34:34 -06:00
cdio.h
cdrio.h
cfictl.h
chio.h
ck.h sys/ck.h: Add an include guard 2021-03-21 11:55:52 -07:00
clock.h
cnv.h namespace nv names, version libnv and libnvpair library symbols 2022-07-21 18:35:23 +02:00
compressor.h
condvar.h
conf.h Retire clone_drain_lock 2022-08-20 09:44:05 +00:00
cons.h Revert "Fill in cn_name in struct consdev." 2022-07-23 22:44:19 +01:00
consio.h
copyright.h Welcome 2022, update copyrights. 2022-01-01 09:49:49 -07:00
counter.h
coverage.h
cpu.h
cpuctl.h
cpuset.h cpuset: Fix the KASAN and KMSAN builds 2022-05-20 10:34:25 -04:00
csan.h
ctf.h ctf: Add v3 support to CTF tools, ctf{convert,dump,merge} 2022-03-07 10:43:19 -05:00
ctype.h
devctl.h devctl.h: Spelling typo 2021-11-24 02:37:51 -07:00
devicestat.h
devmap.h
dirent.h
disk_zone.h
disk.h Remove 12.x ABI compat for kernel dump ioctls 2022-04-15 12:06:05 -03:00
disklabel.h
diskmbr.h
dkstat.h
dnv.h namespace nv names, version libnv and libnvpair library symbols 2022-07-21 18:35:23 +02:00
domain.h domains: use struct domain as argument 2022-08-26 10:35:35 -07:00
domainset.h sys/bitset.h: reduce visibility of BIT_* macros 2021-12-05 23:00:25 +01:00
dtrace_bsd.h dtrace: stop using eventhandlers for the part compiled into the kernel 2020-11-23 18:27:21 +00:00
dvdio.h
efi.h efi: Create a define for memory descriptor version 2022-08-26 11:40:42 -06:00
efiio.h EFI RT: resurrect EFIIOC_GET_TABLE 2021-07-03 20:06:48 +03:00
elf32.h sys: Add definitions for RELR relative relocation format 2021-10-17 02:37:13 +03:00
elf64.h sys: Add definitions for RELR relative relocation format 2021-10-17 02:37:13 +03:00
elf_common.h Add ELFCOMPRESS_ZSTD ELF compression constant 2022-07-25 10:01:54 -04:00
elf_generic.h sys: Add definitions for RELR relative relocation format 2021-10-17 02:37:13 +03:00
elf.h
endian.h endian.h: Use the __bswap* versions 2021-09-20 22:02:35 -06:00
epoch.h Introduce and use the NET_EPOCH_DRAIN_CALLBACKS() macro 2022-07-29 21:21:10 +02:00
errno.h
eui64.h
event.h kqueue: retire knlist_init_rw_reader() 2022-08-20 21:17:39 -08:00
eventfd.h Expose eventfd in the native API/ABI using a new __specialfd syscall 2020-12-27 12:57:26 +02:00
eventhandler.h protosw: retire pr_drain and use EVENTHANDLER(9) directly 2022-08-17 11:50:31 -07:00
eventvar.h
exec.h Rework how shared page related data is stored 2022-07-18 16:27:32 +02:00
extattr.h
fail.h
fbio.h fb: Add new FBTYPE_EFIFB 2021-12-06 11:28:03 +01:00
fcntl.h fcntl(2): add F_KINFO operation 2021-12-06 22:18:09 +02:00
fdcio.h
file.h vfs: fix memory leak on lookup with fds with ioctl caps 2022-04-02 12:09:07 +00:00
filedesc.h file: Move code to share fdtol structs into kern_descrip.c 2022-08-04 09:39:25 -04:00
filio.h
firmware.h firmware(9): extend firmware_get() by a "no warn" flag. 2021-01-27 13:51:26 +00:00
fnv_hash.h
font.h Remove "All Rights Reserved" from FreeBSD Foundation sys/ copyrights 2021-08-08 10:42:24 -04:00
gmon.h
gpio.h Fix build of stand/usb . 2021-04-12 16:13:33 +02:00
gpt.h
gsb_crc32.h tests/sys/kern/crc32: Check for SSE4.2 before using it 2021-02-02 09:53:39 +00:00
gtaskqueue.h Import kernel WireGuard support 2020-11-29 19:38:03 +00:00
hash.h
hhook.h
iconv.h
imgact_aout.h
imgact_binmisc.h
imgact_elf.h exec: Remove the stack gap implementation 2022-01-17 16:11:54 -05:00
imgact.h Implement shared page address randomization 2022-07-18 16:27:37 +02:00
interrupt.h Collapse interrupt thread priorities. 2022-07-14 13:14:33 -07:00
intr.h intrng: Use less confusing return value for intr_pic_add_handler 2022-01-03 17:08:44 +00:00
ioccom.h ioccom: define ioctl cmd value that can never be valid 2021-04-30 17:43:45 +03:00
ioctl_compat.h
ioctl.h
iov_schema.h
iov.h
ipc.h
ipmi.h ipmi: correctly handle ipmb requests 2022-07-04 13:00:42 +08:00
jail.h jail: network epoch protection for IP address lists 2021-12-26 10:45:50 -08:00
joystick.h
kassert.h Add MPASSERT() and MPPASS() macros 2022-06-29 21:31:47 +03:00
kbio.h
kcov.h
kdb.h kdb: set kdb_why when entered via reboot and panic 2022-04-12 10:34:40 +01:00
kenv.h kenv: allow listing of static kernel environments 2021-07-18 23:06:19 -05:00
kern_prefetch.h
kernel.h Move KHELP_DECLARE_MOD_UMA later in the boot 2021-11-12 18:56:58 +00:00
kerneldump.h livedump: add event handler hooks 2022-04-05 15:35:05 -03:00
khelp.h
kobj.h newbus: style nit: use while<space>(0) 2021-04-17 23:46:18 -06:00
kpilite.h Use atomic_interrupt_fence() instead of bare __compiler_membar() 2021-02-28 01:27:29 +02:00
ksem.h
kthread.h kthread(9): Add a missing space 2022-06-04 20:15:07 +02:00
ktls.h ktls: Add full support for TLS RX offloading via network interface. 2022-06-07 12:58:09 +02:00
ktr_class.h
ktr.h KTR: Add CTR() and TR() macros which accept a variable number of arguments. 2022-04-12 14:52:25 -07:00
ktrace.h ktrace: Increase precision of timestamps. 2022-07-16 12:46:12 +03:00
libkern.h Revert "wpa: Import wpa_supplicant/hostapd commit 14ab4a816" 2021-12-02 14:45:04 -08:00
limits.h
link_aout.h
link_elf.h link_elf.h: cleanup struct link_map definition, remove mips-specific field 2022-01-06 06:14:17 +02:00
linker_set.h Remove checks for <sys/cdefs.h> being included. 2022-04-12 10:06:18 -07:00
linker.h link_elf_obj: Invoke fini callbacks 2021-07-29 09:46:25 -04:00
lock_profile.h lockprof: pass lock type as an argument instead of reading the spin flag 2021-05-23 17:55:27 +00:00
lock.h
lockf.h lockf: remove lf_inode from struct lockf_entry 2022-04-10 00:43:53 +03:00
lockmgr.h
lockstat.h lockprof: pass lock type as an argument instead of reading the spin flag 2021-05-23 17:55:27 +00:00
loginclass.h
mac.h
malloc.h Remove bzero declaration 2021-08-23 18:38:05 +00:00
mbuf.h mbuf: Don't support PAGE_SIZE < 4K 2022-08-24 18:34:07 +01:00
mchain.h
md4.h
md5.h
mdioctl.h md: Add MD_MUSTDEALLOC support 2021-09-11 20:04:52 +08:00
memdesc.h
memrange.h Add new vnode dumper to support live minidumps 2022-04-05 15:35:05 -03:00
mman.h jail: Remove a prison's shared memory when it dies 2022-06-29 10:47:39 -07:00
module_khelp.h Move KHELP_DECLARE_MOD_UMA later in the boot 2021-11-12 18:56:58 +00:00
module.h modules: increase MAXMODNAME and provide backward compat 2021-12-09 18:09:53 +00:00
mount.h mount: revert the active vnode reporting feature 2022-06-15 07:24:55 -07:00
mouse.h
mpt_ioctl.h
mqueue.h
msan.h kmsan: Export kmsan_mark_mbuf() and kmsan_mark_bio() 2021-08-11 16:33:41 -04:00
msg.h
msgbuf.h Make msgbuf_peekbytes() not return leading zeroes. 2021-12-10 23:35:53 -05:00
mtio.h
mutex.h Wrap mutex(9), rwlock(9) and sx(9) macros into __extension__ ({}) 2021-10-27 18:58:36 -07:00
namei.h vfs: fix memory leak on lookup with fds with ioctl caps 2022-04-02 12:09:07 +00:00
nlist_aout.h
nv_namespace.h libnv: bump library version 2022-07-22 00:23:08 +02:00
nv.h namespace nv names, version libnv and libnvpair library symbols 2022-07-21 18:35:23 +02:00
osd.h
param.h mbuf: Don't support PAGE_SIZE < 4K 2022-08-24 18:34:07 +01:00
pciio.h pci: Add an ioctl to perform I/O to BARs 2021-08-14 10:59:03 -04:00
pcpu.h Minor style cleanup 2021-04-18 11:14:17 -06:00
pctrie.h
physmem.h
pidctrl.h
pipe.h pipe: change pipemapping cnt/pos to u_int 2022-08-17 14:20:09 +00:00
pmc.h System wide and NUMA domain wide counters support. PMC classes for ARM DMC-620 and CMN-600. 2022-06-26 08:31:03 +03:00
pmckern.h
pmclog.h Add missing structs to pmclog_entry 2021-01-05 10:03:05 +00:00
poll.h poll(2): Add POLLRDHUP. 2021-04-28 23:00:31 +12:00
posix4.h
power.h Remove POWER_PM_TYPE_APM. It's now unused. 2021-10-18 08:41:17 -06:00
priority.h Reclaim unused ithread priorities for user time-sharing threads. 2022-07-14 13:14:58 -07:00
priv.h ovpn: Introduce OpenVPN DCO support 2022-06-28 11:33:10 +02:00
prng.h
proc.h Remove TDF_DOING_SA 2022-08-20 20:34:30 +03:00
procctl.h procctl(2): Add PROC_WXMAP_CTL/STATUS 2021-09-17 15:42:01 +03:00
procdesc.h
procfs.h
protosw.h protosw: refactor protosw and domain static declaration and load 2022-08-17 11:50:32 -07:00
ptio.h
ptrace.h syscallarg_t: Add a type for system call arguments 2022-03-28 19:43:03 +01:00
qmath.h Minor style cleanup 2021-04-18 11:14:17 -06:00
queue.h sys/queue.h: move trashing from SLIST_REMOVE to REMOVE_AFTER, REMOVE_HEAD 2021-12-15 13:28:33 +02:00
racct.h AST: rework 2022-08-02 21:11:09 +03:00
random.h Add support for getting early entropy from UEFI 2022-02-17 13:01:11 -08:00
rangelock.h
rangeset.h Remove "All Rights Reserved" from FreeBSD Foundation sys/ copyrights 2021-08-08 10:42:24 -04:00
rctl.h
reboot.h
refcount.h Allow sys/refcount.h to be used by standalone builds. 2020-12-07 09:21:06 +00:00
reg.h <sys/reg.h>: Add ELF32_REGSET. 2022-03-23 13:33:06 -07:00
regression.h
resource.h
resourcevar.h Add lim_cowsync, similar to crcowsync 2022-02-11 11:44:07 +00:00
rman.h
rmlock.h rms: add rms_assert_rlock_ok 2022-08-23 19:15:48 +00:00
rtprio.h
runq.h
rwlock.h Wrap mutex(9), rwlock(9) and sx(9) macros into __extension__ ({}) 2021-10-27 18:58:36 -07:00
sbuf.h Export sbuf_drain to orchestrate lock and drain action 2021-03-31 19:17:37 +02:00
sched.h Add sched_ithread_prio to set the base priority of an interrupt thread. 2022-07-14 13:13:10 -07:00
sdt.h
select.h
selinfo.h
sem.h
sema.h
seqc.h seqc: rename seqc_consistent_nomb to seqc_consistent_no_fence 2022-02-15 17:51:07 +00:00
serial.h
sf_buf.h
sglist.h sglist: Add sglist_append_single_mbuf(). 2021-05-25 16:59:18 -07:00
shm.h
sigio.h
signal.h arm64: Enable the floating-point exception traps 2022-05-19 19:53:56 +03:00
signalvar.h ksiginfo_alloc(): change to directly take M_WAITOK/NOWAIT flags 2022-08-20 20:33:17 +03:00
sleepqueue.h Allow sleepq_signal() to drop the lock. 2021-06-25 14:12:21 -04:00
slicer.h
smp.h smp.h: make sign conversion explicit 2022-01-02 08:59:21 +01:00
smr_types.h
smr.h
sndstat.h sndstat: nvlist schema and API definition changes 2021-04-21 16:19:15 +08:00
snoop.h
sockbuf.h unix/dgram: smart socket buffers for one-to-many sockets 2022-06-24 09:09:11 -07:00
socket.h netlink: add AF_NETLINK / PF_NETLINK definitions 2022-08-14 09:22:33 +00:00
socketvar.h tcp: utilize new solisten_clone() and solisten_enqueue() 2022-08-10 11:09:34 -07:00
sockio.h Kernel-side infrastructure to implement nvlist-based set/get ifcaps 2022-05-24 23:59:32 +03:00
sockopt.h
soundcard.h Fix a few typos in comments 2021-03-13 16:37:28 +01:00
specialfd.h Expose eventfd in the native API/ABI using a new __specialfd syscall 2020-12-27 12:57:26 +02:00
spigenio.h
stack.h Minor style cleanup 2021-04-18 11:14:17 -06:00
stat.h
stats.h
statvfs.h
stdatomic.h sys/stdatomic.h: be nicer to c++ 2022-03-28 03:16:02 +03:00
stddef.h Reduce code duplication in machine/_types.h 2021-06-14 16:30:16 +01:00
stdint.h
sx.h Wrap mutex(9), rwlock(9) and sx(9) macros into __extension__ ({}) 2021-10-27 18:58:36 -07:00
syscall.h Regen 2021-12-09 02:49:10 +02:00
syscall.mk Regen 2021-12-09 02:49:10 +02:00
syscallsubr.h Finish cpuset_getaffinity() after f35093f8 2022-05-28 20:53:08 +03:00
sysctl.h Add sysctl KERN_LOCKF 2022-04-10 00:43:53 +03:00
sysent.h Rework how shared page related data is stored 2022-07-18 16:27:32 +02:00
syslimits.h Remove checks for __CC_SUPPORTS_WARNING assuming it is always true. 2022-04-12 10:06:13 -07:00
syslog.h libc/syslog: fully deprecate and don't try to open "/dev/log" 2022-06-24 09:09:11 -07:00
sysproto.h sysent: regen for syscallarg_t 2022-03-28 19:43:03 +01:00
systm.h Adjust g_waitidle() visibility and definition 2022-08-02 21:11:10 +03:00
taskqueue.h LinuxKPI: Implement kthread_worker related functions 2022-05-17 15:10:20 +03:00
terminal.h teken: color #3 is yellow not brown - use TC_YELLOW as the name 2022-03-12 09:17:29 -05:00
termios.h
thr.h
tiio.h
tim_filter.h
time.h Fix overflow errors in sbttous and sbttoms 2022-05-09 16:38:59 -06:00
timeb.h
timeet.h
timeffc.h
timepps.h Remove "All Rights Reserved" from FreeBSD Foundation sys/ copyrights 2021-08-08 10:42:24 -04:00
timers.h itimers: strip unused bits from struct itimer and struct itimers 2021-12-28 03:02:53 +02:00
times.h
timespec.h
timetc.h x86: Speed up clock calibration 2022-01-12 12:34:07 -08:00
timex.h
tree.h rb_tree: avoid extra reads in rebalancing 2022-08-29 11:11:31 -05:00
tslog.h Add userland boot profiling to TSLOG 2021-10-16 11:47:34 -07:00
tty.h
ttycom.h Add tcgetwinsize(3) and tcsetwinsize(3) to termios 2020-12-25 20:43:09 +02:00
ttydefaults.h
ttydevsw.h
ttydisc.h
ttyhook.h
ttyqueue.h
turnstile.h
types.h sys: Extract __bitcount* from sys/types.h to new sys/bitcount.h 2022-08-18 02:46:27 +01:00
ucontext.h Move struct freebsd4_ucontext to sys/i386/include/ucontext.h. 2022-01-13 17:17:43 -08:00
ucred.h cred: fix minor nits in r367695 2020-11-19 04:28:39 +00:00
uio.h
umtx.h umtx: Split umtx.h on two counterparts. 2021-07-29 12:41:29 +03:00
umtxvar.h umtx: Add new pi_futex type. 2021-07-29 12:48:34 +03:00
un.h
unistd.h fd: add close_range(..., CLOSE_RANGE_CLOEXEC) 2022-03-03 17:21:58 +00:00
unpcb.h
user.h Implement shared page address randomization 2022-07-18 16:27:37 +02:00
utsname.h
uuid.h sys/uuid.h: Include sys/types.h 2021-11-24 11:26:45 -07:00
vdso.h
vmem.h
vmmeter.h
vnode.h getdirentries: return ENOENT for unlinked but still open directory. 2022-04-11 23:30:16 +03:00
vtoc.h
wait.h
watchdog.h