[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 09/16] bsd-user/freebsd/os-syscall.c: Move syscall processing
From: |
Warner Losh |
Subject: |
[PATCH v2 09/16] bsd-user/freebsd/os-syscall.c: Move syscall processing here |
Date: |
Sat, 26 Feb 2022 10:07:37 -0700 |
While there is some commonality between *BSD syscall processing, there's
a number of differences and the system call numbers and ABIs have been
independent since the late 90s. Move FreeBSD's proessing here and delete
it.
The upstream implementation is somewhat different than the current
implementation. It will be much easier to upstream these from scratch,
justifying the final result, rather than working out the diffs and
justifying the changes. Also tweak a comment to qemu standard form.
Signed-off-by: Warner Losh <imp@bsdimp.com>
Reviewed-by: Kyle Evans <kevans@FreeBSD.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
bsd-user/freebsd/os-syscall.c | 69 +++++++++++++++++++++++++++++++++++
1 file changed, 69 insertions(+)
create mode 100644 bsd-user/freebsd/os-syscall.c
diff --git a/bsd-user/freebsd/os-syscall.c b/bsd-user/freebsd/os-syscall.c
new file mode 100644
index 00000000000..fc57e324173
--- /dev/null
+++ b/bsd-user/freebsd/os-syscall.c
@@ -0,0 +1,69 @@
+/*
+ * BSD syscalls
+ *
+ * Copyright (c) 2003-2008 Fabrice Bellard
+ * Copyright (c) 2013-2014 Stacey D. Son
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * We need the FreeBSD "legacy" definitions. Rust needs the FreeBSD 11 system
+ * calls since it doesn't use libc at all, so we have to emulate that despite
+ * FreeBSD 11 being EOL'd.
+ */
+#define _WANT_FREEBSD11_STAT
+#define _WANT_FREEBSD11_STATFS
+#define _WANT_FREEBSD11_DIRENT
+#define _WANT_KERNEL_ERRNO
+#define _WANT_SEMUN
+#include "qemu/osdep.h"
+#include "qemu/cutils.h"
+#include "qemu/path.h"
+#include <sys/syscall.h>
+#include <sys/param.h>
+#include <sys/sysctl.h>
+#include <utime.h>
+
+#include "qemu.h"
+#include "qemu-common.h"
+#include "signal-common.h"
+#include "user/syscall-trace.h"
+
+void target_set_brk(abi_ulong new_brk)
+{
+}
+
+bool is_error(abi_long ret)
+{
+
+ return (abi_ulong)ret >= (abi_ulong)(-4096);
+}
+
+/*
+ * do_syscall() should always have a single exit point at the end so that
+ * actions, such as logging of syscall results, can be performed. All errnos
+ * that do_syscall() returns must be -TARGET_<errcode>.
+ */
+abi_long do_freebsd_syscall(void *cpu_env, int num, abi_long arg1,
+ abi_long arg2, abi_long arg3, abi_long arg4,
+ abi_long arg5, abi_long arg6, abi_long arg7,
+ abi_long arg8)
+{
+ return 0;
+}
+
+void syscall_init(void)
+{
+}
--
2.33.1
- [PATCH v2 00/16] bsd-user: Start upstreaming the system calls., Warner Losh, 2022/02/26
- [PATCH v2 01/16] bsd-user/main.c: Drop syscall flavor arg -bsd, Warner Losh, 2022/02/26
- [PATCH v2 02/16] bsd-user/x86_64/target_arch_cpu.h: int $80 never was a BSD system call on amd64, Warner Losh, 2022/02/26
- [PATCH v2 03/16] bsd-user/x86_64/target_arch_cpu.h: Remove openbsd syscall, Warner Losh, 2022/02/26
- [PATCH v2 04/16] bsd-user/i386/target_arch_cpu.h: Remove openbsd syscall, Warner Losh, 2022/02/26
- [PATCH v2 05/16] bsd-user/arm/target_arch_cpu.h: Only support FreeBSD sys calls, Warner Losh, 2022/02/26
- [PATCH v2 06/16] bsd-user/arm/target_arch_thread.h: Assume a FreeBSD target, Warner Losh, 2022/02/26
- [PATCH v2 07/16] bsd-user/x86_64/target_arch_thread.h: Assume a FreeBSD target, Warner Losh, 2022/02/26
- [PATCH v2 09/16] bsd-user/freebsd/os-syscall.c: Move syscall processing here,
Warner Losh <=
- [PATCH v2 12/16] bsd-user/freebsd/os-syscall.c: Add get_errno and host_to_target_errno, Warner Losh, 2022/02/26
- [PATCH v2 08/16] bsd-user: Remove bsd_type, Warner Losh, 2022/02/26
- [PATCH v2 10/16] bsd-user: Move system call building to os-syscall.c, Warner Losh, 2022/02/26
- [PATCH v2 13/16] bsd-user/bsd-file.h: Implementation details for the filesystem calls, Warner Losh, 2022/02/26
- [PATCH v2 14/16] bsd-user: introduce target.h, Warner Losh, 2022/02/26
- [PATCH v2 16/16] bsd-user: Add safe system call macros, Warner Losh, 2022/02/26
- [PATCH v2 11/16] bsd-user/sycall.c: Now obsolete, remove, Warner Losh, 2022/02/26
- [PATCH v2 15/16] bsd-user: Define target_arg64, Warner Losh, 2022/02/26