qemu-devel
[Top][All Lists]
Advanced

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

[PATCH 2/3] cpu: Forward-declare user-mode TaskState structure


From: Philippe Mathieu-Daudé
Subject: [PATCH 2/3] cpu: Forward-declare user-mode TaskState structure
Date: Thu, 4 Mar 2021 16:26:06 +0100

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é <f4bug@amsat.org>
---
 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




reply via email to

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