The TaskState structure is only used by user emulation. Currently it is hold in CPUState as a void pointer and casted in user-specific code. In order to simplify by - renaming this generic field - remove the casts in the next commit, forward-declare the type in "cpu.h".
Signed-off-by: Philippe Mathieu-Daudé <[email protected]> --- bsd-user/qemu.h | 4 ++-- include/hw/core/cpu.h | 7 +++++-- linux-user/qemu.h | 4 ++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/bsd-user/qemu.h b/bsd-user/qemu.h index 1ec14010216..00e76ad856e 100644 --- a/bsd-user/qemu.h +++ b/bsd-user/qemu.h @@ -83,7 +83,7 @@ struct emulated_sigtable { /* NOTE: we force a big alignment so that the stack stored after is aligned too */ -typedef struct TaskState { +struct TaskState { pid_t ts_tid; /* tid (or pid) of this task */ struct TaskState *next; @@ -96,7 +96,7 @@ typedef struct TaskState { int signal_pending; /* non zero if a signal may be pending */ uint8_t stack[]; -} QEMU_ALIGNED(16) TaskState; +} QEMU_ALIGNED(16); void init_task_state(TaskState *ts); extern const char *qemu_uname_release; diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h index c005d3dc2d8..f4d2169cc8e 100644 --- a/include/hw/core/cpu.h +++ b/include/hw/core/cpu.h @@ -274,6 +274,9 @@ struct qemu_work_item; #define CPU_UNSET_NUMA_NODE_ID -1 #define CPU_TRACE_DSTATE_MAX_EVENTS 32 +/* See bsd-user/qemu.h and linux-user/qemu.h */ +typedef struct TaskState TaskState; + /** * CPUState: * @cpu_index: CPU index (informative). @@ -310,7 +313,7 @@ struct qemu_work_item; * @gdb_num_regs: Number of total registers accessible to GDB. * @gdb_num_g_regs: Number of registers in GDB 'g' packets. * @next_cpu: Next CPU sharing TB cache. - * @opaque: User data. + * @opaque: User task data. * @mem_io_pc: Host Program Counter at which the memory was accessed. * @kvm_fd: vCPU file descriptor for KVM. * @work_mutex: Lock to prevent multiple access to @work_list. @@ -386,7 +389,7 @@ struct CPUState { QTAILQ_HEAD(, CPUWatchpoint) watchpoints; CPUWatchpoint *watchpoint_hit; - void *opaque; + TaskState *opaque; /* In order to avoid passing too many arguments to the MMIO helpers, * we store some rarely used information in the CPU context. diff --git a/linux-user/qemu.h b/linux-user/qemu.h index d7815bfb845..5394f726892 100644 --- a/linux-user/qemu.h +++ b/linux-user/qemu.h @@ -100,7 +100,7 @@ struct emulated_sigtable { /* NOTE: we force a big alignment so that the stack stored after is aligned too */ -typedef struct TaskState { +struct TaskState { pid_t ts_tid; /* tid (or pid) of this task */ #ifdef TARGET_ARM # ifdef TARGET_ABI32 @@ -157,7 +157,7 @@ typedef struct TaskState { /* This thread's sigaltstack, if it has one */ struct target_sigaltstack sigaltstack_used; -} QEMU_ALIGNED(16) TaskState; +} QEMU_ALIGNED(16); extern char *exec_path; void init_task_state(TaskState *ts); -- 2.26.2
