qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 12/14] bsd-user/sysarch: Provide a per-arch framework for sys


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH 12/14] bsd-user/sysarch: Provide a per-arch framework for sysarch syscall
Date: Sat, 25 Sep 2021 12:46:07 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.1.0

Hi Warner,

On 9/22/21 08:14, Warner Losh wrote:
Add the missing glue to pull in do_freebsd_sysarch to call
do_freebsd_arch_sysarch. Put it in os-sys.c, which will be used for
sysctl and sysarch system calls because they are mostly arch specific.

Signed-off-by: Stacey Son <sson@FreeBSD.org>
Signed-off-by: Warner Losh <imp@bsdimp.com>
---
  bsd-user/freebsd/meson.build |  3 +++
  bsd-user/freebsd/os-sys.c    | 28 ++++++++++++++++++++++++++++
  bsd-user/meson.build         |  6 ++++++
  bsd-user/qemu.h              |  3 +++
  bsd-user/syscall.c           |  7 -------
  5 files changed, 40 insertions(+), 7 deletions(-)
  create mode 100644 bsd-user/freebsd/meson.build
  create mode 100644 bsd-user/freebsd/os-sys.c

+/* sysarch() is architecture dependent. */
+abi_long do_freebsd_sysarch(void *cpu_env, abi_long arg1, abi_long arg2)
+{
+
+    return do_freebsd_arch_sysarch(cpu_env, arg1, arg2);
+}
diff --git a/bsd-user/meson.build b/bsd-user/meson.build
index 0369549340..561913de05 100644
--- a/bsd-user/meson.build
+++ b/bsd-user/meson.build
@@ -8,3 +8,9 @@ bsd_user_ss.add(files(
    'syscall.c',
    'uaccess.c',
  ))
+
+# Pull in the OS-specific build glue, if any
+if fs.exists(targetos)
+   subdir(targetos)

I am a bit confused here, we have an optional implementation ...

+endif
+
diff --git a/bsd-user/qemu.h b/bsd-user/qemu.h
index 4ee57b91f0..3dde381d5d 100644
--- a/bsd-user/qemu.h
+++ b/bsd-user/qemu.h
@@ -239,6 +239,9 @@ extern unsigned long target_sgrowsiz;
  abi_long get_errno(abi_long ret);
  int is_error(abi_long ret);
+/* os-sys.c */
+abi_long do_freebsd_sysarch(void *cpu_env, abi_long arg1, abi_long arg2);

... that is declared as non-optional.

In fact it is called by do_freebsd_syscall(), not restricted to TARGET_I386.

This shouldn't be (meson) optional IMO.

+
  /* user access */
#define VERIFY_READ PAGE_READ
diff --git a/bsd-user/syscall.c b/bsd-user/syscall.c
index 9bc72501b2..9f51563abd 100644
--- a/bsd-user/syscall.c
+++ b/bsd-user/syscall.c
@@ -88,13 +88,6 @@ static abi_long do_obreak(abi_ulong new_brk)
      return 0;
  }
-#if defined(TARGET_I386)
-static abi_long do_freebsd_sysarch(CPUX86State *env, int op, abi_ulong parms)
-{
-    do_freebsd_arch_sysarch(env, op, parms);
-}
-#endif
-
  #ifdef __FreeBSD__
  /*
   * XXX this uses the undocumented oidfmt interface to find the kind of




reply via email to

[Prev in Thread] Current Thread [Next in Thread]