opnsense-src/sys/kern
Mark Johnston 93ff7dbaea socket: Implement SO_SPLICE
This is a feature which allows one to splice two TCP sockets together
such that data which arrives on one socket is automatically pushed into
the send buffer of the spliced socket.  This can be used to make TCP
proxying more efficient as it eliminates the need to copy data into and
out of userspace.

The interface is copied from OpenBSD, and this implementation aims to be
compatible.  Splicing is enabled by setting the SO_SPLICE socket option.
When spliced, data that arrives on the receive buffer is automatically
forwarded to the other socket.  In particular, splicing is a
unidirectional operation; to splice a socket pair in both directions,
SO_SPLICE needs to be applied to both sockets.  More concretely, when
setting the option one passes the following struct:

    struct splice {
	    int fd;
	    off_t max;
	    struct timveval idle;
    };

where "fd" refers to the socket to which the first socket is to be
spliced, and two setsockopt(SO_SPLICE) calls are required to set up a
bi-directional splice.

select(), poll() and kevent() do not return when data arrives in the
receive buffer of a spliced socket, as such data is expected to be
removed automatically once space is available in the corresponding send
buffer.  Userspace can perform I/O on spliced sockets, but it will be
unpredictably interleaved with splice I/O.

A splice can be configured to unsplice once a certain number of bytes
have been transmitted, or after a given time period.  Once unspliced,
the socket behaves normally from userspace's perspective.  The number of
bytes transmitted via the splice can be retrieved using
getsockopt(SO_SPLICE); this works after unsplicing as well, up until the
socket is closed or spliced again.  Userspace can also manually trigger
unsplicing by splicing to -1.

Splicing work is handled by dedicated threads, similar to KTLS.  A
worker thread is assigned at splice creation time.  At some point it
would be nice to have a direct dispatch mode, wherein the thread which
places data into a receive buffer is also responsible for pushing it
into the sink, but this requires tighter integration with the protocol
stack in order to avoid reentrancy problems.

Currently, sowakeup() and related functions will signal the worker
thread assigned to a spliced socket.  so_splice_xfer() does the hard
work of moving data between socket buffers.

Co-authored by:	gallatin
Reviewed by:	brooks (interface bits)
MFC after:	3 months
Sponsored by:	Klara, Inc.
Sponsored by:	Stormshield
Sponsored by:	Netflix
Differential Revision:	https://reviews.freebsd.org/D46411

(cherry picked from commit a1da7dc1cd)
2024-10-17 15:48:36 +00:00
..
bus_if.m newbus: Add a set of bus resource helpers for nexus-like devices 2024-01-03 12:47:08 -08:00
clock_if.m sys: Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:54:58 -06:00
cpufreq_if.m sys: Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:54:58 -06:00
device_if.m sys: Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:54:58 -06:00
firmw.S sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
genassym.sh sys: Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:54:58 -06:00
genoffset.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
genoffset.sh sys: Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:54:58 -06:00
imgact_aout.c sysentvec: add SV_SIGSYS flag 2023-10-09 06:24:31 +03:00
imgact_binmisc.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
imgact_elf.c imgact_elf: Export __elfN(parse_notes) 2024-02-19 13:12:51 +00:00
imgact_elf32.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
imgact_elf64.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
imgact_shell.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
init_main.c kernel: Make some compile time constant variables const 2024-09-20 18:04:02 +08:00
init_sysent.c Regen 2024-10-05 10:08:56 +03:00
kern_acct.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_alq.c alq, siftr: add panic/debugger checks to shutdown hooks 2023-12-08 18:02:44 -04:00
kern_boottrace.c boottrace: Stop checking for failures from realloc(M_WAITOK) 2024-09-30 12:44:13 +08:00
kern_clock.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_clocksource.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_condvar.c ktrace: Fix the build when options KTRACE is not configured 2024-03-29 09:53:05 -04:00
kern_conf.c Giant: Postpone removal of Giant-locked drivers until 15 2023-11-02 00:22:22 +08:00
kern_cons.c vt/sc: retire logic to select vt(4) by default for UEFI boot 2024-08-01 12:10:26 -04:00
kern_context.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_cpu.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_cpuset.c ktrace: Record cpuset violations with KTR_CAPFAIL 2024-05-11 18:57:44 -05:00
kern_ctf.c sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
kern_descrip.c Add proc_nfiles(9) 2024-10-05 10:08:55 +03:00
kern_devctl.c devctl: Disable the boottime optimization of suppressing NOMATCH 2024-05-22 08:37:58 -06:00
kern_dtrace.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_dump.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_environment.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_et.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_event.c kcmp(2): implement for generic file types 2024-01-30 22:24:42 +02:00
kern_exec.c ktrace: Record namei violations with KTR_CAPFAIL 2024-05-11 18:57:44 -05:00
kern_exit.c abort2: Generate a core dump 2024-01-02 11:20:37 -08:00
kern_fail.c kern_fail: Stop checking for failures from fp_malloc(M_WAITOK) 2024-09-30 12:44:13 +08:00
kern_ffclock.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_fork.c kasan: fix false-positive kasan_report upon thread reuse 2024-04-21 20:30:58 -04:00
kern_hhook.c hhook: Sprinkle const qualifiers where appropriate 2024-10-08 12:44:54 +08:00
kern_idle.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_intr.c ithread: Improve synchronization in ithread_destroy() 2024-08-20 13:27:05 +00:00
kern_jail.c jail: expose children.max and children.cur via sysctl 2024-10-13 16:45:58 -07:00
kern_kcov.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_khelp.c khelp: Sprinkle const qualifiers where appropriate 2024-10-08 12:44:54 +08:00
kern_kthread.c kthread: Set *tdptr earlier in kproc_kthread_add() 2024-05-02 09:25:10 -04:00
kern_ktr.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_ktrace.c ktrace: Fix an inverted privilege check 2024-08-07 13:41:42 +00:00
kern_linker.c kern linker: Don't invoke dtors without having invoked ctors 2024-04-15 10:05:13 -04:00
kern_lock.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_lockf.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_lockstat.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_loginclass.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_malloc.c kern_malloc: fold free and zfree together into one __always_inline func 2024-09-28 10:35:12 +00:00
kern_mbuf.c mbuf: provide m_freemp() 2024-06-10 18:31:02 -07:00
kern_membarrier.c Add membarrier(2) 2023-08-23 03:02:21 +03:00
kern_mib.c kernel: Make some compile time constant variables const 2024-09-20 18:04:02 +08:00
kern_module.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_mtxpool.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_mutex.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_ntptime.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_osd.c kern: osd: stop downsizing arrays when the last slot deregisters 2023-08-17 23:06:12 -05:00
kern_physio.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_pmc.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_poll.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_priv.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_proc.c kinfo_vmentry: report cdev name for device mappings 2024-10-15 18:03:59 +03:00
kern_procctl.c ktrace: Record signal violations with KTR_CAPFAIL 2024-05-11 18:57:44 -05:00
kern_prot.c cr_bsd_visible(): Style fixes 2024-01-18 22:07:53 +01:00
kern_racct.c kern_racct.c: Don't compile if RACCT undefined 2024-02-27 11:37:33 +01:00
kern_rangelock.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_rctl.c kern_rctl.c: Minimal includes when RCTL not defined 2024-02-27 11:37:23 +01:00
kern_resource.c sysctl: add KERN_PROC_RLIMIT_USAGE 2024-10-05 10:08:56 +03:00
kern_rmlock.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_rwlock.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_sdt.c sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
kern_sema.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_sendfile.c Abstract UIO allocation and deallocation. 2024-03-08 23:27:20 -05:00
kern_sharedpage.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_shutdown.c Annotate 'rebooting' with __read_mostly 2024-02-20 09:27:03 +01:00
kern_sig.c ktrace: Record signal violations with KTR_CAPFAIL 2024-05-11 18:57:44 -05:00
kern_switch.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_sx.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_synch.c ktrace: Fix the build when options KTRACE is not configured 2024-03-29 09:53:05 -04:00
kern_syscalls.c syscalls: fix missing SIGSYS for several ENOSYS errors 2023-10-09 06:24:31 +03:00
kern_sysctl.c sysctl: Make sysctl_ctx_free() a bit safer 2024-05-11 10:15:21 -04:00
kern_tc.c timerfd: Move implementation from linux compat to sys/kern 2023-08-24 14:28:56 -06:00
kern_thr.c kern_thr.c: normalize includes 2024-04-30 03:48:09 +03:00
kern_thread.c kern_thread.c: remove unneeded include of sys/param.h 2024-04-30 03:48:09 +03:00
kern_time.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_timeout.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_tslog.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_ubsan.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_umtx.c umtx: shm: 'ushm_refcnt > 0' => 'ushm_refcnt != 0' 2024-09-04 15:00:56 +00:00
kern_uuid.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
kern_vnodedumper.c kerneldump: Inline dump_savectx() into its callers 2023-03-20 14:16:28 -04:00
kern_xxx.c compat_freebsd4: Add const qualifier to the local variable s inside function freebsd4_uname() 2024-05-28 12:21:20 +08:00
ksched.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
link_elf.c kern linker: Don't invoke dtors without having invoked ctors 2024-04-15 10:05:13 -04:00
link_elf_obj.c kern linker: Don't invoke dtors without having invoked ctors 2024-04-15 10:05:13 -04:00
linker_if.m sys: Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:54:58 -06:00
Make.tags.inc sys: Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:54:58 -06:00
Makefile makesyscalls: don't make syscall.mk by default 2023-12-13 23:07:06 +00:00
md4c.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
md5c.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
msi_if.m sys: Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:54:58 -06:00
p1003_1b.c sched_setscheduler(2): Change realtime privilege check 2024-02-20 09:27:08 +01:00
pic_if.m sys: Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:54:58 -06:00
posix4_mib.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
sched_4bsd.c sched: Simplify sched_lend_user_prio_cond() 2024-05-09 22:26:21 +09:00
sched_ule.c sched: Simplify sched_lend_user_prio_cond() 2024-05-09 22:26:21 +09:00
serdev_if.m sys: Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:54:58 -06:00
stack_protector.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_acl_nfs4.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_acl_posix1e.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_asan.c kasan: Add corresponding sysctl knob for loader tunable 2023-10-19 22:00:56 +08:00
subr_atomic64.c sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
subr_autoconf.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_blist.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_boot.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_bufring.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_bus.c subr_bus: Stop checking for failures from malloc(M_WAITOK) 2024-09-30 12:44:14 +08:00
subr_bus_dma.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_busdma_bounce.c spdx: The BSD-2-Clause-FreeBSD identifier is obsolete, drop -FreeBSD 2023-05-12 10:44:03 -06:00
subr_busdma_bufalloc.c busdma: uma_zcreate() does not fail 2024-05-02 09:25:08 -04:00
subr_capability.c capsicum: introduce cap_rights_is_empty Function 2024-06-05 11:55:17 -04:00
subr_clock.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_clockcalib.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_compressor.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_counter.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_coverage.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_csan.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_devmap.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_devstat.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_disk.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_dummy_vdso_tc.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_early.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_epoch.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_eventhandler.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_fattime.c sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
subr_filter.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_firmware.c firmware: unbreak armv7 2024-10-16 08:19:21 -06:00
subr_gtaskqueue.c gtaskqueue: Fix a typo 2024-01-07 11:56:04 -05:00
subr_hash.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_hints.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_intr.c intrng: Allow alternative IPI PICs to be registered and used 2024-09-07 00:59:02 +01:00
subr_kdb.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_kobj.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_lock.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_log.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_mchain.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_memdesc.c memdesc: Add routines for copying data to/from memory descriptors 2023-07-31 13:24:44 -07:00
subr_module.c linker: Add MODINFOMD_SPLASH type 2024-07-29 18:37:42 +02:00
subr_msan.c kmsan: Add kmsan_check_uio() 2023-12-14 09:44:38 -05:00
subr_msgbuf.c sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
subr_param.c x86: Detect NVMM hypervisor 2024-09-03 17:46:48 -07:00
subr_pcpu.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_pctrie.c pctrie: change for vm_radix compatibility 2023-08-21 12:28:51 -05:00
subr_physmem.c physmem: Correct a comment 2024-06-27 11:27:42 -04:00
subr_pidctrl.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_power.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_prf.c Abstract UIO allocation and deallocation. 2024-03-08 23:27:20 -05:00
subr_prng.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_prof.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_rangeset.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_rman.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_rtc.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_sbuf.c Remove my middle name. 2023-08-17 15:08:30 +02:00
subr_scanf.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_sfbuf.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_sglist.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_sleepqueue.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_smp.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_smr.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_stack.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_stats.c stats: Fix the build under gcc 2024-07-15 12:28:28 +00:00
subr_syscall.c ktrace: Record syscall violations with KTR_CAPFAIL 2024-05-11 18:57:44 -05:00
subr_taskqueue.c Schedule fast taskqueue callouts on right CPU. 2024-01-19 11:24:35 -05:00
subr_terminal.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_trap.c Optimize HPTS so that little work is done until we have a hpts thread that is over the connection threshold 2024-04-24 22:37:40 +02:00
subr_turnstile.c turnstile: Mention the lock name when panicking due to a sleeping thread 2024-09-03 14:54:42 +00:00
subr_uio.c Abstract UIO allocation and deallocation. 2024-03-08 23:27:20 -05:00
subr_unit.c subr_unit.c: another attempt to fix the build 2023-08-18 19:28:42 +03:00
subr_vmem.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
subr_witness.c witness: Unconditionally initialize out-params for witness_save() 2023-10-24 09:20:55 -04:00
sys_capability.c ktrace: Record detailed ECAPMODE violations 2024-05-11 18:57:44 -05:00
sys_eventfd.c kcmp(2): implement for generic file types 2024-01-30 22:24:42 +02:00
sys_generic.c kcmp_pget(): do not accept TIDs 2024-05-03 03:25:33 +03:00
sys_getrandom.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
sys_pipe.c sys_pipe: consistently use cr_ruidinfo for accounting of pipebuf 2024-10-05 10:08:55 +03:00
sys_procdesc.c kcmp(2): implement for procdesc 2024-01-30 22:24:43 +02:00
sys_process.c ptrace(PT_VM_ENTRY): report max protection 2024-10-15 17:50:16 +03:00
sys_socket.c kcmp(2): implement for generic file types 2024-01-30 22:24:42 +02:00
sys_timerfd.c timerfd: Move kern_timerfd_* prototypes to <sys/syscallsubr.h> 2024-04-08 10:49:59 -07:00
syscalls.c Regen 2024-10-05 10:08:56 +03:00
syscalls.conf makesyscalls: don't make syscall.mk by default 2023-12-13 23:07:06 +00:00
syscalls.master Add getrlimitusage(2) 2024-10-05 10:08:55 +03:00
systrace_args.c Regen 2024-10-05 10:08:56 +03:00
sysv_ipc.c sysvshm: add shmobjinfo() function to find key/seq of the segment backed by obj 2024-10-15 17:50:16 +03:00
sysv_msg.c sysv_ipc: remove sys/cdefs.h include 2024-10-15 17:50:15 +03:00
sysv_sem.c sysv_ipc: remove sys/cdefs.h include 2024-10-15 17:50:15 +03:00
sysv_shm.c sysvshm: add shmobjinfo() function to find key/seq of the segment backed by obj 2024-10-15 17:50:16 +03:00
tty.c tty: delete knotes when TTY is revoked 2024-10-10 20:28:20 +00:00
tty_compat.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
tty_info.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
tty_inq.c kern: tty: fix ttyinq_read_uio assertion 2024-02-06 09:31:17 -06:00
tty_outq.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
tty_pts.c kcmp(2): implement for generic file types 2024-01-30 22:24:42 +02:00
tty_tty.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
tty_ttydisc.c kern: tty: recanonicalize the buffer on ICANON/VEOF/VEOL changes 2024-01-30 11:11:24 -06:00
uipc_accf.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
uipc_debug.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
uipc_domain.c uipc_domain: Fix a typo in a source code comment 2024-04-24 12:19:09 +02:00
uipc_ktls.c ktls: Fix races that can lead to double initialization 2024-07-23 09:01:30 -04:00
uipc_mbuf.c mbuf: provide m_freemp() 2024-06-10 18:31:02 -07:00
uipc_mbuf2.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
uipc_mbufhash.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
uipc_mqueue.c mqueuefs: mark newly allocated vnode as constructed, under the lock 2024-05-29 08:35:38 +03:00
uipc_sem.c kcmp(2): implement for generic file types 2024-01-30 22:24:42 +02:00
uipc_shm.c shm_alloc(): cleanup 2024-10-15 17:50:17 +03:00
uipc_sockbuf.c socket: Implement SO_SPLICE 2024-10-17 15:48:36 +00:00
uipc_socket.c socket: Implement SO_SPLICE 2024-10-17 15:48:36 +00:00
uipc_syscalls.c socket: Pass capsicum rights down to socket option handlers 2024-07-23 09:01:29 -04:00
uipc_usrreq.c unix: use m_freemp() when disposing unix socket buffers 2024-06-10 18:31:08 -07:00
vfs_acl.c acl_copyin: avoid returning uninitialized memory 2024-08-11 19:01:52 -04:00
vfs_aio.c Abstract UIO allocation and deallocation. 2024-03-08 23:27:20 -05:00
vfs_bio.c getblkx(9): be more tolerant but also strict with the buffer size checks 2024-03-09 11:05:03 +02:00
vfs_cache.c vfs cache: add sysctl vfs.cache.param.hitpct 2024-07-10 22:04:40 +00:00
vfs_cluster.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
vfs_default.c vop_stdadvise(): restore correct handling of length == 0 2024-09-11 11:44:01 +03:00
vfs_export.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
vfs_extattr.c Move kern_extattr_* prototypes to <sys/syscallsubr.h> 2023-10-24 10:00:57 -07:00
vfs_hash.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
vfs_init.c vfs mount: Consistently use ENODEV internally for an invalid fstype 2024-01-03 12:18:44 -08:00
vfs_lookup.c vfs_lookup.c: only call ktrcapfail() if KTRACE is enabled 2024-05-15 16:21:35 +03:00
vfs_mount.c vfs_domount_update(): postpone setting MNT_UNION until VFS_MOUNT() is done 2024-05-23 03:26:43 +03:00
vfs_mountroot.c sys: Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:36 -06:00
vfs_subr.c vfs: make skipping LRU requeue optional 2024-07-10 22:04:40 +00:00
vfs_syscalls.c faccessat(2): Honor AT_SYMLINK_NOFOLLOW 2024-09-26 09:13:50 -04:00
vfs_vnops.c copy_file_range: Call vn_rdwr() at least once 2024-05-08 09:06:16 -04:00
vnode_if.src VFS: add VOP_GETLOWVNODE() 2023-12-05 02:43:27 +02:00