* 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 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