* [PATCH 0/2] linux-user: Move target_struct.h generic definitions to generic/
@ 2022-01-07 4:25 Richard Henderson
2022-01-07 4:25 ` [PATCH 1/2] linux-user/arm: Move target_oabi_flock64 out of target_structs.h Richard Henderson
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Richard Henderson @ 2022-01-07 4:25 UTC (permalink / raw)
To: qemu-devel; +Cc: gaosong, laurent
I noticed this while reviewing loongarch64.
r~
Richard Henderson (2):
linux-user/arm: Move target_oabi_flock64 out of target_structs.h
linux-user: Move target_struct.h generic definitions to generic/
linux-user/aarch64/target_structs.h | 59 +------------------------
linux-user/arm/target_structs.h | 60 +-------------------------
linux-user/cris/target_structs.h | 59 +------------------------
linux-user/generic/target_structs.h | 58 +++++++++++++++++++++++++
linux-user/hexagon/target_structs.h | 55 +----------------------
linux-user/i386/target_structs.h | 59 +------------------------
linux-user/m68k/target_structs.h | 59 +------------------------
linux-user/microblaze/target_structs.h | 59 +------------------------
linux-user/nios2/target_structs.h | 59 +------------------------
linux-user/openrisc/target_structs.h | 59 +------------------------
linux-user/riscv/target_structs.h | 47 +-------------------
linux-user/sh4/target_structs.h | 59 +------------------------
linux-user/x86_64/target_structs.h | 36 +---------------
linux-user/syscall.c | 8 ++++
14 files changed, 78 insertions(+), 658 deletions(-)
create mode 100644 linux-user/generic/target_structs.h
--
2.25.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/2] linux-user/arm: Move target_oabi_flock64 out of target_structs.h
2022-01-07 4:25 [PATCH 0/2] linux-user: Move target_struct.h generic definitions to generic/ Richard Henderson
@ 2022-01-07 4:25 ` Richard Henderson
2022-01-08 17:57 ` Laurent Vivier
2022-01-08 17:58 ` Laurent Vivier
2022-01-07 4:26 ` [PATCH 2/2] linux-user: Move target_struct.h generic definitions to generic/ Richard Henderson
2022-01-07 13:58 ` [PATCH 0/2] " Philippe Mathieu-Daudé
2 siblings, 2 replies; 8+ messages in thread
From: Richard Henderson @ 2022-01-07 4:25 UTC (permalink / raw)
To: qemu-devel; +Cc: gaosong, laurent
Place it next to copy_from/to_user_oabi_flock64, the only users,
inside the existing target-specific ifdef. This leaves only
generic ipc structs in target_structs.h.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
linux-user/arm/target_structs.h | 8 --------
linux-user/syscall.c | 8 ++++++++
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/linux-user/arm/target_structs.h b/linux-user/arm/target_structs.h
index 339b070bf1..25bf8dd3a5 100644
--- a/linux-user/arm/target_structs.h
+++ b/linux-user/arm/target_structs.h
@@ -48,12 +48,4 @@ struct target_shmid_ds {
abi_ulong __unused4;
abi_ulong __unused5;
};
-
-struct target_oabi_flock64 {
- abi_short l_type;
- abi_short l_whence;
- abi_llong l_start;
- abi_llong l_len;
- abi_int l_pid;
-} QEMU_PACKED;
#endif
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index ce9d64896c..ca6e0b8fb0 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -6927,6 +6927,14 @@ typedef abi_long from_flock64_fn(struct flock64 *fl, abi_ulong target_addr);
typedef abi_long to_flock64_fn(abi_ulong target_addr, const struct flock64 *fl);
#if defined(TARGET_ARM) && TARGET_ABI_BITS == 32
+struct target_oabi_flock64 {
+ abi_short l_type;
+ abi_short l_whence;
+ abi_llong l_start;
+ abi_llong l_len;
+ abi_int l_pid;
+} QEMU_PACKED;
+
static inline abi_long copy_from_user_oabi_flock64(struct flock64 *fl,
abi_ulong target_flock_addr)
{
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] linux-user: Move target_struct.h generic definitions to generic/
2022-01-07 4:25 [PATCH 0/2] linux-user: Move target_struct.h generic definitions to generic/ Richard Henderson
2022-01-07 4:25 ` [PATCH 1/2] linux-user/arm: Move target_oabi_flock64 out of target_structs.h Richard Henderson
@ 2022-01-07 4:26 ` Richard Henderson
2022-01-08 17:58 ` Laurent Vivier
2022-01-08 18:03 ` Laurent Vivier
2022-01-07 13:58 ` [PATCH 0/2] " Philippe Mathieu-Daudé
2 siblings, 2 replies; 8+ messages in thread
From: Richard Henderson @ 2022-01-07 4:26 UTC (permalink / raw)
To: qemu-devel; +Cc: gaosong, laurent
Most targets share the same generic ipc structure definitions.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
linux-user/aarch64/target_structs.h | 59 +-------------------------
linux-user/arm/target_structs.h | 52 +----------------------
linux-user/cris/target_structs.h | 59 +-------------------------
linux-user/generic/target_structs.h | 58 +++++++++++++++++++++++++
linux-user/hexagon/target_structs.h | 55 +-----------------------
linux-user/i386/target_structs.h | 59 +-------------------------
linux-user/m68k/target_structs.h | 59 +-------------------------
linux-user/microblaze/target_structs.h | 59 +-------------------------
linux-user/nios2/target_structs.h | 59 +-------------------------
linux-user/openrisc/target_structs.h | 59 +-------------------------
linux-user/riscv/target_structs.h | 47 +-------------------
linux-user/sh4/target_structs.h | 59 +-------------------------
linux-user/x86_64/target_structs.h | 36 +---------------
13 files changed, 70 insertions(+), 650 deletions(-)
create mode 100644 linux-user/generic/target_structs.h
diff --git a/linux-user/aarch64/target_structs.h b/linux-user/aarch64/target_structs.h
index 7c748344ca..3a06f373c3 100644
--- a/linux-user/aarch64/target_structs.h
+++ b/linux-user/aarch64/target_structs.h
@@ -1,58 +1 @@
-/*
- * ARM AArch64 specific structures for linux-user
- *
- * Copyright (c) 2013 Fabrice Bellard
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef AARCH64_TARGET_STRUCTS_H
-#define AARCH64_TARGET_STRUCTS_H
-
-struct target_ipc_perm {
- abi_int __key; /* Key. */
- abi_uint uid; /* Owner's user ID. */
- abi_uint gid; /* Owner's group ID. */
- abi_uint cuid; /* Creator's user ID. */
- abi_uint cgid; /* Creator's group ID. */
- abi_ushort mode; /* Read/write permission. */
- abi_ushort __pad1;
- abi_ushort __seq; /* Sequence number. */
- abi_ushort __pad2;
- abi_ulong __unused1;
- abi_ulong __unused2;
-};
-
-struct target_shmid_ds {
- struct target_ipc_perm shm_perm; /* operation permission struct */
- abi_long shm_segsz; /* size of segment in bytes */
- abi_ulong shm_atime; /* time of last shmat() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused1;
-#endif
- abi_ulong shm_dtime; /* time of last shmdt() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused2;
-#endif
- abi_ulong shm_ctime; /* time of last change by shmctl() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused3;
-#endif
- abi_int shm_cpid; /* pid of creator */
- abi_int shm_lpid; /* pid of last shmop */
- abi_ulong shm_nattch; /* number of current attaches */
- abi_ulong __unused4;
- abi_ulong __unused5;
-};
-
-#endif
+#include "../generic/target_structs.h"
diff --git a/linux-user/arm/target_structs.h b/linux-user/arm/target_structs.h
index 25bf8dd3a5..3a06f373c3 100644
--- a/linux-user/arm/target_structs.h
+++ b/linux-user/arm/target_structs.h
@@ -1,51 +1 @@
-/*
- * ARM specific structures for linux-user
- *
- * Copyright (c) 2013 Fabrice Bellard
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef ARM_TARGET_STRUCTS_H
-#define ARM_TARGET_STRUCTS_H
-
-struct target_ipc_perm {
- abi_int __key; /* Key. */
- abi_uint uid; /* Owner's user ID. */
- abi_uint gid; /* Owner's group ID. */
- abi_uint cuid; /* Creator's user ID. */
- abi_uint cgid; /* Creator's group ID. */
- abi_ushort mode; /* Read/write permission. */
- abi_ushort __pad1;
- abi_ushort __seq; /* Sequence number. */
- abi_ushort __pad2;
- abi_ulong __unused1;
- abi_ulong __unused2;
-};
-
-struct target_shmid_ds {
- struct target_ipc_perm shm_perm; /* operation permission struct */
- abi_long shm_segsz; /* size of segment in bytes */
- abi_ulong shm_atime; /* time of last shmat() */
- abi_ulong __unused1;
- abi_ulong shm_dtime; /* time of last shmdt() */
- abi_ulong __unused2;
- abi_ulong shm_ctime; /* time of last change by shmctl() */
- abi_ulong __unused3;
- abi_int shm_cpid; /* pid of creator */
- abi_int shm_lpid; /* pid of last shmop */
- abi_ulong shm_nattch; /* number of current attaches */
- abi_ulong __unused4;
- abi_ulong __unused5;
-};
-#endif
+#include "../generic/target_structs.h"
diff --git a/linux-user/cris/target_structs.h b/linux-user/cris/target_structs.h
index f949d2331e..3a06f373c3 100644
--- a/linux-user/cris/target_structs.h
+++ b/linux-user/cris/target_structs.h
@@ -1,58 +1 @@
-/*
- * CRIS specific structures for linux-user
- *
- * Copyright (c) 2013 Fabrice Bellard
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef CRIS_TARGET_STRUCTS_H
-#define CRIS_TARGET_STRUCTS_H
-
-struct target_ipc_perm {
- abi_int __key; /* Key. */
- abi_uint uid; /* Owner's user ID. */
- abi_uint gid; /* Owner's group ID. */
- abi_uint cuid; /* Creator's user ID. */
- abi_uint cgid; /* Creator's group ID. */
- abi_ushort mode; /* Read/write permission. */
- abi_ushort __pad1;
- abi_ushort __seq; /* Sequence number. */
- abi_ushort __pad2;
- abi_ulong __unused1;
- abi_ulong __unused2;
-};
-
-struct target_shmid_ds {
- struct target_ipc_perm shm_perm; /* operation permission struct */
- abi_long shm_segsz; /* size of segment in bytes */
- abi_ulong shm_atime; /* time of last shmat() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused1;
-#endif
- abi_ulong shm_dtime; /* time of last shmdt() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused2;
-#endif
- abi_ulong shm_ctime; /* time of last change by shmctl() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused3;
-#endif
- abi_int shm_cpid; /* pid of creator */
- abi_int shm_lpid; /* pid of last shmop */
- abi_ulong shm_nattch; /* number of current attaches */
- abi_ulong __unused4;
- abi_ulong __unused5;
-};
-
-#endif
+#include "../generic/target_structs.h"
diff --git a/linux-user/generic/target_structs.h b/linux-user/generic/target_structs.h
new file mode 100644
index 0000000000..09ff858b6e
--- /dev/null
+++ b/linux-user/generic/target_structs.h
@@ -0,0 +1,58 @@
+/*
+ * Generic structures for linux-user
+ *
+ * Copyright (c) 2013 Fabrice Bellard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef GENERIC_TARGET_STRUCTS_H
+#define GENERIC_TARGET_STRUCTS_H
+
+struct target_ipc_perm {
+ abi_int __key; /* Key. */
+ abi_uint uid; /* Owner's user ID. */
+ abi_uint gid; /* Owner's group ID. */
+ abi_uint cuid; /* Creator's user ID. */
+ abi_uint cgid; /* Creator's group ID. */
+ abi_ushort mode; /* Read/write permission. */
+ abi_ushort __pad1;
+ abi_ushort __seq; /* Sequence number. */
+ abi_ushort __pad2;
+ abi_ulong __unused1;
+ abi_ulong __unused2;
+};
+
+struct target_shmid_ds {
+ struct target_ipc_perm shm_perm; /* operation permission struct */
+ abi_long shm_segsz; /* size of segment in bytes */
+ abi_ulong shm_atime; /* time of last shmat() */
+#if TARGET_ABI_BITS == 32
+ abi_ulong __unused1;
+#endif
+ abi_ulong shm_dtime; /* time of last shmdt() */
+#if TARGET_ABI_BITS == 32
+ abi_ulong __unused2;
+#endif
+ abi_ulong shm_ctime; /* time of last change by shmctl() */
+#if TARGET_ABI_BITS == 32
+ abi_ulong __unused3;
+#endif
+ abi_int shm_cpid; /* pid of creator */
+ abi_int shm_lpid; /* pid of last shmop */
+ abi_ulong shm_nattch; /* number of current attaches */
+ abi_ulong __unused4;
+ abi_ulong __unused5;
+};
+
+#endif
diff --git a/linux-user/hexagon/target_structs.h b/linux-user/hexagon/target_structs.h
index c217d9442a..3a06f373c3 100644
--- a/linux-user/hexagon/target_structs.h
+++ b/linux-user/hexagon/target_structs.h
@@ -1,54 +1 @@
-/*
- * Copyright(c) 2019-2021 Qualcomm Innovation Center, Inc. All Rights Reserved.
- *
- * 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/>.
- */
-
-/*
- * Hexagon specific structures for linux-user
- */
-#ifndef HEXAGON_TARGET_STRUCTS_H
-#define HEXAGON_TARGET_STRUCTS_H
-
-struct target_ipc_perm {
- abi_int __key; /* Key. */
- abi_uint uid; /* Owner's user ID. */
- abi_uint gid; /* Owner's group ID. */
- abi_uint cuid; /* Creator's user ID. */
- abi_uint cgid; /* Creator's group ID. */
- abi_ushort mode; /* Read/write permission. */
- abi_ushort __pad1;
- abi_ushort __seq; /* Sequence number. */
- abi_ushort __pad2;
- abi_ulong __unused1;
- abi_ulong __unused2;
-};
-
-struct target_shmid_ds {
- struct target_ipc_perm shm_perm; /* operation permission struct */
- abi_long shm_segsz; /* size of segment in bytes */
- abi_ulong shm_atime; /* time of last shmat() */
- abi_ulong __unused1;
- abi_ulong shm_dtime; /* time of last shmdt() */
- abi_ulong __unused2;
- abi_ulong shm_ctime; /* time of last change by shmctl() */
- abi_ulong __unused3;
- abi_int shm_cpid; /* pid of creator */
- abi_int shm_lpid; /* pid of last shmop */
- abi_ulong shm_nattch; /* number of current attaches */
- abi_ulong __unused4;
- abi_ulong __unused5;
-};
-
-#endif
+#include "../generic/target_structs.h"
diff --git a/linux-user/i386/target_structs.h b/linux-user/i386/target_structs.h
index e22847fd20..3a06f373c3 100644
--- a/linux-user/i386/target_structs.h
+++ b/linux-user/i386/target_structs.h
@@ -1,58 +1 @@
-/*
- * i386 specific structures for linux-user
- *
- * Copyright (c) 2013 Fabrice Bellard
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef I386_TARGET_STRUCTS_H
-#define I386_TARGET_STRUCTS_H
-
-struct target_ipc_perm {
- abi_int __key; /* Key. */
- abi_uint uid; /* Owner's user ID. */
- abi_uint gid; /* Owner's group ID. */
- abi_uint cuid; /* Creator's user ID. */
- abi_uint cgid; /* Creator's group ID. */
- abi_ushort mode; /* Read/write permission. */
- abi_ushort __pad1;
- abi_ushort __seq; /* Sequence number. */
- abi_ushort __pad2;
- abi_ulong __unused1;
- abi_ulong __unused2;
-};
-
-struct target_shmid_ds {
- struct target_ipc_perm shm_perm; /* operation permission struct */
- abi_long shm_segsz; /* size of segment in bytes */
- abi_ulong shm_atime; /* time of last shmat() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused1;
-#endif
- abi_ulong shm_dtime; /* time of last shmdt() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused2;
-#endif
- abi_ulong shm_ctime; /* time of last change by shmctl() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused3;
-#endif
- abi_int shm_cpid; /* pid of creator */
- abi_int shm_lpid; /* pid of last shmop */
- abi_ulong shm_nattch; /* number of current attaches */
- abi_ulong __unused4;
- abi_ulong __unused5;
-};
-
-#endif
+#include "../generic/target_structs.h"
diff --git a/linux-user/m68k/target_structs.h b/linux-user/m68k/target_structs.h
index e373d481e1..3a06f373c3 100644
--- a/linux-user/m68k/target_structs.h
+++ b/linux-user/m68k/target_structs.h
@@ -1,58 +1 @@
-/*
- * m68k specific structures for linux-user
- *
- * Copyright (c) 2013 Fabrice Bellard
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef M68K_TARGET_STRUCTS_H
-#define M68K_TARGET_STRUCTS_H
-
-struct target_ipc_perm {
- abi_int __key; /* Key. */
- abi_uint uid; /* Owner's user ID. */
- abi_uint gid; /* Owner's group ID. */
- abi_uint cuid; /* Creator's user ID. */
- abi_uint cgid; /* Creator's group ID. */
- abi_ushort mode; /* Read/write permission. */
- abi_ushort __pad1;
- abi_ushort __seq; /* Sequence number. */
- abi_ushort __pad2;
- abi_ulong __unused1;
- abi_ulong __unused2;
-};
-
-struct target_shmid_ds {
- struct target_ipc_perm shm_perm; /* operation permission struct */
- abi_long shm_segsz; /* size of segment in bytes */
- abi_ulong shm_atime; /* time of last shmat() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused1;
-#endif
- abi_ulong shm_dtime; /* time of last shmdt() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused2;
-#endif
- abi_ulong shm_ctime; /* time of last change by shmctl() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused3;
-#endif
- abi_int shm_cpid; /* pid of creator */
- abi_int shm_lpid; /* pid of last shmop */
- abi_ulong shm_nattch; /* number of current attaches */
- abi_ulong __unused4;
- abi_ulong __unused5;
-};
-
-#endif
+#include "../generic/target_structs.h"
diff --git a/linux-user/microblaze/target_structs.h b/linux-user/microblaze/target_structs.h
index d08f6a53a8..3a06f373c3 100644
--- a/linux-user/microblaze/target_structs.h
+++ b/linux-user/microblaze/target_structs.h
@@ -1,58 +1 @@
-/*
- * MicroBlaze specific structures for linux-user
- *
- * Copyright (c) 2013 Fabrice Bellard
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef MICROBLAZE_TARGET_STRUCTS_H
-#define MICROBLAZE_TARGET_STRUCTS_H
-
-struct target_ipc_perm {
- abi_int __key; /* Key. */
- abi_uint uid; /* Owner's user ID. */
- abi_uint gid; /* Owner's group ID. */
- abi_uint cuid; /* Creator's user ID. */
- abi_uint cgid; /* Creator's group ID. */
- abi_ushort mode; /* Read/write permission. */
- abi_ushort __pad1;
- abi_ushort __seq; /* Sequence number. */
- abi_ushort __pad2;
- abi_ulong __unused1;
- abi_ulong __unused2;
-};
-
-struct target_shmid_ds {
- struct target_ipc_perm shm_perm; /* operation permission struct */
- abi_long shm_segsz; /* size of segment in bytes */
- abi_ulong shm_atime; /* time of last shmat() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused1;
-#endif
- abi_ulong shm_dtime; /* time of last shmdt() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused2;
-#endif
- abi_ulong shm_ctime; /* time of last change by shmctl() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused3;
-#endif
- abi_int shm_cpid; /* pid of creator */
- abi_int shm_lpid; /* pid of last shmop */
- abi_ulong shm_nattch; /* number of current attaches */
- abi_ulong __unused4;
- abi_ulong __unused5;
-};
-
-#endif
+#include "../generic/target_structs.h"
diff --git a/linux-user/nios2/target_structs.h b/linux-user/nios2/target_structs.h
index daa2886f98..3a06f373c3 100644
--- a/linux-user/nios2/target_structs.h
+++ b/linux-user/nios2/target_structs.h
@@ -1,58 +1 @@
-/*
- * Nios2 specific structures for linux-user
- *
- * Copyright (c) 2016 Marek Vasut <marex@denx.de>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef NIOS2_TARGET_STRUCTS_H
-#define NIOS2_TARGET_STRUCTS_H
-
-struct target_ipc_perm {
- abi_int __key; /* Key. */
- abi_uint uid; /* Owner's user ID. */
- abi_uint gid; /* Owner's group ID. */
- abi_uint cuid; /* Creator's user ID. */
- abi_uint cgid; /* Creator's group ID. */
- abi_ushort mode; /* Read/write permission. */
- abi_ushort __pad1;
- abi_ushort __seq; /* Sequence number. */
- abi_ushort __pad2;
- abi_ulong __unused1;
- abi_ulong __unused2;
-};
-
-struct target_shmid_ds {
- struct target_ipc_perm shm_perm; /* operation permission struct */
- abi_long shm_segsz; /* size of segment in bytes */
- abi_ulong shm_atime; /* time of last shmat() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused1;
-#endif
- abi_ulong shm_dtime; /* time of last shmdt() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused2;
-#endif
- abi_ulong shm_ctime; /* time of last change by shmctl() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused3;
-#endif
- abi_int shm_cpid; /* pid of creator */
- abi_int shm_lpid; /* pid of last shmop */
- abi_ulong shm_nattch; /* number of current attaches */
- abi_ulong __unused4;
- abi_ulong __unused5;
-};
-
-#endif
+#include "../generic/target_structs.h"
diff --git a/linux-user/openrisc/target_structs.h b/linux-user/openrisc/target_structs.h
index e98e2bc799..3a06f373c3 100644
--- a/linux-user/openrisc/target_structs.h
+++ b/linux-user/openrisc/target_structs.h
@@ -1,58 +1 @@
-/*
- * OpenRISC specific structures for linux-user
- *
- * Copyright (c) 2013 Fabrice Bellard
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef OPENRISC_TARGET_STRUCTS_H
-#define OPENRISC_TARGET_STRUCTS_H
-
-struct target_ipc_perm {
- abi_int __key; /* Key. */
- abi_uint uid; /* Owner's user ID. */
- abi_uint gid; /* Owner's group ID. */
- abi_uint cuid; /* Creator's user ID. */
- abi_uint cgid; /* Creator's group ID. */
- abi_ushort mode; /* Read/write permission. */
- abi_ushort __pad1;
- abi_ushort __seq; /* Sequence number. */
- abi_ushort __pad2;
- abi_ulong __unused1;
- abi_ulong __unused2;
-};
-
-struct target_shmid_ds {
- struct target_ipc_perm shm_perm; /* operation permission struct */
- abi_long shm_segsz; /* size of segment in bytes */
- abi_ulong shm_atime; /* time of last shmat() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused1;
-#endif
- abi_ulong shm_dtime; /* time of last shmdt() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused2;
-#endif
- abi_ulong shm_ctime; /* time of last change by shmctl() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused3;
-#endif
- abi_int shm_cpid; /* pid of creator */
- abi_int shm_lpid; /* pid of last shmop */
- abi_ulong shm_nattch; /* number of current attaches */
- abi_ulong __unused4;
- abi_ulong __unused5;
-};
-
-#endif
+#include "../generic/target_structs.h"
diff --git a/linux-user/riscv/target_structs.h b/linux-user/riscv/target_structs.h
index ea3e5ed17e..3a06f373c3 100644
--- a/linux-user/riscv/target_structs.h
+++ b/linux-user/riscv/target_structs.h
@@ -1,46 +1 @@
-/*
- * RISC-V specific structures for linux-user
- *
- * This is a copy of ../aarch64/target_structs.h atm.
- *
- */
-#ifndef RISCV_TARGET_STRUCTS_H
-#define RISCV_TARGET_STRUCTS_H
-
-struct target_ipc_perm {
- abi_int __key; /* Key. */
- abi_uint uid; /* Owner's user ID. */
- abi_uint gid; /* Owner's group ID. */
- abi_uint cuid; /* Creator's user ID. */
- abi_uint cgid; /* Creator's group ID. */
- abi_ushort mode; /* Read/write permission. */
- abi_ushort __pad1;
- abi_ushort __seq; /* Sequence number. */
- abi_ushort __pad2;
- abi_ulong __unused1;
- abi_ulong __unused2;
-};
-
-struct target_shmid_ds {
- struct target_ipc_perm shm_perm; /* operation permission struct */
- abi_long shm_segsz; /* size of segment in bytes */
- abi_ulong shm_atime; /* time of last shmat() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused1;
-#endif
- abi_ulong shm_dtime; /* time of last shmdt() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused2;
-#endif
- abi_ulong shm_ctime; /* time of last change by shmctl() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused3;
-#endif
- abi_int shm_cpid; /* pid of creator */
- abi_int shm_lpid; /* pid of last shmop */
- abi_ulong shm_nattch; /* number of current attaches */
- abi_ulong __unused4;
- abi_ulong __unused5;
-};
-
-#endif
+#include "../generic/target_structs.h"
diff --git a/linux-user/sh4/target_structs.h b/linux-user/sh4/target_structs.h
index 00ac39478b..3a06f373c3 100644
--- a/linux-user/sh4/target_structs.h
+++ b/linux-user/sh4/target_structs.h
@@ -1,58 +1 @@
-/*
- * SH4 specific structures for linux-user
- *
- * Copyright (c) 2013 Fabrice Bellard
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef SH4_TARGET_STRUCTS_H
-#define SH4_TARGET_STRUCTS_H
-
-struct target_ipc_perm {
- abi_int __key; /* Key. */
- abi_uint uid; /* Owner's user ID. */
- abi_uint gid; /* Owner's group ID. */
- abi_uint cuid; /* Creator's user ID. */
- abi_uint cgid; /* Creator's group ID. */
- abi_ushort mode; /* Read/write permission. */
- abi_ushort __pad1;
- abi_ushort __seq; /* Sequence number. */
- abi_ushort __pad2;
- abi_ulong __unused1;
- abi_ulong __unused2;
-};
-
-struct target_shmid_ds {
- struct target_ipc_perm shm_perm; /* operation permission struct */
- abi_long shm_segsz; /* size of segment in bytes */
- abi_ulong shm_atime; /* time of last shmat() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused1;
-#endif
- abi_ulong shm_dtime; /* time of last shmdt() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused2;
-#endif
- abi_ulong shm_ctime; /* time of last change by shmctl() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused3;
-#endif
- abi_int shm_cpid; /* pid of creator */
- abi_int shm_lpid; /* pid of last shmop */
- abi_ulong shm_nattch; /* number of current attaches */
- abi_ulong __unused4;
- abi_ulong __unused5;
-};
-
-#endif
+#include "../generic/target_structs.h"
diff --git a/linux-user/x86_64/target_structs.h b/linux-user/x86_64/target_structs.h
index ce367b253b..f1181383c4 100644
--- a/linux-user/x86_64/target_structs.h
+++ b/linux-user/x86_64/target_structs.h
@@ -19,41 +19,7 @@
#ifndef X86_64_TARGET_STRUCTS_H
#define X86_64_TARGET_STRUCTS_H
-struct target_ipc_perm {
- abi_int __key; /* Key. */
- abi_uint uid; /* Owner's user ID. */
- abi_uint gid; /* Owner's group ID. */
- abi_uint cuid; /* Creator's user ID. */
- abi_uint cgid; /* Creator's group ID. */
- abi_ushort mode; /* Read/write permission. */
- abi_ushort __pad1;
- abi_ushort __seq; /* Sequence number. */
- abi_ushort __pad2;
- abi_ulong __unused1;
- abi_ulong __unused2;
-};
-
-struct target_shmid_ds {
- struct target_ipc_perm shm_perm; /* operation permission struct */
- abi_long shm_segsz; /* size of segment in bytes */
- abi_ulong shm_atime; /* time of last shmat() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused1;
-#endif
- abi_ulong shm_dtime; /* time of last shmdt() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused2;
-#endif
- abi_ulong shm_ctime; /* time of last change by shmctl() */
-#if TARGET_ABI_BITS == 32
- abi_ulong __unused3;
-#endif
- abi_int shm_cpid; /* pid of creator */
- abi_int shm_lpid; /* pid of last shmop */
- abi_ulong shm_nattch; /* number of current attaches */
- abi_ulong __unused4;
- abi_ulong __unused5;
-};
+#include "../generic/target_structs.h"
/* The x86 definition differs from the generic one in that the
* two padding fields exist whether the ABI is 32 bits or 64 bits.
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 0/2] linux-user: Move target_struct.h generic definitions to generic/
2022-01-07 4:25 [PATCH 0/2] linux-user: Move target_struct.h generic definitions to generic/ Richard Henderson
2022-01-07 4:25 ` [PATCH 1/2] linux-user/arm: Move target_oabi_flock64 out of target_structs.h Richard Henderson
2022-01-07 4:26 ` [PATCH 2/2] linux-user: Move target_struct.h generic definitions to generic/ Richard Henderson
@ 2022-01-07 13:58 ` Philippe Mathieu-Daudé
2 siblings, 0 replies; 8+ messages in thread
From: Philippe Mathieu-Daudé @ 2022-01-07 13:58 UTC (permalink / raw)
To: Richard Henderson, qemu-devel; +Cc: gaosong, laurent
On 7/1/22 05:25, Richard Henderson wrote:
> I noticed this while reviewing loongarch64.
>
> r~
>
> Richard Henderson (2):
> linux-user/arm: Move target_oabi_flock64 out of target_structs.h
> linux-user: Move target_struct.h generic definitions to generic/
Series:
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] linux-user/arm: Move target_oabi_flock64 out of target_structs.h
2022-01-07 4:25 ` [PATCH 1/2] linux-user/arm: Move target_oabi_flock64 out of target_structs.h Richard Henderson
@ 2022-01-08 17:57 ` Laurent Vivier
2022-01-08 17:58 ` Laurent Vivier
1 sibling, 0 replies; 8+ messages in thread
From: Laurent Vivier @ 2022-01-08 17:57 UTC (permalink / raw)
To: Richard Henderson, qemu-devel; +Cc: gaosong
Le 07/01/2022 à 05:25, Richard Henderson a écrit :
> Place it next to copy_from/to_user_oabi_flock64, the only users,
> inside the existing target-specific ifdef. This leaves only
> generic ipc structs in target_structs.h.
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> linux-user/arm/target_structs.h | 8 --------
> linux-user/syscall.c | 8 ++++++++
> 2 files changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/linux-user/arm/target_structs.h b/linux-user/arm/target_structs.h
> index 339b070bf1..25bf8dd3a5 100644
> --- a/linux-user/arm/target_structs.h
> +++ b/linux-user/arm/target_structs.h
> @@ -48,12 +48,4 @@ struct target_shmid_ds {
> abi_ulong __unused4;
> abi_ulong __unused5;
> };
> -
> -struct target_oabi_flock64 {
> - abi_short l_type;
> - abi_short l_whence;
> - abi_llong l_start;
> - abi_llong l_len;
> - abi_int l_pid;
> -} QEMU_PACKED;
> #endif
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index ce9d64896c..ca6e0b8fb0 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -6927,6 +6927,14 @@ typedef abi_long from_flock64_fn(struct flock64 *fl, abi_ulong target_addr);
> typedef abi_long to_flock64_fn(abi_ulong target_addr, const struct flock64 *fl);
>
> #if defined(TARGET_ARM) && TARGET_ABI_BITS == 32
> +struct target_oabi_flock64 {
> + abi_short l_type;
> + abi_short l_whence;
> + abi_llong l_start;
> + abi_llong l_len;
> + abi_int l_pid;
> +} QEMU_PACKED;
> +
> static inline abi_long copy_from_user_oabi_flock64(struct flock64 *fl,
> abi_ulong target_flock_addr)
> {
Applied to my linux-user-for-7.0 branch.
Thanks,
Laurent
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] linux-user: Move target_struct.h generic definitions to generic/
2022-01-07 4:26 ` [PATCH 2/2] linux-user: Move target_struct.h generic definitions to generic/ Richard Henderson
@ 2022-01-08 17:58 ` Laurent Vivier
2022-01-08 18:03 ` Laurent Vivier
1 sibling, 0 replies; 8+ messages in thread
From: Laurent Vivier @ 2022-01-08 17:58 UTC (permalink / raw)
To: Richard Henderson, qemu-devel; +Cc: gaosong
Le 07/01/2022 à 05:26, Richard Henderson a écrit :
> Most targets share the same generic ipc structure definitions.
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> linux-user/aarch64/target_structs.h | 59 +-------------------------
> linux-user/arm/target_structs.h | 52 +----------------------
> linux-user/cris/target_structs.h | 59 +-------------------------
> linux-user/generic/target_structs.h | 58 +++++++++++++++++++++++++
> linux-user/hexagon/target_structs.h | 55 +-----------------------
> linux-user/i386/target_structs.h | 59 +-------------------------
> linux-user/m68k/target_structs.h | 59 +-------------------------
> linux-user/microblaze/target_structs.h | 59 +-------------------------
> linux-user/nios2/target_structs.h | 59 +-------------------------
> linux-user/openrisc/target_structs.h | 59 +-------------------------
> linux-user/riscv/target_structs.h | 47 +-------------------
> linux-user/sh4/target_structs.h | 59 +-------------------------
> linux-user/x86_64/target_structs.h | 36 +---------------
> 13 files changed, 70 insertions(+), 650 deletions(-)
> create mode 100644 linux-user/generic/target_structs.h
>
> diff --git a/linux-user/aarch64/target_structs.h b/linux-user/aarch64/target_structs.h
> index 7c748344ca..3a06f373c3 100644
> --- a/linux-user/aarch64/target_structs.h
> +++ b/linux-user/aarch64/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * ARM AArch64 specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This library is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU Lesser General Public
> - * License as published by the Free Software Foundation; either
> - * version 2.1 of the License, or (at your option) any later version.
> - *
> - * This library 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
> - * Lesser General Public License for more details.
> - *
> - * You should have received a copy of the GNU Lesser General Public
> - * License along with this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef AARCH64_TARGET_STRUCTS_H
> -#define AARCH64_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> - abi_int __key; /* Key. */
> - abi_uint uid; /* Owner's user ID. */
> - abi_uint gid; /* Owner's group ID. */
> - abi_uint cuid; /* Creator's user ID. */
> - abi_uint cgid; /* Creator's group ID. */
> - abi_ushort mode; /* Read/write permission. */
> - abi_ushort __pad1;
> - abi_ushort __seq; /* Sequence number. */
> - abi_ushort __pad2;
> - abi_ulong __unused1;
> - abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> - struct target_ipc_perm shm_perm; /* operation permission struct */
> - abi_long shm_segsz; /* size of segment in bytes */
> - abi_ulong shm_atime; /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused1;
> -#endif
> - abi_ulong shm_dtime; /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused2;
> -#endif
> - abi_ulong shm_ctime; /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused3;
> -#endif
> - abi_int shm_cpid; /* pid of creator */
> - abi_int shm_lpid; /* pid of last shmop */
> - abi_ulong shm_nattch; /* number of current attaches */
> - abi_ulong __unused4;
> - abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/arm/target_structs.h b/linux-user/arm/target_structs.h
> index 25bf8dd3a5..3a06f373c3 100644
> --- a/linux-user/arm/target_structs.h
> +++ b/linux-user/arm/target_structs.h
> @@ -1,51 +1 @@
> -/*
> - * ARM specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This library is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU Lesser General Public
> - * License as published by the Free Software Foundation; either
> - * version 2.1 of the License, or (at your option) any later version.
> - *
> - * This library 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
> - * Lesser General Public License for more details.
> - *
> - * You should have received a copy of the GNU Lesser General Public
> - * License along with this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef ARM_TARGET_STRUCTS_H
> -#define ARM_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> - abi_int __key; /* Key. */
> - abi_uint uid; /* Owner's user ID. */
> - abi_uint gid; /* Owner's group ID. */
> - abi_uint cuid; /* Creator's user ID. */
> - abi_uint cgid; /* Creator's group ID. */
> - abi_ushort mode; /* Read/write permission. */
> - abi_ushort __pad1;
> - abi_ushort __seq; /* Sequence number. */
> - abi_ushort __pad2;
> - abi_ulong __unused1;
> - abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> - struct target_ipc_perm shm_perm; /* operation permission struct */
> - abi_long shm_segsz; /* size of segment in bytes */
> - abi_ulong shm_atime; /* time of last shmat() */
> - abi_ulong __unused1;
> - abi_ulong shm_dtime; /* time of last shmdt() */
> - abi_ulong __unused2;
> - abi_ulong shm_ctime; /* time of last change by shmctl() */
> - abi_ulong __unused3;
> - abi_int shm_cpid; /* pid of creator */
> - abi_int shm_lpid; /* pid of last shmop */
> - abi_ulong shm_nattch; /* number of current attaches */
> - abi_ulong __unused4;
> - abi_ulong __unused5;
> -};
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/cris/target_structs.h b/linux-user/cris/target_structs.h
> index f949d2331e..3a06f373c3 100644
> --- a/linux-user/cris/target_structs.h
> +++ b/linux-user/cris/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * CRIS specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This library is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU Lesser General Public
> - * License as published by the Free Software Foundation; either
> - * version 2.1 of the License, or (at your option) any later version.
> - *
> - * This library 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
> - * Lesser General Public License for more details.
> - *
> - * You should have received a copy of the GNU Lesser General Public
> - * License along with this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef CRIS_TARGET_STRUCTS_H
> -#define CRIS_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> - abi_int __key; /* Key. */
> - abi_uint uid; /* Owner's user ID. */
> - abi_uint gid; /* Owner's group ID. */
> - abi_uint cuid; /* Creator's user ID. */
> - abi_uint cgid; /* Creator's group ID. */
> - abi_ushort mode; /* Read/write permission. */
> - abi_ushort __pad1;
> - abi_ushort __seq; /* Sequence number. */
> - abi_ushort __pad2;
> - abi_ulong __unused1;
> - abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> - struct target_ipc_perm shm_perm; /* operation permission struct */
> - abi_long shm_segsz; /* size of segment in bytes */
> - abi_ulong shm_atime; /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused1;
> -#endif
> - abi_ulong shm_dtime; /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused2;
> -#endif
> - abi_ulong shm_ctime; /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused3;
> -#endif
> - abi_int shm_cpid; /* pid of creator */
> - abi_int shm_lpid; /* pid of last shmop */
> - abi_ulong shm_nattch; /* number of current attaches */
> - abi_ulong __unused4;
> - abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/generic/target_structs.h b/linux-user/generic/target_structs.h
> new file mode 100644
> index 0000000000..09ff858b6e
> --- /dev/null
> +++ b/linux-user/generic/target_structs.h
> @@ -0,0 +1,58 @@
> +/*
> + * Generic structures for linux-user
> + *
> + * Copyright (c) 2013 Fabrice Bellard
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * This library 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
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, see <http://www.gnu.org/licenses/>.
> + */
> +#ifndef GENERIC_TARGET_STRUCTS_H
> +#define GENERIC_TARGET_STRUCTS_H
> +
> +struct target_ipc_perm {
> + abi_int __key; /* Key. */
> + abi_uint uid; /* Owner's user ID. */
> + abi_uint gid; /* Owner's group ID. */
> + abi_uint cuid; /* Creator's user ID. */
> + abi_uint cgid; /* Creator's group ID. */
> + abi_ushort mode; /* Read/write permission. */
> + abi_ushort __pad1;
> + abi_ushort __seq; /* Sequence number. */
> + abi_ushort __pad2;
> + abi_ulong __unused1;
> + abi_ulong __unused2;
> +};
> +
> +struct target_shmid_ds {
> + struct target_ipc_perm shm_perm; /* operation permission struct */
> + abi_long shm_segsz; /* size of segment in bytes */
> + abi_ulong shm_atime; /* time of last shmat() */
> +#if TARGET_ABI_BITS == 32
> + abi_ulong __unused1;
> +#endif
> + abi_ulong shm_dtime; /* time of last shmdt() */
> +#if TARGET_ABI_BITS == 32
> + abi_ulong __unused2;
> +#endif
> + abi_ulong shm_ctime; /* time of last change by shmctl() */
> +#if TARGET_ABI_BITS == 32
> + abi_ulong __unused3;
> +#endif
> + abi_int shm_cpid; /* pid of creator */
> + abi_int shm_lpid; /* pid of last shmop */
> + abi_ulong shm_nattch; /* number of current attaches */
> + abi_ulong __unused4;
> + abi_ulong __unused5;
> +};
> +
> +#endif
> diff --git a/linux-user/hexagon/target_structs.h b/linux-user/hexagon/target_structs.h
> index c217d9442a..3a06f373c3 100644
> --- a/linux-user/hexagon/target_structs.h
> +++ b/linux-user/hexagon/target_structs.h
> @@ -1,54 +1 @@
> -/*
> - * Copyright(c) 2019-2021 Qualcomm Innovation Center, Inc. All Rights Reserved.
> - *
> - * 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/>.
> - */
> -
> -/*
> - * Hexagon specific structures for linux-user
> - */
> -#ifndef HEXAGON_TARGET_STRUCTS_H
> -#define HEXAGON_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> - abi_int __key; /* Key. */
> - abi_uint uid; /* Owner's user ID. */
> - abi_uint gid; /* Owner's group ID. */
> - abi_uint cuid; /* Creator's user ID. */
> - abi_uint cgid; /* Creator's group ID. */
> - abi_ushort mode; /* Read/write permission. */
> - abi_ushort __pad1;
> - abi_ushort __seq; /* Sequence number. */
> - abi_ushort __pad2;
> - abi_ulong __unused1;
> - abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> - struct target_ipc_perm shm_perm; /* operation permission struct */
> - abi_long shm_segsz; /* size of segment in bytes */
> - abi_ulong shm_atime; /* time of last shmat() */
> - abi_ulong __unused1;
> - abi_ulong shm_dtime; /* time of last shmdt() */
> - abi_ulong __unused2;
> - abi_ulong shm_ctime; /* time of last change by shmctl() */
> - abi_ulong __unused3;
> - abi_int shm_cpid; /* pid of creator */
> - abi_int shm_lpid; /* pid of last shmop */
> - abi_ulong shm_nattch; /* number of current attaches */
> - abi_ulong __unused4;
> - abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/i386/target_structs.h b/linux-user/i386/target_structs.h
> index e22847fd20..3a06f373c3 100644
> --- a/linux-user/i386/target_structs.h
> +++ b/linux-user/i386/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * i386 specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This library is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU Lesser General Public
> - * License as published by the Free Software Foundation; either
> - * version 2.1 of the License, or (at your option) any later version.
> - *
> - * This library 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
> - * Lesser General Public License for more details.
> - *
> - * You should have received a copy of the GNU Lesser General Public
> - * License along with this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef I386_TARGET_STRUCTS_H
> -#define I386_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> - abi_int __key; /* Key. */
> - abi_uint uid; /* Owner's user ID. */
> - abi_uint gid; /* Owner's group ID. */
> - abi_uint cuid; /* Creator's user ID. */
> - abi_uint cgid; /* Creator's group ID. */
> - abi_ushort mode; /* Read/write permission. */
> - abi_ushort __pad1;
> - abi_ushort __seq; /* Sequence number. */
> - abi_ushort __pad2;
> - abi_ulong __unused1;
> - abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> - struct target_ipc_perm shm_perm; /* operation permission struct */
> - abi_long shm_segsz; /* size of segment in bytes */
> - abi_ulong shm_atime; /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused1;
> -#endif
> - abi_ulong shm_dtime; /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused2;
> -#endif
> - abi_ulong shm_ctime; /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused3;
> -#endif
> - abi_int shm_cpid; /* pid of creator */
> - abi_int shm_lpid; /* pid of last shmop */
> - abi_ulong shm_nattch; /* number of current attaches */
> - abi_ulong __unused4;
> - abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/m68k/target_structs.h b/linux-user/m68k/target_structs.h
> index e373d481e1..3a06f373c3 100644
> --- a/linux-user/m68k/target_structs.h
> +++ b/linux-user/m68k/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * m68k specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This library is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU Lesser General Public
> - * License as published by the Free Software Foundation; either
> - * version 2.1 of the License, or (at your option) any later version.
> - *
> - * This library 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
> - * Lesser General Public License for more details.
> - *
> - * You should have received a copy of the GNU Lesser General Public
> - * License along with this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef M68K_TARGET_STRUCTS_H
> -#define M68K_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> - abi_int __key; /* Key. */
> - abi_uint uid; /* Owner's user ID. */
> - abi_uint gid; /* Owner's group ID. */
> - abi_uint cuid; /* Creator's user ID. */
> - abi_uint cgid; /* Creator's group ID. */
> - abi_ushort mode; /* Read/write permission. */
> - abi_ushort __pad1;
> - abi_ushort __seq; /* Sequence number. */
> - abi_ushort __pad2;
> - abi_ulong __unused1;
> - abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> - struct target_ipc_perm shm_perm; /* operation permission struct */
> - abi_long shm_segsz; /* size of segment in bytes */
> - abi_ulong shm_atime; /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused1;
> -#endif
> - abi_ulong shm_dtime; /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused2;
> -#endif
> - abi_ulong shm_ctime; /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused3;
> -#endif
> - abi_int shm_cpid; /* pid of creator */
> - abi_int shm_lpid; /* pid of last shmop */
> - abi_ulong shm_nattch; /* number of current attaches */
> - abi_ulong __unused4;
> - abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/microblaze/target_structs.h b/linux-user/microblaze/target_structs.h
> index d08f6a53a8..3a06f373c3 100644
> --- a/linux-user/microblaze/target_structs.h
> +++ b/linux-user/microblaze/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * MicroBlaze specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This library is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU Lesser General Public
> - * License as published by the Free Software Foundation; either
> - * version 2.1 of the License, or (at your option) any later version.
> - *
> - * This library 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
> - * Lesser General Public License for more details.
> - *
> - * You should have received a copy of the GNU Lesser General Public
> - * License along with this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef MICROBLAZE_TARGET_STRUCTS_H
> -#define MICROBLAZE_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> - abi_int __key; /* Key. */
> - abi_uint uid; /* Owner's user ID. */
> - abi_uint gid; /* Owner's group ID. */
> - abi_uint cuid; /* Creator's user ID. */
> - abi_uint cgid; /* Creator's group ID. */
> - abi_ushort mode; /* Read/write permission. */
> - abi_ushort __pad1;
> - abi_ushort __seq; /* Sequence number. */
> - abi_ushort __pad2;
> - abi_ulong __unused1;
> - abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> - struct target_ipc_perm shm_perm; /* operation permission struct */
> - abi_long shm_segsz; /* size of segment in bytes */
> - abi_ulong shm_atime; /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused1;
> -#endif
> - abi_ulong shm_dtime; /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused2;
> -#endif
> - abi_ulong shm_ctime; /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused3;
> -#endif
> - abi_int shm_cpid; /* pid of creator */
> - abi_int shm_lpid; /* pid of last shmop */
> - abi_ulong shm_nattch; /* number of current attaches */
> - abi_ulong __unused4;
> - abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/nios2/target_structs.h b/linux-user/nios2/target_structs.h
> index daa2886f98..3a06f373c3 100644
> --- a/linux-user/nios2/target_structs.h
> +++ b/linux-user/nios2/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * Nios2 specific structures for linux-user
> - *
> - * Copyright (c) 2016 Marek Vasut <marex@denx.de>
> - *
> - * This library is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU Lesser General Public
> - * License as published by the Free Software Foundation; either
> - * version 2.1 of the License, or (at your option) any later version.
> - *
> - * This library 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
> - * Lesser General Public License for more details.
> - *
> - * You should have received a copy of the GNU Lesser General Public
> - * License along with this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef NIOS2_TARGET_STRUCTS_H
> -#define NIOS2_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> - abi_int __key; /* Key. */
> - abi_uint uid; /* Owner's user ID. */
> - abi_uint gid; /* Owner's group ID. */
> - abi_uint cuid; /* Creator's user ID. */
> - abi_uint cgid; /* Creator's group ID. */
> - abi_ushort mode; /* Read/write permission. */
> - abi_ushort __pad1;
> - abi_ushort __seq; /* Sequence number. */
> - abi_ushort __pad2;
> - abi_ulong __unused1;
> - abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> - struct target_ipc_perm shm_perm; /* operation permission struct */
> - abi_long shm_segsz; /* size of segment in bytes */
> - abi_ulong shm_atime; /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused1;
> -#endif
> - abi_ulong shm_dtime; /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused2;
> -#endif
> - abi_ulong shm_ctime; /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused3;
> -#endif
> - abi_int shm_cpid; /* pid of creator */
> - abi_int shm_lpid; /* pid of last shmop */
> - abi_ulong shm_nattch; /* number of current attaches */
> - abi_ulong __unused4;
> - abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/openrisc/target_structs.h b/linux-user/openrisc/target_structs.h
> index e98e2bc799..3a06f373c3 100644
> --- a/linux-user/openrisc/target_structs.h
> +++ b/linux-user/openrisc/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * OpenRISC specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This library is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU Lesser General Public
> - * License as published by the Free Software Foundation; either
> - * version 2.1 of the License, or (at your option) any later version.
> - *
> - * This library 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
> - * Lesser General Public License for more details.
> - *
> - * You should have received a copy of the GNU Lesser General Public
> - * License along with this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef OPENRISC_TARGET_STRUCTS_H
> -#define OPENRISC_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> - abi_int __key; /* Key. */
> - abi_uint uid; /* Owner's user ID. */
> - abi_uint gid; /* Owner's group ID. */
> - abi_uint cuid; /* Creator's user ID. */
> - abi_uint cgid; /* Creator's group ID. */
> - abi_ushort mode; /* Read/write permission. */
> - abi_ushort __pad1;
> - abi_ushort __seq; /* Sequence number. */
> - abi_ushort __pad2;
> - abi_ulong __unused1;
> - abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> - struct target_ipc_perm shm_perm; /* operation permission struct */
> - abi_long shm_segsz; /* size of segment in bytes */
> - abi_ulong shm_atime; /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused1;
> -#endif
> - abi_ulong shm_dtime; /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused2;
> -#endif
> - abi_ulong shm_ctime; /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused3;
> -#endif
> - abi_int shm_cpid; /* pid of creator */
> - abi_int shm_lpid; /* pid of last shmop */
> - abi_ulong shm_nattch; /* number of current attaches */
> - abi_ulong __unused4;
> - abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/riscv/target_structs.h b/linux-user/riscv/target_structs.h
> index ea3e5ed17e..3a06f373c3 100644
> --- a/linux-user/riscv/target_structs.h
> +++ b/linux-user/riscv/target_structs.h
> @@ -1,46 +1 @@
> -/*
> - * RISC-V specific structures for linux-user
> - *
> - * This is a copy of ../aarch64/target_structs.h atm.
> - *
> - */
> -#ifndef RISCV_TARGET_STRUCTS_H
> -#define RISCV_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> - abi_int __key; /* Key. */
> - abi_uint uid; /* Owner's user ID. */
> - abi_uint gid; /* Owner's group ID. */
> - abi_uint cuid; /* Creator's user ID. */
> - abi_uint cgid; /* Creator's group ID. */
> - abi_ushort mode; /* Read/write permission. */
> - abi_ushort __pad1;
> - abi_ushort __seq; /* Sequence number. */
> - abi_ushort __pad2;
> - abi_ulong __unused1;
> - abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> - struct target_ipc_perm shm_perm; /* operation permission struct */
> - abi_long shm_segsz; /* size of segment in bytes */
> - abi_ulong shm_atime; /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused1;
> -#endif
> - abi_ulong shm_dtime; /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused2;
> -#endif
> - abi_ulong shm_ctime; /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused3;
> -#endif
> - abi_int shm_cpid; /* pid of creator */
> - abi_int shm_lpid; /* pid of last shmop */
> - abi_ulong shm_nattch; /* number of current attaches */
> - abi_ulong __unused4;
> - abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/sh4/target_structs.h b/linux-user/sh4/target_structs.h
> index 00ac39478b..3a06f373c3 100644
> --- a/linux-user/sh4/target_structs.h
> +++ b/linux-user/sh4/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * SH4 specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This library is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU Lesser General Public
> - * License as published by the Free Software Foundation; either
> - * version 2.1 of the License, or (at your option) any later version.
> - *
> - * This library 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
> - * Lesser General Public License for more details.
> - *
> - * You should have received a copy of the GNU Lesser General Public
> - * License along with this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef SH4_TARGET_STRUCTS_H
> -#define SH4_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> - abi_int __key; /* Key. */
> - abi_uint uid; /* Owner's user ID. */
> - abi_uint gid; /* Owner's group ID. */
> - abi_uint cuid; /* Creator's user ID. */
> - abi_uint cgid; /* Creator's group ID. */
> - abi_ushort mode; /* Read/write permission. */
> - abi_ushort __pad1;
> - abi_ushort __seq; /* Sequence number. */
> - abi_ushort __pad2;
> - abi_ulong __unused1;
> - abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> - struct target_ipc_perm shm_perm; /* operation permission struct */
> - abi_long shm_segsz; /* size of segment in bytes */
> - abi_ulong shm_atime; /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused1;
> -#endif
> - abi_ulong shm_dtime; /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused2;
> -#endif
> - abi_ulong shm_ctime; /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused3;
> -#endif
> - abi_int shm_cpid; /* pid of creator */
> - abi_int shm_lpid; /* pid of last shmop */
> - abi_ulong shm_nattch; /* number of current attaches */
> - abi_ulong __unused4;
> - abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/x86_64/target_structs.h b/linux-user/x86_64/target_structs.h
> index ce367b253b..f1181383c4 100644
> --- a/linux-user/x86_64/target_structs.h
> +++ b/linux-user/x86_64/target_structs.h
> @@ -19,41 +19,7 @@
> #ifndef X86_64_TARGET_STRUCTS_H
> #define X86_64_TARGET_STRUCTS_H
>
> -struct target_ipc_perm {
> - abi_int __key; /* Key. */
> - abi_uint uid; /* Owner's user ID. */
> - abi_uint gid; /* Owner's group ID. */
> - abi_uint cuid; /* Creator's user ID. */
> - abi_uint cgid; /* Creator's group ID. */
> - abi_ushort mode; /* Read/write permission. */
> - abi_ushort __pad1;
> - abi_ushort __seq; /* Sequence number. */
> - abi_ushort __pad2;
> - abi_ulong __unused1;
> - abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> - struct target_ipc_perm shm_perm; /* operation permission struct */
> - abi_long shm_segsz; /* size of segment in bytes */
> - abi_ulong shm_atime; /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused1;
> -#endif
> - abi_ulong shm_dtime; /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused2;
> -#endif
> - abi_ulong shm_ctime; /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused3;
> -#endif
> - abi_int shm_cpid; /* pid of creator */
> - abi_int shm_lpid; /* pid of last shmop */
> - abi_ulong shm_nattch; /* number of current attaches */
> - abi_ulong __unused4;
> - abi_ulong __unused5;
> -};
> +#include "../generic/target_structs.h"
>
> /* The x86 definition differs from the generic one in that the
> * two padding fields exist whether the ABI is 32 bits or 64 bits.
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] linux-user/arm: Move target_oabi_flock64 out of target_structs.h
2022-01-07 4:25 ` [PATCH 1/2] linux-user/arm: Move target_oabi_flock64 out of target_structs.h Richard Henderson
2022-01-08 17:57 ` Laurent Vivier
@ 2022-01-08 17:58 ` Laurent Vivier
1 sibling, 0 replies; 8+ messages in thread
From: Laurent Vivier @ 2022-01-08 17:58 UTC (permalink / raw)
To: Richard Henderson, qemu-devel; +Cc: gaosong
Le 07/01/2022 à 05:25, Richard Henderson a écrit :
> Place it next to copy_from/to_user_oabi_flock64, the only users,
> inside the existing target-specific ifdef. This leaves only
> generic ipc structs in target_structs.h.
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> linux-user/arm/target_structs.h | 8 --------
> linux-user/syscall.c | 8 ++++++++
> 2 files changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/linux-user/arm/target_structs.h b/linux-user/arm/target_structs.h
> index 339b070bf1..25bf8dd3a5 100644
> --- a/linux-user/arm/target_structs.h
> +++ b/linux-user/arm/target_structs.h
> @@ -48,12 +48,4 @@ struct target_shmid_ds {
> abi_ulong __unused4;
> abi_ulong __unused5;
> };
> -
> -struct target_oabi_flock64 {
> - abi_short l_type;
> - abi_short l_whence;
> - abi_llong l_start;
> - abi_llong l_len;
> - abi_int l_pid;
> -} QEMU_PACKED;
> #endif
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index ce9d64896c..ca6e0b8fb0 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -6927,6 +6927,14 @@ typedef abi_long from_flock64_fn(struct flock64 *fl, abi_ulong target_addr);
> typedef abi_long to_flock64_fn(abi_ulong target_addr, const struct flock64 *fl);
>
> #if defined(TARGET_ARM) && TARGET_ABI_BITS == 32
> +struct target_oabi_flock64 {
> + abi_short l_type;
> + abi_short l_whence;
> + abi_llong l_start;
> + abi_llong l_len;
> + abi_int l_pid;
> +} QEMU_PACKED;
> +
> static inline abi_long copy_from_user_oabi_flock64(struct flock64 *fl,
> abi_ulong target_flock_addr)
> {
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] linux-user: Move target_struct.h generic definitions to generic/
2022-01-07 4:26 ` [PATCH 2/2] linux-user: Move target_struct.h generic definitions to generic/ Richard Henderson
2022-01-08 17:58 ` Laurent Vivier
@ 2022-01-08 18:03 ` Laurent Vivier
1 sibling, 0 replies; 8+ messages in thread
From: Laurent Vivier @ 2022-01-08 18:03 UTC (permalink / raw)
To: Richard Henderson, qemu-devel; +Cc: gaosong
Le 07/01/2022 à 05:26, Richard Henderson a écrit :
> Most targets share the same generic ipc structure definitions.
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> linux-user/aarch64/target_structs.h | 59 +-------------------------
> linux-user/arm/target_structs.h | 52 +----------------------
> linux-user/cris/target_structs.h | 59 +-------------------------
> linux-user/generic/target_structs.h | 58 +++++++++++++++++++++++++
> linux-user/hexagon/target_structs.h | 55 +-----------------------
> linux-user/i386/target_structs.h | 59 +-------------------------
> linux-user/m68k/target_structs.h | 59 +-------------------------
> linux-user/microblaze/target_structs.h | 59 +-------------------------
> linux-user/nios2/target_structs.h | 59 +-------------------------
> linux-user/openrisc/target_structs.h | 59 +-------------------------
> linux-user/riscv/target_structs.h | 47 +-------------------
> linux-user/sh4/target_structs.h | 59 +-------------------------
> linux-user/x86_64/target_structs.h | 36 +---------------
> 13 files changed, 70 insertions(+), 650 deletions(-)
> create mode 100644 linux-user/generic/target_structs.h
>
> diff --git a/linux-user/aarch64/target_structs.h b/linux-user/aarch64/target_structs.h
> index 7c748344ca..3a06f373c3 100644
> --- a/linux-user/aarch64/target_structs.h
> +++ b/linux-user/aarch64/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * ARM AArch64 specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This library is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU Lesser General Public
> - * License as published by the Free Software Foundation; either
> - * version 2.1 of the License, or (at your option) any later version.
> - *
> - * This library 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
> - * Lesser General Public License for more details.
> - *
> - * You should have received a copy of the GNU Lesser General Public
> - * License along with this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef AARCH64_TARGET_STRUCTS_H
> -#define AARCH64_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> - abi_int __key; /* Key. */
> - abi_uint uid; /* Owner's user ID. */
> - abi_uint gid; /* Owner's group ID. */
> - abi_uint cuid; /* Creator's user ID. */
> - abi_uint cgid; /* Creator's group ID. */
> - abi_ushort mode; /* Read/write permission. */
> - abi_ushort __pad1;
> - abi_ushort __seq; /* Sequence number. */
> - abi_ushort __pad2;
> - abi_ulong __unused1;
> - abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> - struct target_ipc_perm shm_perm; /* operation permission struct */
> - abi_long shm_segsz; /* size of segment in bytes */
> - abi_ulong shm_atime; /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused1;
> -#endif
> - abi_ulong shm_dtime; /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused2;
> -#endif
> - abi_ulong shm_ctime; /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused3;
> -#endif
> - abi_int shm_cpid; /* pid of creator */
> - abi_int shm_lpid; /* pid of last shmop */
> - abi_ulong shm_nattch; /* number of current attaches */
> - abi_ulong __unused4;
> - abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/arm/target_structs.h b/linux-user/arm/target_structs.h
> index 25bf8dd3a5..3a06f373c3 100644
> --- a/linux-user/arm/target_structs.h
> +++ b/linux-user/arm/target_structs.h
> @@ -1,51 +1 @@
> -/*
> - * ARM specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This library is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU Lesser General Public
> - * License as published by the Free Software Foundation; either
> - * version 2.1 of the License, or (at your option) any later version.
> - *
> - * This library 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
> - * Lesser General Public License for more details.
> - *
> - * You should have received a copy of the GNU Lesser General Public
> - * License along with this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef ARM_TARGET_STRUCTS_H
> -#define ARM_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> - abi_int __key; /* Key. */
> - abi_uint uid; /* Owner's user ID. */
> - abi_uint gid; /* Owner's group ID. */
> - abi_uint cuid; /* Creator's user ID. */
> - abi_uint cgid; /* Creator's group ID. */
> - abi_ushort mode; /* Read/write permission. */
> - abi_ushort __pad1;
> - abi_ushort __seq; /* Sequence number. */
> - abi_ushort __pad2;
> - abi_ulong __unused1;
> - abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> - struct target_ipc_perm shm_perm; /* operation permission struct */
> - abi_long shm_segsz; /* size of segment in bytes */
> - abi_ulong shm_atime; /* time of last shmat() */
> - abi_ulong __unused1;
> - abi_ulong shm_dtime; /* time of last shmdt() */
> - abi_ulong __unused2;
> - abi_ulong shm_ctime; /* time of last change by shmctl() */
> - abi_ulong __unused3;
> - abi_int shm_cpid; /* pid of creator */
> - abi_int shm_lpid; /* pid of last shmop */
> - abi_ulong shm_nattch; /* number of current attaches */
> - abi_ulong __unused4;
> - abi_ulong __unused5;
> -};
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/cris/target_structs.h b/linux-user/cris/target_structs.h
> index f949d2331e..3a06f373c3 100644
> --- a/linux-user/cris/target_structs.h
> +++ b/linux-user/cris/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * CRIS specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This library is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU Lesser General Public
> - * License as published by the Free Software Foundation; either
> - * version 2.1 of the License, or (at your option) any later version.
> - *
> - * This library 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
> - * Lesser General Public License for more details.
> - *
> - * You should have received a copy of the GNU Lesser General Public
> - * License along with this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef CRIS_TARGET_STRUCTS_H
> -#define CRIS_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> - abi_int __key; /* Key. */
> - abi_uint uid; /* Owner's user ID. */
> - abi_uint gid; /* Owner's group ID. */
> - abi_uint cuid; /* Creator's user ID. */
> - abi_uint cgid; /* Creator's group ID. */
> - abi_ushort mode; /* Read/write permission. */
> - abi_ushort __pad1;
> - abi_ushort __seq; /* Sequence number. */
> - abi_ushort __pad2;
> - abi_ulong __unused1;
> - abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> - struct target_ipc_perm shm_perm; /* operation permission struct */
> - abi_long shm_segsz; /* size of segment in bytes */
> - abi_ulong shm_atime; /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused1;
> -#endif
> - abi_ulong shm_dtime; /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused2;
> -#endif
> - abi_ulong shm_ctime; /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused3;
> -#endif
> - abi_int shm_cpid; /* pid of creator */
> - abi_int shm_lpid; /* pid of last shmop */
> - abi_ulong shm_nattch; /* number of current attaches */
> - abi_ulong __unused4;
> - abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/generic/target_structs.h b/linux-user/generic/target_structs.h
> new file mode 100644
> index 0000000000..09ff858b6e
> --- /dev/null
> +++ b/linux-user/generic/target_structs.h
> @@ -0,0 +1,58 @@
> +/*
> + * Generic structures for linux-user
> + *
> + * Copyright (c) 2013 Fabrice Bellard
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * This library 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
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, see <http://www.gnu.org/licenses/>.
> + */
> +#ifndef GENERIC_TARGET_STRUCTS_H
> +#define GENERIC_TARGET_STRUCTS_H
> +
> +struct target_ipc_perm {
> + abi_int __key; /* Key. */
> + abi_uint uid; /* Owner's user ID. */
> + abi_uint gid; /* Owner's group ID. */
> + abi_uint cuid; /* Creator's user ID. */
> + abi_uint cgid; /* Creator's group ID. */
> + abi_ushort mode; /* Read/write permission. */
> + abi_ushort __pad1;
> + abi_ushort __seq; /* Sequence number. */
> + abi_ushort __pad2;
> + abi_ulong __unused1;
> + abi_ulong __unused2;
> +};
> +
> +struct target_shmid_ds {
> + struct target_ipc_perm shm_perm; /* operation permission struct */
> + abi_long shm_segsz; /* size of segment in bytes */
> + abi_ulong shm_atime; /* time of last shmat() */
> +#if TARGET_ABI_BITS == 32
> + abi_ulong __unused1;
> +#endif
> + abi_ulong shm_dtime; /* time of last shmdt() */
> +#if TARGET_ABI_BITS == 32
> + abi_ulong __unused2;
> +#endif
> + abi_ulong shm_ctime; /* time of last change by shmctl() */
> +#if TARGET_ABI_BITS == 32
> + abi_ulong __unused3;
> +#endif
> + abi_int shm_cpid; /* pid of creator */
> + abi_int shm_lpid; /* pid of last shmop */
> + abi_ulong shm_nattch; /* number of current attaches */
> + abi_ulong __unused4;
> + abi_ulong __unused5;
> +};
> +
> +#endif
> diff --git a/linux-user/hexagon/target_structs.h b/linux-user/hexagon/target_structs.h
> index c217d9442a..3a06f373c3 100644
> --- a/linux-user/hexagon/target_structs.h
> +++ b/linux-user/hexagon/target_structs.h
> @@ -1,54 +1 @@
> -/*
> - * Copyright(c) 2019-2021 Qualcomm Innovation Center, Inc. All Rights Reserved.
> - *
> - * 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/>.
> - */
> -
> -/*
> - * Hexagon specific structures for linux-user
> - */
> -#ifndef HEXAGON_TARGET_STRUCTS_H
> -#define HEXAGON_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> - abi_int __key; /* Key. */
> - abi_uint uid; /* Owner's user ID. */
> - abi_uint gid; /* Owner's group ID. */
> - abi_uint cuid; /* Creator's user ID. */
> - abi_uint cgid; /* Creator's group ID. */
> - abi_ushort mode; /* Read/write permission. */
> - abi_ushort __pad1;
> - abi_ushort __seq; /* Sequence number. */
> - abi_ushort __pad2;
> - abi_ulong __unused1;
> - abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> - struct target_ipc_perm shm_perm; /* operation permission struct */
> - abi_long shm_segsz; /* size of segment in bytes */
> - abi_ulong shm_atime; /* time of last shmat() */
> - abi_ulong __unused1;
> - abi_ulong shm_dtime; /* time of last shmdt() */
> - abi_ulong __unused2;
> - abi_ulong shm_ctime; /* time of last change by shmctl() */
> - abi_ulong __unused3;
> - abi_int shm_cpid; /* pid of creator */
> - abi_int shm_lpid; /* pid of last shmop */
> - abi_ulong shm_nattch; /* number of current attaches */
> - abi_ulong __unused4;
> - abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/i386/target_structs.h b/linux-user/i386/target_structs.h
> index e22847fd20..3a06f373c3 100644
> --- a/linux-user/i386/target_structs.h
> +++ b/linux-user/i386/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * i386 specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This library is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU Lesser General Public
> - * License as published by the Free Software Foundation; either
> - * version 2.1 of the License, or (at your option) any later version.
> - *
> - * This library 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
> - * Lesser General Public License for more details.
> - *
> - * You should have received a copy of the GNU Lesser General Public
> - * License along with this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef I386_TARGET_STRUCTS_H
> -#define I386_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> - abi_int __key; /* Key. */
> - abi_uint uid; /* Owner's user ID. */
> - abi_uint gid; /* Owner's group ID. */
> - abi_uint cuid; /* Creator's user ID. */
> - abi_uint cgid; /* Creator's group ID. */
> - abi_ushort mode; /* Read/write permission. */
> - abi_ushort __pad1;
> - abi_ushort __seq; /* Sequence number. */
> - abi_ushort __pad2;
> - abi_ulong __unused1;
> - abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> - struct target_ipc_perm shm_perm; /* operation permission struct */
> - abi_long shm_segsz; /* size of segment in bytes */
> - abi_ulong shm_atime; /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused1;
> -#endif
> - abi_ulong shm_dtime; /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused2;
> -#endif
> - abi_ulong shm_ctime; /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused3;
> -#endif
> - abi_int shm_cpid; /* pid of creator */
> - abi_int shm_lpid; /* pid of last shmop */
> - abi_ulong shm_nattch; /* number of current attaches */
> - abi_ulong __unused4;
> - abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/m68k/target_structs.h b/linux-user/m68k/target_structs.h
> index e373d481e1..3a06f373c3 100644
> --- a/linux-user/m68k/target_structs.h
> +++ b/linux-user/m68k/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * m68k specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This library is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU Lesser General Public
> - * License as published by the Free Software Foundation; either
> - * version 2.1 of the License, or (at your option) any later version.
> - *
> - * This library 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
> - * Lesser General Public License for more details.
> - *
> - * You should have received a copy of the GNU Lesser General Public
> - * License along with this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef M68K_TARGET_STRUCTS_H
> -#define M68K_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> - abi_int __key; /* Key. */
> - abi_uint uid; /* Owner's user ID. */
> - abi_uint gid; /* Owner's group ID. */
> - abi_uint cuid; /* Creator's user ID. */
> - abi_uint cgid; /* Creator's group ID. */
> - abi_ushort mode; /* Read/write permission. */
> - abi_ushort __pad1;
> - abi_ushort __seq; /* Sequence number. */
> - abi_ushort __pad2;
> - abi_ulong __unused1;
> - abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> - struct target_ipc_perm shm_perm; /* operation permission struct */
> - abi_long shm_segsz; /* size of segment in bytes */
> - abi_ulong shm_atime; /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused1;
> -#endif
> - abi_ulong shm_dtime; /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused2;
> -#endif
> - abi_ulong shm_ctime; /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused3;
> -#endif
> - abi_int shm_cpid; /* pid of creator */
> - abi_int shm_lpid; /* pid of last shmop */
> - abi_ulong shm_nattch; /* number of current attaches */
> - abi_ulong __unused4;
> - abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/microblaze/target_structs.h b/linux-user/microblaze/target_structs.h
> index d08f6a53a8..3a06f373c3 100644
> --- a/linux-user/microblaze/target_structs.h
> +++ b/linux-user/microblaze/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * MicroBlaze specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This library is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU Lesser General Public
> - * License as published by the Free Software Foundation; either
> - * version 2.1 of the License, or (at your option) any later version.
> - *
> - * This library 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
> - * Lesser General Public License for more details.
> - *
> - * You should have received a copy of the GNU Lesser General Public
> - * License along with this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef MICROBLAZE_TARGET_STRUCTS_H
> -#define MICROBLAZE_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> - abi_int __key; /* Key. */
> - abi_uint uid; /* Owner's user ID. */
> - abi_uint gid; /* Owner's group ID. */
> - abi_uint cuid; /* Creator's user ID. */
> - abi_uint cgid; /* Creator's group ID. */
> - abi_ushort mode; /* Read/write permission. */
> - abi_ushort __pad1;
> - abi_ushort __seq; /* Sequence number. */
> - abi_ushort __pad2;
> - abi_ulong __unused1;
> - abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> - struct target_ipc_perm shm_perm; /* operation permission struct */
> - abi_long shm_segsz; /* size of segment in bytes */
> - abi_ulong shm_atime; /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused1;
> -#endif
> - abi_ulong shm_dtime; /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused2;
> -#endif
> - abi_ulong shm_ctime; /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused3;
> -#endif
> - abi_int shm_cpid; /* pid of creator */
> - abi_int shm_lpid; /* pid of last shmop */
> - abi_ulong shm_nattch; /* number of current attaches */
> - abi_ulong __unused4;
> - abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/nios2/target_structs.h b/linux-user/nios2/target_structs.h
> index daa2886f98..3a06f373c3 100644
> --- a/linux-user/nios2/target_structs.h
> +++ b/linux-user/nios2/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * Nios2 specific structures for linux-user
> - *
> - * Copyright (c) 2016 Marek Vasut <marex@denx.de>
> - *
> - * This library is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU Lesser General Public
> - * License as published by the Free Software Foundation; either
> - * version 2.1 of the License, or (at your option) any later version.
> - *
> - * This library 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
> - * Lesser General Public License for more details.
> - *
> - * You should have received a copy of the GNU Lesser General Public
> - * License along with this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef NIOS2_TARGET_STRUCTS_H
> -#define NIOS2_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> - abi_int __key; /* Key. */
> - abi_uint uid; /* Owner's user ID. */
> - abi_uint gid; /* Owner's group ID. */
> - abi_uint cuid; /* Creator's user ID. */
> - abi_uint cgid; /* Creator's group ID. */
> - abi_ushort mode; /* Read/write permission. */
> - abi_ushort __pad1;
> - abi_ushort __seq; /* Sequence number. */
> - abi_ushort __pad2;
> - abi_ulong __unused1;
> - abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> - struct target_ipc_perm shm_perm; /* operation permission struct */
> - abi_long shm_segsz; /* size of segment in bytes */
> - abi_ulong shm_atime; /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused1;
> -#endif
> - abi_ulong shm_dtime; /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused2;
> -#endif
> - abi_ulong shm_ctime; /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused3;
> -#endif
> - abi_int shm_cpid; /* pid of creator */
> - abi_int shm_lpid; /* pid of last shmop */
> - abi_ulong shm_nattch; /* number of current attaches */
> - abi_ulong __unused4;
> - abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/openrisc/target_structs.h b/linux-user/openrisc/target_structs.h
> index e98e2bc799..3a06f373c3 100644
> --- a/linux-user/openrisc/target_structs.h
> +++ b/linux-user/openrisc/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * OpenRISC specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This library is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU Lesser General Public
> - * License as published by the Free Software Foundation; either
> - * version 2.1 of the License, or (at your option) any later version.
> - *
> - * This library 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
> - * Lesser General Public License for more details.
> - *
> - * You should have received a copy of the GNU Lesser General Public
> - * License along with this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef OPENRISC_TARGET_STRUCTS_H
> -#define OPENRISC_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> - abi_int __key; /* Key. */
> - abi_uint uid; /* Owner's user ID. */
> - abi_uint gid; /* Owner's group ID. */
> - abi_uint cuid; /* Creator's user ID. */
> - abi_uint cgid; /* Creator's group ID. */
> - abi_ushort mode; /* Read/write permission. */
> - abi_ushort __pad1;
> - abi_ushort __seq; /* Sequence number. */
> - abi_ushort __pad2;
> - abi_ulong __unused1;
> - abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> - struct target_ipc_perm shm_perm; /* operation permission struct */
> - abi_long shm_segsz; /* size of segment in bytes */
> - abi_ulong shm_atime; /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused1;
> -#endif
> - abi_ulong shm_dtime; /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused2;
> -#endif
> - abi_ulong shm_ctime; /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused3;
> -#endif
> - abi_int shm_cpid; /* pid of creator */
> - abi_int shm_lpid; /* pid of last shmop */
> - abi_ulong shm_nattch; /* number of current attaches */
> - abi_ulong __unused4;
> - abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/riscv/target_structs.h b/linux-user/riscv/target_structs.h
> index ea3e5ed17e..3a06f373c3 100644
> --- a/linux-user/riscv/target_structs.h
> +++ b/linux-user/riscv/target_structs.h
> @@ -1,46 +1 @@
> -/*
> - * RISC-V specific structures for linux-user
> - *
> - * This is a copy of ../aarch64/target_structs.h atm.
> - *
> - */
> -#ifndef RISCV_TARGET_STRUCTS_H
> -#define RISCV_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> - abi_int __key; /* Key. */
> - abi_uint uid; /* Owner's user ID. */
> - abi_uint gid; /* Owner's group ID. */
> - abi_uint cuid; /* Creator's user ID. */
> - abi_uint cgid; /* Creator's group ID. */
> - abi_ushort mode; /* Read/write permission. */
> - abi_ushort __pad1;
> - abi_ushort __seq; /* Sequence number. */
> - abi_ushort __pad2;
> - abi_ulong __unused1;
> - abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> - struct target_ipc_perm shm_perm; /* operation permission struct */
> - abi_long shm_segsz; /* size of segment in bytes */
> - abi_ulong shm_atime; /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused1;
> -#endif
> - abi_ulong shm_dtime; /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused2;
> -#endif
> - abi_ulong shm_ctime; /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused3;
> -#endif
> - abi_int shm_cpid; /* pid of creator */
> - abi_int shm_lpid; /* pid of last shmop */
> - abi_ulong shm_nattch; /* number of current attaches */
> - abi_ulong __unused4;
> - abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/sh4/target_structs.h b/linux-user/sh4/target_structs.h
> index 00ac39478b..3a06f373c3 100644
> --- a/linux-user/sh4/target_structs.h
> +++ b/linux-user/sh4/target_structs.h
> @@ -1,58 +1 @@
> -/*
> - * SH4 specific structures for linux-user
> - *
> - * Copyright (c) 2013 Fabrice Bellard
> - *
> - * This library is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU Lesser General Public
> - * License as published by the Free Software Foundation; either
> - * version 2.1 of the License, or (at your option) any later version.
> - *
> - * This library 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
> - * Lesser General Public License for more details.
> - *
> - * You should have received a copy of the GNU Lesser General Public
> - * License along with this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#ifndef SH4_TARGET_STRUCTS_H
> -#define SH4_TARGET_STRUCTS_H
> -
> -struct target_ipc_perm {
> - abi_int __key; /* Key. */
> - abi_uint uid; /* Owner's user ID. */
> - abi_uint gid; /* Owner's group ID. */
> - abi_uint cuid; /* Creator's user ID. */
> - abi_uint cgid; /* Creator's group ID. */
> - abi_ushort mode; /* Read/write permission. */
> - abi_ushort __pad1;
> - abi_ushort __seq; /* Sequence number. */
> - abi_ushort __pad2;
> - abi_ulong __unused1;
> - abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> - struct target_ipc_perm shm_perm; /* operation permission struct */
> - abi_long shm_segsz; /* size of segment in bytes */
> - abi_ulong shm_atime; /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused1;
> -#endif
> - abi_ulong shm_dtime; /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused2;
> -#endif
> - abi_ulong shm_ctime; /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused3;
> -#endif
> - abi_int shm_cpid; /* pid of creator */
> - abi_int shm_lpid; /* pid of last shmop */
> - abi_ulong shm_nattch; /* number of current attaches */
> - abi_ulong __unused4;
> - abi_ulong __unused5;
> -};
> -
> -#endif
> +#include "../generic/target_structs.h"
> diff --git a/linux-user/x86_64/target_structs.h b/linux-user/x86_64/target_structs.h
> index ce367b253b..f1181383c4 100644
> --- a/linux-user/x86_64/target_structs.h
> +++ b/linux-user/x86_64/target_structs.h
> @@ -19,41 +19,7 @@
> #ifndef X86_64_TARGET_STRUCTS_H
> #define X86_64_TARGET_STRUCTS_H
>
> -struct target_ipc_perm {
> - abi_int __key; /* Key. */
> - abi_uint uid; /* Owner's user ID. */
> - abi_uint gid; /* Owner's group ID. */
> - abi_uint cuid; /* Creator's user ID. */
> - abi_uint cgid; /* Creator's group ID. */
> - abi_ushort mode; /* Read/write permission. */
> - abi_ushort __pad1;
> - abi_ushort __seq; /* Sequence number. */
> - abi_ushort __pad2;
> - abi_ulong __unused1;
> - abi_ulong __unused2;
> -};
> -
> -struct target_shmid_ds {
> - struct target_ipc_perm shm_perm; /* operation permission struct */
> - abi_long shm_segsz; /* size of segment in bytes */
> - abi_ulong shm_atime; /* time of last shmat() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused1;
> -#endif
> - abi_ulong shm_dtime; /* time of last shmdt() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused2;
> -#endif
> - abi_ulong shm_ctime; /* time of last change by shmctl() */
> -#if TARGET_ABI_BITS == 32
> - abi_ulong __unused3;
> -#endif
> - abi_int shm_cpid; /* pid of creator */
> - abi_int shm_lpid; /* pid of last shmop */
> - abi_ulong shm_nattch; /* number of current attaches */
> - abi_ulong __unused4;
> - abi_ulong __unused5;
> -};
> +#include "../generic/target_structs.h"
>
> /* The x86 definition differs from the generic one in that the
> * two padding fields exist whether the ABI is 32 bits or 64 bits.
Applied to my linux-user-for-7.0 branch.
Thanks,
Laurent
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2022-01-08 18:06 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-07 4:25 [PATCH 0/2] linux-user: Move target_struct.h generic definitions to generic/ Richard Henderson
2022-01-07 4:25 ` [PATCH 1/2] linux-user/arm: Move target_oabi_flock64 out of target_structs.h Richard Henderson
2022-01-08 17:57 ` Laurent Vivier
2022-01-08 17:58 ` Laurent Vivier
2022-01-07 4:26 ` [PATCH 2/2] linux-user: Move target_struct.h generic definitions to generic/ Richard Henderson
2022-01-08 17:58 ` Laurent Vivier
2022-01-08 18:03 ` Laurent Vivier
2022-01-07 13:58 ` [PATCH 0/2] " Philippe Mathieu-Daudé
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.