From 4a57f843964b2598ff06ba9a15e206a0a72a82ff Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Wed, 2 Jun 2010 18:22:38 +0000 Subject: [PATCH] Introduced types [__haiku_]generic_{addr,size}_t which are wide enough for virtual and physical addresses. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36996 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/build/config_build/types.h | 9 +++++++++ headers/build/os/support/SupportDefs.h | 8 ++++++++ headers/config/types.h | 12 ++++++++++++ headers/os/support/SupportDefs.h | 8 ++++++++ headers/private/fs_shell/fssh_api_wrapper.h | 12 ++++++++++++ headers/private/fs_shell/fssh_types.h | 8 ++++++++ 6 files changed, 57 insertions(+) diff --git a/headers/build/config_build/types.h b/headers/build/config_build/types.h index 02ccf1008c..9c665b2f3f 100644 --- a/headers/build/config_build/types.h +++ b/headers/build/config_build/types.h @@ -70,5 +70,14 @@ typedef __haiku_std_uint64 __haiku_uint64; #endif #define __HAIKU_PHYS_SADDR_MIN (-__HAIKU_SADDR_MAX-1) +/* a generic address type wide enough for virtual and physical addresses */ +#if __HAIKU_ARCH_BITS >= __HAIKU_ARCH_PHYSICAL_BITS + typedef __haiku_addr_t __haiku_generic_addr_t; +# define __HAIKU_GENERIC_ADDR_MAX __HAIKU_ADDR_MAX +#else + typedef __haiku_phys_addr_t __haiku_generic_addr_t; +# define __HAIKU_GENERIC_ADDR_MAX __HAIKU_PHYS_ADDR_MAX +#endif + #endif /* _CONFIG_BUILD_TYPES_H */ diff --git a/headers/build/os/support/SupportDefs.h b/headers/build/os/support/SupportDefs.h index 71a60184ce..1442504cc2 100644 --- a/headers/build/os/support/SupportDefs.h +++ b/headers/build/os/support/SupportDefs.h @@ -64,6 +64,9 @@ typedef uint32 phys_addr_t; #endif typedef phys_addr_t phys_size_t; +typedef addr_t generic_addr_t; +typedef size_t generic_size_t; + /* printf()/scanf() format strings for [u]int* types */ #define B_PRId8 PRId8 @@ -150,6 +153,11 @@ typedef phys_addr_t phys_size_t; # define B_PRIxPHYSADDR B_PRIx32 # define B_PRIXPHYSADDR B_PRIX32 #endif +/* generic_addr_t */ +#define B_PRIuGENADDR B_PRIuADDR +#define B_PRIoGENADDR B_PRIoADDR +#define B_PRIxGENADDR B_PRIxADDR +#define B_PRIXGENADDR B_PRIXADDR /* off_t */ #define B_PRIdOFF B_PRId64 #define B_PRIiOFF B_PRIi64 diff --git a/headers/config/types.h b/headers/config/types.h index 3b499e4a84..84209791b5 100644 --- a/headers/config/types.h +++ b/headers/config/types.h @@ -98,4 +98,16 @@ typedef __haiku_std_uint64 __haiku_uint64; #endif +/* a generic address type wide enough for virtual and physical addresses */ +#if __HAIKU_ARCH_BITS >= __HAIKU_ARCH_PHYSICAL_BITS + typedef __haiku_addr_t __haiku_generic_addr_t; +# define __HAIKU_GENERIC_ADDR_MAX __HAIKU_ADDR_MAX +# define __HAIKU_PRI_PREFIX_GENERIC_ADDR __HAIKU_PRI_PREFIX_ADDR +#else + typedef __haiku_phys_addr_t __haiku_generic_addr_t; +# define __HAIKU_GENERIC_ADDR_MAX __HAIKU_PHYS_ADDR_MAX +# define __HAIKU_PRI_PREFIX_GENERIC_ADDR __HAIKU_PRI_PREFIX_PHYS_ADDR +#endif + + #endif /* _CONFIG_TYPES_H */ diff --git a/headers/os/support/SupportDefs.h b/headers/os/support/SupportDefs.h index 2b7e625b27..0529525366 100644 --- a/headers/os/support/SupportDefs.h +++ b/headers/os/support/SupportDefs.h @@ -59,6 +59,9 @@ typedef uint32 perform_code; typedef __haiku_phys_addr_t phys_addr_t; typedef phys_addr_t phys_size_t; +typedef __haiku_generic_addr_t generic_addr_t; +typedef generic_addr_t generic_size_t; + /* printf()/scanf() format strings for [u]int* types */ #define B_PRId8 "d" @@ -126,6 +129,11 @@ typedef phys_addr_t phys_size_t; #define B_PRIoPHYSADDR __HAIKU_PRI_PREFIX_PHYS_ADDR "o" #define B_PRIxPHYSADDR __HAIKU_PRI_PREFIX_PHYS_ADDR "x" #define B_PRIXPHYSADDR __HAIKU_PRI_PREFIX_PHYS_ADDR "X" +/* generic_addr_t */ +#define B_PRIuGENADDR __HAIKU_PRI_PREFIX_GENERIC_ADDR "u" +#define B_PRIoGENADDR __HAIKU_PRI_PREFIX_GENERIC_ADDR "o" +#define B_PRIxGENADDR __HAIKU_PRI_PREFIX_GENERIC_ADDR "x" +#define B_PRIXGENADDR __HAIKU_PRI_PREFIX_GENERIC_ADDR "X" /* off_t */ #define B_PRIdOFF B_PRId64 #define B_PRIiOFF B_PRIi64 diff --git a/headers/private/fs_shell/fssh_api_wrapper.h b/headers/private/fs_shell/fssh_api_wrapper.h index 4770b3af47..a7994eb36c 100644 --- a/headers/private/fs_shell/fssh_api_wrapper.h +++ b/headers/private/fs_shell/fssh_api_wrapper.h @@ -1493,6 +1493,8 @@ #define addr_t fssh_addr_t #define phys_addr_t fssh_phys_addr_t #define phys_size_t fssh_phys_size_t +#define generic_addr_t fssh_generic_addr_t +#define generic_size_t fssh_generic_size_t #define dev_t fssh_dev_t #define ino_t fssh_ino_t @@ -1573,6 +1575,16 @@ #define B_PRIoADDR FSSH_B_PRIoADDR #define B_PRIxADDR FSSH_B_PRIxADDR #define B_PRIXADDR FSSH_B_PRIXADDR +/* phys_addr_t */ +#define B_PRIuPHYSADDR FSSH_B_PRIuPHYSADDR +#define B_PRIoPHYSADDR FSSH_B_PRIoPHYSADDR +#define B_PRIxPHYSADDR FSSH_B_PRIxPHYSADDR +#define B_PRIXPHYSADDR FSSH_B_PRIXPHYSADDR +/* generic_addr_t */ +#define B_PRIuGENADDR FSSH_B_PRIuGENADDR +#define B_PRIoGENADDR FSSH_B_PRIoGENADDR +#define B_PRIxGENADDR FSSH_B_PRIxGENADDR +#define B_PRIXGENADDR FSSH_B_PRIXGENADDR /* off_t */ #define B_PRIdOFF FSSH_B_PRIdOFF #define B_PRIiOFF FSSH_B_PRIiOFF diff --git a/headers/private/fs_shell/fssh_types.h b/headers/private/fs_shell/fssh_types.h index f478664d53..775a6a5f63 100644 --- a/headers/private/fs_shell/fssh_types.h +++ b/headers/private/fs_shell/fssh_types.h @@ -15,15 +15,18 @@ typedef volatile int64_t vint64_t; #ifdef HAIKU_HOST_PLATFORM_64_BIT typedef uint64_t fssh_addr_t; typedef uint64_t fssh_phys_addr_t; +typedef uint64_t fssh_generic_addr_t; typedef uint64_t fssh_size_t; typedef int64_t fssh_ssize_t; #else typedef uint32_t fssh_addr_t; typedef uint32_t fssh_phys_addr_t; +typedef uint32_t fssh_generic_addr_t; typedef uint32_t fssh_size_t; typedef int32_t fssh_ssize_t; #endif typedef fssh_phys_addr_t fssh_phys_size_t; +typedef fssh_generic_addr_t fssh_generic_size_t; typedef int32_t fssh_dev_t; typedef int64_t fssh_ino_t; @@ -134,6 +137,11 @@ typedef int32_t fssh_pid_t; # define FSSH_B_PRIxPHYSADDR FSSH_B_PRIx32 # define FSSH_B_PRIXPHYSADDR FSSH_B_PRIX32 #endif +/* generic_addr_t */ +#define FSSH_B_PRIuGENADDR FSSH_B_PRIuPHYSADDR +#define FSSH_B_PRIoGENADDR FSSH_B_PRIoPHYSADDR +#define FSSH_B_PRIxGENADDR FSSH_B_PRIxPHYSADDR +#define FSSH_B_PRIXGENADDR FSSH_B_PRIXPHYSADDR /* off_t */ #define FSSH_B_PRIdOFF FSSH_B_PRId64 #define FSSH_B_PRIiOFF FSSH_B_PRIi64