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

Re: [PATCH 2/2] xen/types: Rework stdint vs __{u,s}$N types



On Thu, Jun 22, 2023 at 7:12 AM Andrew Cooper <andrew.cooper3@xxxxxxxxxx> wrote:
>
> Xen uses the stdint types.  Rearrange the types headers to define the
> compatibility __{u,s}$N types in terms of the stdint types, not the other way
> around.
>
> All all supported compilers on architectures other than x86 support the stdint
> __*_TYPE__ macros.  Move these into the common types.h to avoid them being
> duplicated in each architecture.
>
> For x86 on obsolete compilers, synthesize appropriate types.
>
> This cleanup has the side effect of removing all use of the undocumented
> __signed__ GCC keyword.  This is a vestigial remnant of `gcc -traditional`
> mode for dialetcs of C prior to the introduction of the signed keyword.
>
> No functional change.
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>

Reviewed-by: Alistair Francis <alistair.francis@xxxxxxx>

Alistair

> ---
> CC: Jan Beulich <JBeulich@xxxxxxxx>
> CC: Roger Pau Monné <roger.pau@xxxxxxxxxx>
> CC: Wei Liu <wl@xxxxxxx>
> CC: Stefano Stabellini <sstabellini@xxxxxxxxxx>
> CC: Julien Grall <julien@xxxxxxx>
> CC: Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
> CC: Bertrand Marquis <bertrand.marquis@xxxxxxx>
> CC: Bob Eshleman <bobbyeshleman@xxxxxxxxx>
> CC: Alistair Francis <alistair.francis@xxxxxxx>
> CC: Connor Davis <connojdavis@xxxxxxxxx>
> CC: Oleksii Kurochko <oleksii.kurochko@xxxxxxxxx>
> CC: Shawn Anastasio <sanastasio@xxxxxxxxxxxxxxxxxxxxx>
> CC: Timothy Pearson <tpearson@xxxxxxxxxxxxxxxxxxxxx>
> CC: Roberto Bagnara <roberto.bagnara@xxxxxxxxxxx>
>
> I've left the non __ types alone for now.  They're complicated mostly by ARM
> having differing ideas of what a paddr_t is.
>
> A different option would be to sort out the stdint types ahead of including
> <asm/types.h>, which can either be done by introducing a <asm/stdint.h> or
> upping the minimum compiler version for x86; a task which is massively
> overdue.
> ---
>  xen/arch/arm/include/asm/types.h   | 19 -------------------
>  xen/arch/riscv/include/asm/types.h | 19 -------------------
>  xen/arch/x86/include/asm/types.h   | 21 +++++++++------------
>  xen/include/xen/types.h            | 28 +++++++++++++++++-----------
>  4 files changed, 26 insertions(+), 61 deletions(-)
>
> diff --git a/xen/arch/arm/include/asm/types.h 
> b/xen/arch/arm/include/asm/types.h
> index fb6618ef247f..545a5e9d1175 100644
> --- a/xen/arch/arm/include/asm/types.h
> +++ b/xen/arch/arm/include/asm/types.h
> @@ -1,25 +1,6 @@
>  #ifndef __ARM_TYPES_H__
>  #define __ARM_TYPES_H__
>
> -typedef __signed__ char __s8;
> -typedef unsigned char __u8;
> -
> -typedef __signed__ short __s16;
> -typedef unsigned short __u16;
> -
> -typedef __signed__ int __s32;
> -typedef unsigned int __u32;
> -
> -#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
> -#if defined(CONFIG_ARM_32)
> -typedef __signed__ long long __s64;
> -typedef unsigned long long __u64;
> -#elif defined (CONFIG_ARM_64)
> -typedef __signed__ long __s64;
> -typedef unsigned long __u64;
> -#endif
> -#endif
> -
>  typedef signed char s8;
>  typedef unsigned char u8;
>
> diff --git a/xen/arch/riscv/include/asm/types.h 
> b/xen/arch/riscv/include/asm/types.h
> index 0c0ce78c8f6e..93a680a8f323 100644
> --- a/xen/arch/riscv/include/asm/types.h
> +++ b/xen/arch/riscv/include/asm/types.h
> @@ -1,25 +1,6 @@
>  #ifndef __RISCV_TYPES_H__
>  #define __RISCV_TYPES_H__
>
> -typedef __signed__ char __s8;
> -typedef unsigned char __u8;
> -
> -typedef __signed__ short __s16;
> -typedef unsigned short __u16;
> -
> -typedef __signed__ int __s32;
> -typedef unsigned int __u32;
> -
> -#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
> -#if defined(CONFIG_RISCV_32)
> -typedef __signed__ long long __s64;
> -typedef unsigned long long __u64;
> -#elif defined (CONFIG_RISCV_64)
> -typedef __signed__ long __s64;
> -typedef unsigned long __u64;
> -#endif
> -#endif
> -
>  typedef signed char s8;
>  typedef unsigned char u8;
>
> diff --git a/xen/arch/x86/include/asm/types.h 
> b/xen/arch/x86/include/asm/types.h
> index 2d56aed66782..a5d4f6e9587a 100644
> --- a/xen/arch/x86/include/asm/types.h
> +++ b/xen/arch/x86/include/asm/types.h
> @@ -1,18 +1,15 @@
>  #ifndef __X86_TYPES_H__
>  #define __X86_TYPES_H__
>
> -typedef __signed__ char __s8;
> -typedef unsigned char __u8;
> -
> -typedef __signed__ short __s16;
> -typedef unsigned short __u16;
> -
> -typedef __signed__ int __s32;
> -typedef unsigned int __u32;
> -
> -#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
> -typedef __signed__ long __s64;
> -typedef unsigned long __u64;
> +#ifndef __INT8_TYPE__ /* GCC <= 4.4 */
> +# define __INT8_TYPE__     signed  char
> +# define __UINT8_TYPE__  unsigned  char
> +# define __INT16_TYPE__           short
> +# define __UINT16_TYPE__ unsigned short
> +# define __INT32_TYPE__             int
> +# define __UINT32_TYPE__ unsigned   int
> +# define __INT64_TYPE__            long
> +# define __UINT64_TYPE__ unsigned  long
>  #endif
>
>  typedef signed char s8;
> diff --git a/xen/include/xen/types.h b/xen/include/xen/types.h
> index 8b22a02eeaa4..4083f1bf18b0 100644
> --- a/xen/include/xen/types.h
> +++ b/xen/include/xen/types.h
> @@ -11,6 +11,15 @@ typedef signed long ssize_t;
>
>  typedef __PTRDIFF_TYPE__ ptrdiff_t;
>
> +typedef __INT8_TYPE__        int8_t;
> +typedef __UINT8_TYPE__      uint8_t;
> +typedef __INT16_TYPE__      int16_t;
> +typedef __UINT16_TYPE__    uint16_t;
> +typedef __INT32_TYPE__      int32_t;
> +typedef __UINT32_TYPE__    uint32_t;
> +typedef __INT64_TYPE__      int64_t;
> +typedef __UINT64_TYPE__    uint64_t;
> +
>  #define BITS_TO_LONGS(bits) \
>      (((bits)+BITS_PER_LONG-1)/BITS_PER_LONG)
>  #define DECLARE_BITMAP(name,bits) \
> @@ -39,17 +48,14 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t;
>  #define LONG_MIN        (-LONG_MAX - 1)
>  #define ULONG_MAX       (~0UL)
>
> -typedef         __u8            uint8_t;
> -typedef         __s8            int8_t;
> -
> -typedef         __u16           uint16_t;
> -typedef         __s16           int16_t;
> -
> -typedef         __u32           uint32_t;
> -typedef         __s32           int32_t;
> -
> -typedef         __u64           uint64_t;
> -typedef         __s64           int64_t;
> +typedef uint8_t         __u8;
> +typedef int8_t          __s8;
> +typedef uint16_t        __u16;
> +typedef int16_t         __s16;
> +typedef uint32_t        __u32;
> +typedef int32_t         __s32;
> +typedef uint64_t        __u64;
> +typedef int64_t         __s64;
>
>  typedef __u16 __le16;
>  typedef __u16 __be16;
> --
> 2.30.2
>
>



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.