freebsd-dev/sys/compat/linux
Konstantin Belousov c6d31b8306 AST: rework
Make most AST handlers dynamically registered.  This allows to have
subsystem-specific handler source located in the subsystem files,
instead of making subr_trap.c aware of it.  For instance, signal
delivery code on return to userspace is now moved to kern_sig.c.

Also, it allows to have some handlers designated as the cleanup (kclear)
type, which are called both at AST and on thread/process exit.  For
instance, ast(), exit1(), and NFS server no longer need to be aware
about UFS softdep processing.

The dynamic registration also allows third-party modules to register AST
handlers if needed.  There is one caveat with loadable modules: the
code does not make any effort to ensure that the module is not unloaded
before all threads processed through AST handler in it.  In fact, this
is already present behavior for hwpmc.ko and ufs.ko.  I do not think it
is worth the efforts and the runtime overhead to try to fix it.

Reviewed by:	markj
Tested by:	emaste (arm64), pho
Discussed with:	jhb
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Differential revision:	https://reviews.freebsd.org/D35888
2022-08-02 21:11:09 +03:00
..
check_error.d linux(4): Eliminating remnants of futex sdt. 2021-07-29 12:52:36 +03:00
check_internal_locks.d
linux_common.c linux(4): Reimplement futexes using umtx. 2021-07-29 12:43:48 +03:00
linux_common.h linux(4): Cleanup empty lines. 2022-03-31 21:23:12 +03:00
linux_dtrace.h
linux_dummy.c linux(4): Add epoll_pwai2 syscall. 2022-04-26 19:35:59 +03:00
linux_elf32.c linux(4): implement coredump support 2021-06-30 22:45:06 +01:00
linux_elf64.c linux(4): implement coredump support 2021-06-30 22:45:06 +01:00
linux_elf.c linux: Drop some unnecessary includes 2021-11-13 03:26:32 +00:00
linux_elf.h linux(4): implement coredump support 2021-06-30 22:45:06 +01:00
linux_emul.c linux(4): Cleanup empty lines. 2022-03-31 21:23:12 +03:00
linux_emul.h linux(4): Handle SO_TIMESTAMPNS socket option 2022-05-28 23:46:05 +03:00
linux_errno.c
linux_errno.h linux: Fix ptrace panic with ERESTART 2021-10-29 14:55:59 +01:00
linux_errno.inc
linux_event.c AST: rework 2022-08-02 21:11:09 +03:00
linux_event.h Drop rdivacky@ "All rights reserved" from linux_event. 2021-07-20 10:06:16 +03:00
linux_file.c linux(4): Fix unlinkat() after a125ed50 2022-05-23 13:19:34 +03:00
linux_file.h linux(4): Add AT_NO_AUTOMOUNT to statx. 2022-03-25 17:54:23 +03:00
linux_fork.c AST: rework 2022-08-02 21:11:09 +03:00
linux_fork.h linux(4): Add CLONE_PIDFD option bit. 2021-08-12 11:55:24 +03:00
linux_futex.c linux(4): To improve readability use FUTEX_UNOWNED instead of 0 2022-05-19 21:42:38 +03:00
linux_futex.h linux(4): Handle FUTEX_LOCK_PI2 oeration. 2021-07-29 12:55:02 +03:00
linux_getcwd.c linux(4): make getcwd(2) return ERANGE instead of ENOMEM 2021-03-12 15:31:45 +00:00
linux_ioctl.c linux: add sysctl to pass untranslated interface names 2022-01-17 09:35:15 +00:00
linux_ioctl.h linux: Improve debugging by recognizing TIOCGPTPEER 2022-01-10 15:36:11 +00:00
linux_ipc64.h
linux_ipc.c linux(4): Add a helper intended for copying timespec's from the userspace. 2022-05-08 16:16:47 +03:00
linux_ipc.h linux(4): Implement semtimedop syscalls. 2022-05-06 20:02:59 +03:00
linux_mib.c linux: Make compat.linux.preserve_vstatus default to 1 2022-01-17 08:45:01 +00:00
linux_mib.h linux(4): Rid unused defines from linux_mib. 2022-03-31 20:45:12 +03:00
linux_misc.c linux(4): Trace Linux l_sigset_t. 2022-06-22 14:09:54 +03:00
linux_misc.h linux(4): Add AT_MINSIGSTKSZ to arm64 port 2022-05-15 21:12:03 +03:00
linux_mmap.c Use vmspace->vm_stacktop in place of sv_usrstack in more places. 2022-02-14 10:57:30 -08:00
linux_mmap.h
linux_persona.h
linux_ptrace.c Add security.bsd.allow_ptrace sysctl 2022-01-22 19:36:56 +02:00
linux_rseq.c linux(4): Add a simple rseq syscall implementation. 2022-04-26 19:35:56 +03:00
linux_siginfo.h linux(4): Add kernel signal code definitions 2022-05-19 19:55:56 +03:00
linux_signal.c linux(4): Fix a typo in a source code comment 2022-07-16 13:39:17 +02:00
linux_signal.h linux(4): Trace Linux l_sigset_t. 2022-06-22 14:09:54 +03:00
linux_socket.c linux(4): Handle multiple mbufs in a control message chain in recvmsg 2022-05-28 23:48:45 +03:00
linux_socket.h linux(4): Handle IP_ORIGDSTADDR socket option for IPPROTO_IP protocol level 2022-05-28 23:47:40 +03:00
linux_stats.c linux(4): Cleanup empty lines. 2022-03-31 21:23:12 +03:00
linux_sysctl.c linux: plug a set-but-not-used var 2022-04-19 12:45:57 +00:00
linux_sysproto.h
linux_time.c linux(4): Return EINVAL when the clockid has invalid bits are set 2022-05-31 11:46:15 +03:00
linux_timer.c linux(4): Implement timer_settime64 syscall. 2022-05-04 13:06:49 +03:00
linux_timer.h linux(4): Add a helper intended for copying timespec's from the userspace. 2022-05-08 16:16:47 +03:00
linux_uid16.c linux: remove the always curthread argument from lconvpath 2021-11-25 22:50:42 +00:00
linux_util.c Adjust linux_get_char_devices() definition to avoid clang 15 warning 2022-07-25 00:40:13 +02:00
linux_util.h linux(4): Add LINUX_RATELIMIT_MSG_OPT2 for future use 2022-05-28 23:47:23 +03:00
linux_vdso_gtod.inc linux(4): Implement __vdso_time 2022-07-04 23:41:32 +03:00
linux_vdso.c Drop "All rights reserved" from my copyright statements. 2021-07-20 10:05:50 +03:00
linux_vdso.h Drop "All rights reserved" from my copyright statements. 2021-07-20 10:05:50 +03:00
linux_videodev2_compat.h
linux_videodev_compat.h
linux.c linux(4): Refactor SIGPWR mapping 2022-05-30 19:55:49 +03:00
linux.h linux(4): Trace Linux l_sigset_t. 2022-06-22 14:09:54 +03:00
stats_timing.d
trace_futexes.d