diff options
author | Aleksandar Markovic | 2019-06-28 12:43:37 +0200 |
---|---|---|
committer | Laurent Vivier | 2019-07-02 16:56:46 +0200 |
commit | 1272a6c4883db77e08a9cff1d2d3d1fa1f420865 (patch) | |
tree | 90f9e47a51a6f1668958e69c01e842ccef2bd12e /linux-user/generic | |
parent | linux-user: Fix target_flock structure for MIPS O64 ABI (diff) | |
download | qemu-1272a6c4883db77e08a9cff1d2d3d1fa1f420865.tar.gz qemu-1272a6c4883db77e08a9cff1d2d3d1fa1f420865.tar.xz qemu-1272a6c4883db77e08a9cff1d2d3d1fa1f420865.zip |
linux-user: Introduce TARGET_HAVE_ARCH_STRUCT_FLOCK
Bring target_flock definitions to be more in sync with the way
flock is defined in kernel.
Basically, the rules from the kernel are:
1. Majority of architectures have a common flock definition.
2. Architectures with 32-bit MIPS ABIs have a sligtly different
flock definition; those architectures are the only arcitectures
that have HAVE_ARCH_STRUCT_FLOCK defined, and that preprocessor
constant is used in the common header as a flag for including or
not including common flock definition.
3. Sparc architectures also have a sligtly different flock
definition, but the difference is only the padding at the end of
the structure. The presence of that padding is determined by
preprocessor constants __ARCH_FLOCK6_PAD and __ARCH_FLOCK64_PAD.
QEMU linux-user already implements rules 1. and 3. in a very
similar way as they are implemented in kernel. However, rule 2.
is implemented in a dissimilar way (for example, the constant
TARGET_HAVE_ARCH_STRUCT_FLOCK is missing), and this patch brings
QEMU implementation much closer to the kernel implementation.
TARGET_HAVE_ARCH_STRUCT_FLOCK64 constant is also introduced to
mimic HAVE_ARCH_STRUCT_FLOCK64 from kernel, but it is not defined
anywhere, however, this is the case with HAVE_ARCH_STRUCT_FLOCK64
in kernel as well.
Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <1561718618-20218-5-git-send-email-aleksandar.markovic@rt-rk.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Diffstat (limited to 'linux-user/generic')
-rw-r--r-- | linux-user/generic/fcntl.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/linux-user/generic/fcntl.h b/linux-user/generic/fcntl.h index 1b48ddeb99..9f727d4df2 100644 --- a/linux-user/generic/fcntl.h +++ b/linux-user/generic/fcntl.h @@ -120,6 +120,7 @@ struct target_f_owner_ex { #define TARGET_F_SHLCK 8 #endif +#ifndef TARGET_HAVE_ARCH_STRUCT_FLOCK #ifndef TARGET_ARCH_FLOCK_PAD #define TARGET_ARCH_FLOCK_PAD #endif @@ -129,13 +130,12 @@ struct target_flock { short l_whence; abi_long l_start; abi_long l_len; -#if defined(TARGET_MIPS) && (TARGET_ABI_BITS == 32) - abi_long l_sysid; -#endif int l_pid; TARGET_ARCH_FLOCK_PAD }; +#endif +#ifndef TARGET_HAVE_ARCH_STRUCT_FLOCK64 #ifndef TARGET_ARCH_FLOCK64_PAD #define TARGET_ARCH_FLOCK64_PAD #endif @@ -149,3 +149,5 @@ struct target_flock64 { TARGET_ARCH_FLOCK64_PAD }; #endif + +#endif |