qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 01/33] linux-user: Split out do_syscall1


From: Eric Blake
Subject: Re: [Qemu-devel] [PATCH 01/33] linux-user: Split out do_syscall1
Date: Fri, 1 Jun 2018 09:00:14 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0

On 06/01/2018 02:30 AM, Richard Henderson wrote:
There was supposed to be a single point of return for do_syscall
so that tracing works properly.  However, there are a few bugs
in that area.  It is significantly simpler to simply split out
an inner function to enforce this.

Signed-off-by: Richard Henderson <address@hidden>
---
  linux-user/syscall.c | 89 +++++++++++++++++++++++++++-----------------
  1 file changed, 54 insertions(+), 35 deletions(-)


@@ -7977,28 +7979,6 @@ abi_long do_syscall(void *cpu_env, int num, abi_long 
arg1,
      void *p;
      char *fn;
-#if defined(DEBUG_ERESTARTSYS)

+abi_long do_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)
+{
+    CPUState *cpu = ENV_GET_CPU(cpu_env);
+    abi_long ret;
+
+#if defined(DEBUG_ERESTARTSYS)

Code motion, but...

+    /* Debug-only code for exercising the syscall-restart code paths
+     * in the per-architecture cpu main loops: restart every syscall
+     * the guest makes once before letting it through.
+     */
+    {
+        static bool flag;
+        flag = !flag;
+        if (flag) {
+            return -TARGET_ERESTARTSYS;
+        }
+    }
+#endif
+#ifdef DEBUG

...it looks inconsistent to mix '#if defined()' with '#ifdef' in the same function. Worth cleaning up while you do this refactoring?

--
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org



reply via email to

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