aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/init_main.c
diff options
context:
space:
mode:
authorDmitry Chagin <dchagin@FreeBSD.org>2021-08-12 08:45:25 +0000
committerDmitry Chagin <dchagin@FreeBSD.org>2021-08-12 08:45:25 +0000
commitde8374df28cc23ce0d893fd96d1ad0a861414154 (patch)
tree55b80d76c65061e6746ca6f7635b201829229d5c /sys/kern/init_main.c
parentfc37be246021ee9b7110c9f506141c2bf0bc9fb0 (diff)
downloadsrc-de8374df28cc23ce0d893fd96d1ad0a861414154.tar.gz
src-de8374df28cc23ce0d893fd96d1ad0a861414154.zip
fork: Allow ABI to specify fork return values for child.
At least Linux x86 ABI's does not use carry bit and expects that the dx register is preserved. For this add a new sv_set_fork_retval hook and call it from cpu_fork(). Add a short comment about touching dx in x86_set_fork_retval(), for more details see phab comments from kib@ and imp@. Reviewed by: kib Differential revision: https://reviews.freebsd.org/D31472 MFC after: 2 weeks
Diffstat (limited to 'sys/kern/init_main.c')
-rw-r--r--sys/kern/init_main.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/kern/init_main.c b/sys/kern/init_main.c
index 86cc2494272f..fde07dcbf46d 100644
--- a/sys/kern/init_main.c
+++ b/sys/kern/init_main.c
@@ -402,6 +402,12 @@ null_set_syscall_retval(struct thread *td __unused, int error __unused)
panic("null_set_syscall_retval");
}
+static void
+null_set_fork_retval(struct thread *td __unused)
+{
+
+}
+
struct sysentvec null_sysvec = {
.sv_size = 0,
.sv_table = NULL,
@@ -430,6 +436,7 @@ struct sysentvec null_sysvec = {
.sv_schedtail = NULL,
.sv_thread_detach = NULL,
.sv_trap = NULL,
+ .sv_set_fork_retval = null_set_fork_retval,
};
/*