Message ID | 20240428221450.26460-10-philmd@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | exec: Rework around CPUState user fields (part 2) | expand |
On 4/28/24 15:14, Philippe Mathieu-Daudé wrote: > While each user emulation implentation defines its own > TaskState structure, both use the same get_task_state() > declaration, in particular in common code (such gdbstub). > Declare the method once in "accel/tcg/vcpu-state.h". > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > accel/tcg/vcpu-state.h | 18 ++++++++++++++++++ > bsd-user/qemu.h | 6 +----- > linux-user/qemu.h | 6 +----- > 3 files changed, 20 insertions(+), 10 deletions(-) > create mode 100644 accel/tcg/vcpu-state.h Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~ > > diff --git a/accel/tcg/vcpu-state.h b/accel/tcg/vcpu-state.h > new file mode 100644 > index 0000000000..e407d914df > --- /dev/null > +++ b/accel/tcg/vcpu-state.h > @@ -0,0 +1,18 @@ > +/* > + * SPDX-FileContributor: Philippe Mathieu-Daudé <philmd@linaro.org> > + * SPDX-FileCopyrightText: 2023 Linaro Ltd. > + * SPDX-License-Identifier: GPL-2.0-or-later > + */ > +#ifndef ACCEL_TCG_VCPU_STATE_H > +#define ACCEL_TCG_VCPU_STATE_H > + > +#include "hw/core/cpu.h" > + > +#ifdef CONFIG_USER_ONLY > +static inline TaskState *get_task_state(const CPUState *cs) > +{ > + return cs->opaque; > +} > +#endif > + > +#endif > diff --git a/bsd-user/qemu.h b/bsd-user/qemu.h > index be57374b41..65fe95fed1 100644 > --- a/bsd-user/qemu.h > +++ b/bsd-user/qemu.h > @@ -36,6 +36,7 @@ extern char **environ; > #include "exec/gdbstub.h" > #include "exec/page-protection.h" > #include "qemu/clang-tsa.h" > +#include "accel/tcg/vcpu-state.h" > > #include "qemu-os.h" > /* > @@ -116,11 +117,6 @@ struct TaskState { > struct target_sigaltstack sigaltstack_used; > } __attribute__((aligned(16))); > > -static inline TaskState *get_task_state(CPUState *cs) > -{ > - return cs->opaque; > -} > - > void stop_all_tasks(void); > extern const char *interp_prefix; > extern const char *qemu_uname_release; > diff --git a/linux-user/qemu.h b/linux-user/qemu.h > index 16d9f6ae8c..515af82d8b 100644 > --- a/linux-user/qemu.h > +++ b/linux-user/qemu.h > @@ -8,6 +8,7 @@ > > #include "syscall_defs.h" > #include "target_syscall.h" > +#include "accel/tcg/vcpu-state.h" > > /* > * This is the size of the host kernel's sigset_t, needed where we make > @@ -160,11 +161,6 @@ struct TaskState { > uint64_t start_boottime; > }; > > -static inline TaskState *get_task_state(CPUState *cs) > -{ > - return cs->opaque; > -} > - > abi_long do_brk(abi_ulong new_brk); > int do_guest_openat(CPUArchState *cpu_env, int dirfd, const char *pathname, > int flags, mode_t mode, bool safe);
diff --git a/accel/tcg/vcpu-state.h b/accel/tcg/vcpu-state.h new file mode 100644 index 0000000000..e407d914df --- /dev/null +++ b/accel/tcg/vcpu-state.h @@ -0,0 +1,18 @@ +/* + * SPDX-FileContributor: Philippe Mathieu-Daudé <philmd@linaro.org> + * SPDX-FileCopyrightText: 2023 Linaro Ltd. + * SPDX-License-Identifier: GPL-2.0-or-later + */ +#ifndef ACCEL_TCG_VCPU_STATE_H +#define ACCEL_TCG_VCPU_STATE_H + +#include "hw/core/cpu.h" + +#ifdef CONFIG_USER_ONLY +static inline TaskState *get_task_state(const CPUState *cs) +{ + return cs->opaque; +} +#endif + +#endif diff --git a/bsd-user/qemu.h b/bsd-user/qemu.h index be57374b41..65fe95fed1 100644 --- a/bsd-user/qemu.h +++ b/bsd-user/qemu.h @@ -36,6 +36,7 @@ extern char **environ; #include "exec/gdbstub.h" #include "exec/page-protection.h" #include "qemu/clang-tsa.h" +#include "accel/tcg/vcpu-state.h" #include "qemu-os.h" /* @@ -116,11 +117,6 @@ struct TaskState { struct target_sigaltstack sigaltstack_used; } __attribute__((aligned(16))); -static inline TaskState *get_task_state(CPUState *cs) -{ - return cs->opaque; -} - void stop_all_tasks(void); extern const char *interp_prefix; extern const char *qemu_uname_release; diff --git a/linux-user/qemu.h b/linux-user/qemu.h index 16d9f6ae8c..515af82d8b 100644 --- a/linux-user/qemu.h +++ b/linux-user/qemu.h @@ -8,6 +8,7 @@ #include "syscall_defs.h" #include "target_syscall.h" +#include "accel/tcg/vcpu-state.h" /* * This is the size of the host kernel's sigset_t, needed where we make @@ -160,11 +161,6 @@ struct TaskState { uint64_t start_boottime; }; -static inline TaskState *get_task_state(CPUState *cs) -{ - return cs->opaque; -} - abi_long do_brk(abi_ulong new_brk); int do_guest_openat(CPUArchState *cpu_env, int dirfd, const char *pathname, int flags, mode_t mode, bool safe);
While each user emulation implentation defines its own TaskState structure, both use the same get_task_state() declaration, in particular in common code (such gdbstub). Declare the method once in "accel/tcg/vcpu-state.h". Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- accel/tcg/vcpu-state.h | 18 ++++++++++++++++++ bsd-user/qemu.h | 6 +----- linux-user/qemu.h | 6 +----- 3 files changed, 20 insertions(+), 10 deletions(-) create mode 100644 accel/tcg/vcpu-state.h