[PATCH v4 07/36] bsd-user/i386: Move the inlines into signal.c

Warner Losh posted 36 patches 4 years, 3 months ago
Maintainers: Warner Losh <imp@bsdimp.com>, Kyle Evans <kevans@freebsd.org>, Jiaxun Yang <jiaxun.yang@flygoat.com>, "Philippe Mathieu-Daudé" <f4bug@amsat.org>, Michael Tokarev <mjt@tls.msk.ru>, Laurent Vivier <laurent@vivier.eu>
There is a newer version of this series
[PATCH v4 07/36] bsd-user/i386: Move the inlines into signal.c
Posted by Warner Losh 4 years, 3 months ago
Move the (now stubbed out) inlines into bsd-user/i386/signal.c.

Signed-off-by: Warner Losh <imp@bsdimp.com>
---
 bsd-user/i386/signal.c             | 56 +++++++++++++++++++++++++++++-
 bsd-user/i386/target_arch_signal.h | 43 +++++------------------
 2 files changed, 63 insertions(+), 36 deletions(-)

diff --git a/bsd-user/i386/signal.c b/bsd-user/i386/signal.c
index ac90323365..2939d32400 100644
--- a/bsd-user/i386/signal.c
+++ b/bsd-user/i386/signal.c
@@ -1 +1,55 @@
-/* Placeholder for signal.c */
+/*
+ *  i386 dependent signal definitions
+ *
+ *  Copyright (c) 2013 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/>.
+ */
+
+#include "qemu.h"
+
+/*
+ * Compare to i386/i386/machdep.c sendsig()
+ * Assumes that target stack frame memory is locked.
+ */
+abi_long set_sigtramp_args(CPUX86State *env, int sig,
+                           struct target_sigframe *frame,
+                           abi_ulong frame_addr,
+                           struct target_sigaction *ka)
+{
+    /* XXX return -TARGET_EOPNOTSUPP; */
+    return 0;
+}
+
+/* Compare to i386/i386/machdep.c get_mcontext() */
+abi_long get_mcontext(CPUX86State *regs, target_mcontext_t *mcp, int flags)
+{
+    /* XXX */
+    return -TARGET_EOPNOTSUPP;
+}
+
+/* Compare to i386/i386/machdep.c set_mcontext() */
+abi_long set_mcontext(CPUX86State *regs, target_mcontext_t *mcp, int srflag)
+{
+    /* XXX */
+    return -TARGET_EOPNOTSUPP;
+}
+
+abi_long get_ucontext_sigreturn(CPUX86State *regs, abi_ulong target_sf,
+                                abi_ulong *target_uc)
+{
+    /* XXX */
+    *target_uc = 0;
+    return -TARGET_EOPNOTSUPP;
+}
diff --git a/bsd-user/i386/target_arch_signal.h b/bsd-user/i386/target_arch_signal.h
index 701c6f964f..982c7035c7 100644
--- a/bsd-user/i386/target_arch_signal.h
+++ b/bsd-user/i386/target_arch_signal.h
@@ -88,40 +88,13 @@ struct target_sigframe {
     uint32_t    __spare__[2];
 };
 
-/*
- * Compare to i386/i386/machdep.c sendsig()
- * Assumes that target stack frame memory is locked.
- */
-static inline abi_long set_sigtramp_args(CPUX86State *regs,
-        int sig, struct target_sigframe *frame, abi_ulong frame_addr,
-        struct target_sigaction *ka)
-{
-    /* XXX return -TARGET_EOPNOTSUPP; */
-    return 0;
-}
-
-/* Compare to i386/i386/machdep.c get_mcontext() */
-static inline abi_long get_mcontext(CPUX86State *regs,
-        target_mcontext_t *mcp, int flags)
-{
-    /* XXX */
-    return -TARGET_EOPNOTSUPP;
-}
-
-/* Compare to i386/i386/machdep.c set_mcontext() */
-static inline abi_long set_mcontext(CPUX86State *regs,
-        target_mcontext_t *mcp, int srflag)
-{
-    /* XXX */
-    return -TARGET_EOPNOTSUPP;
-}
-
-static inline abi_long get_ucontext_sigreturn(CPUX86State *regs,
-                        abi_ulong target_sf, abi_ulong *target_uc)
-{
-    /* XXX */
-    *target_uc = 0;
-    return -TARGET_EOPNOTSUPP;
-}
+abi_long set_sigtramp_args(CPUX86State *env, int sig,
+                           struct target_sigframe *frame,
+                           abi_ulong frame_addr,
+                           struct target_sigaction *ka);
+abi_long get_mcontext(CPUX86State *regs, target_mcontext_t *mcp, int flags);
+abi_long set_mcontext(CPUX86State *regs, target_mcontext_t *mcp, int srflag);
+abi_long get_ucontext_sigreturn(CPUX86State *regs, abi_ulong target_sf,
+                                abi_ulong *target_uc);
 
 #endif /* TARGET_ARCH_SIGNAL_H */
-- 
2.33.0


Re: [PATCH v4 07/36] bsd-user/i386: Move the inlines into signal.c
Posted by Richard Henderson 4 years, 3 months ago
On 11/4/21 11:18 PM, Warner Losh wrote:
> +abi_long set_sigtramp_args(CPUX86State *env, int sig,
> +                           struct target_sigframe *frame,
> +                           abi_ulong frame_addr,
> +                           struct target_sigaction *ka);
> +abi_long get_mcontext(CPUX86State *regs, target_mcontext_t *mcp, int flags);
> +abi_long set_mcontext(CPUX86State *regs, target_mcontext_t *mcp, int srflag);
> +abi_long get_ucontext_sigreturn(CPUX86State *regs, abi_ulong target_sf,
> +                                abi_ulong *target_uc);
>   
>   #endif /* TARGET_ARCH_SIGNAL_H */

You should use the CPUArchState typedef, instead of CPUX86State directly, and place these 
declarations in a shared header.

Otherwise,
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>


r~

Re: [PATCH v4 07/36] bsd-user/i386: Move the inlines into signal.c
Posted by Warner Losh 4 years, 3 months ago
On Fri, Nov 5, 2021 at 10:21 AM Richard Henderson <
richard.henderson@linaro.org> wrote:

> On 11/4/21 11:18 PM, Warner Losh wrote:
> > +abi_long set_sigtramp_args(CPUX86State *env, int sig,
> > +                           struct target_sigframe *frame,
> > +                           abi_ulong frame_addr,
> > +                           struct target_sigaction *ka);
> > +abi_long get_mcontext(CPUX86State *regs, target_mcontext_t *mcp, int
> flags);
> > +abi_long set_mcontext(CPUX86State *regs, target_mcontext_t *mcp, int
> srflag);
> > +abi_long get_ucontext_sigreturn(CPUX86State *regs, abi_ulong target_sf,
> > +                                abi_ulong *target_uc);
> >
> >   #endif /* TARGET_ARCH_SIGNAL_H */
>
> You should use the CPUArchState typedef, instead of CPUX86State directly,
> and place these
> declarations in a shared header.
>

Will do! Thanks!


> Otherwise,
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
>
Re: [PATCH v4 07/36] bsd-user/i386: Move the inlines into signal.c
Posted by Warner Losh 4 years, 3 months ago
On Fri, Nov 5, 2021 at 10:45 AM Warner Losh <imp@bsdimp.com> wrote:

>
>
> On Fri, Nov 5, 2021 at 10:21 AM Richard Henderson <
> richard.henderson@linaro.org> wrote:
>
>> On 11/4/21 11:18 PM, Warner Losh wrote:
>> > +abi_long set_sigtramp_args(CPUX86State *env, int sig,
>> > +                           struct target_sigframe *frame,
>> > +                           abi_ulong frame_addr,
>> > +                           struct target_sigaction *ka);
>> > +abi_long get_mcontext(CPUX86State *regs, target_mcontext_t *mcp, int
>> flags);
>> > +abi_long set_mcontext(CPUX86State *regs, target_mcontext_t *mcp, int
>> srflag);
>> > +abi_long get_ucontext_sigreturn(CPUX86State *regs, abi_ulong target_sf,
>> > +                                abi_ulong *target_uc);
>> >
>> >   #endif /* TARGET_ARCH_SIGNAL_H */
>>
>> You should use the CPUArchState typedef, instead of CPUX86State directly,
>> and place these
>> declarations in a shared header.
>>
>
> Will do! Thanks!
>

FYI: I'm going to add a change that moves this to target_os_ucommon.h after
I've
made i386 and x86_64 use the functions. That way all revisions will still
compile
and I don't have to deal with the 'half-way' state. I'll then tweak the arm
commits
later in the series to not add them arm specific prototypes to the
target_arch_signal.h
file.

Warner


>
>
>> Otherwise,
>> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
>>
>