[haiku-commits] haiku: hrev47284 - in headers: build/os/support os/support

  • From: jessica.l.hamilton@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Fri, 30 May 2014 10:40:25 +0200 (CEST)

hrev47284 adds 2 changesets to branch 'master'
old head: b20eb413cd5afe7d879235b4553deeaab4ee5ed0
new head: 1e314683024c28e778a59dd5f7ef27b8d1d9df92
overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=1e31468+%5Eb20eb41

----------------------------------------------------------------------------

fad4fc5: Revert "ByteOrder.h: remove use of __builtin_bswap16."
  
  This reverts commit 040dc2eebc6628cc05c4ac5e287c5287c5dacf2e.

1e31468: ByteOrder.h: separate host & Haiku versions.
  
  * This avoids polluting the Haiku headers with host issues,
    as pointed out by Axel.
  * Should also resolve build issues for various versions of
    host compilers that were introduced in previous commits.

                         [ Jessica Hamilton <jessica.l.hamilton@xxxxxxxxx> ]

----------------------------------------------------------------------------

4 files changed, 140 insertions(+), 10 deletions(-)
headers/build/os/support/ByteOrder.h | 133 ++++++++++++++++++++++++++++++-
headers/os/support/ByteOrder.h       |   7 +-
headers/posix/netinet/in.h           |   4 -
src/build/libroot/byteorder.cpp      |   6 ++

############################################################################

Commit:      fad4fc59f99b836052f9dc28f2b31adf933a59ff
URL:         http://cgit.haiku-os.org/haiku/commit/?id=fad4fc5
Author:      Jessica Hamilton <jessica.l.hamilton@xxxxxxxxx>
Date:        Fri May 30 07:56:34 2014 UTC

Revert "ByteOrder.h: remove use of __builtin_bswap16."

This reverts commit 040dc2eebc6628cc05c4ac5e287c5287c5dacf2e.

----------------------------------------------------------------------------

diff --git a/headers/os/support/ByteOrder.h b/headers/os/support/ByteOrder.h
index 05c4589..de6e959 100644
--- a/headers/os/support/ByteOrder.h
+++ b/headers/os/support/ByteOrder.h
@@ -29,11 +29,6 @@ typedef enum {
 #      define ntohl(x) B_BENDIAN_TO_HOST_INT32(x)
 #      define htons(x) B_HOST_TO_BENDIAN_INT16(x)
 #      define ntohs(x) B_BENDIAN_TO_HOST_INT16(x)
-
-static inline uint16 __swap_int16(uint16 arg)
-{
-       return (arg >> 8) | (arg << 8);
-}
 #endif
 
 /* always swap macros */
@@ -128,9 +123,11 @@ extern float  __swap_float(float arg);
 #if __GNUC__ >= 4
 #define __swap_int64(arg)      __builtin_bswap64(arg)
 #define __swap_int32(arg)      __builtin_bswap32(arg)
+#define __swap_int16(arg)      __builtin_bswap16(arg)
 #else
 extern uint64 __swap_int64(uint64 arg);
 extern uint32 __swap_int32(uint32 arg);
+extern uint16 __swap_int16(uint16 arg);
 #endif
 
 #ifdef __cplusplus
diff --git a/headers/posix/netinet/in.h b/headers/posix/netinet/in.h
index 169a6cb..ab891cb 100644
--- a/headers/posix/netinet/in.h
+++ b/headers/posix/netinet/in.h
@@ -31,10 +31,6 @@ typedef uint32_t in_addr_t;
 #      else
                extern unsigned int __swap_int32(unsigned int); /* private */
 #      endif
-       static inline uint16_t __swap_int16(uint16_t arg)
-       {
-               return (arg >> 8) | (arg << 8);
-       }
        extern uint16_t __swap_int16(uint16_t); /* private */
 #      if BYTE_ORDER == LITTLE_ENDIAN
 #              define htonl(x) ((uint32_t)__swap_int32(x))
diff --git a/src/build/libroot/byteorder.cpp b/src/build/libroot/byteorder.cpp
index ebd6ae0..fdcbf32 100644
--- a/src/build/libroot/byteorder.cpp
+++ b/src/build/libroot/byteorder.cpp
@@ -7,6 +7,12 @@
 
 #include <ByteOrder.h>
 
+uint16
+__swap_int16(uint16 value)
+{
+       return (value >> 8) | (value << 8);
+}
+
 uint32
 __swap_int32(uint32 value)
 {

############################################################################

Revision:    hrev47284
Commit:      1e314683024c28e778a59dd5f7ef27b8d1d9df92
URL:         http://cgit.haiku-os.org/haiku/commit/?id=1e31468
Author:      Jessica Hamilton <jessica.l.hamilton@xxxxxxxxx>
Date:        Fri May 30 08:02:25 2014 UTC

ByteOrder.h: separate host & Haiku versions.

* This avoids polluting the Haiku headers with host issues,
  as pointed out by Axel.
* Should also resolve build issues for various versions of
  host compilers that were introduced in previous commits.

----------------------------------------------------------------------------

diff --git a/headers/build/os/support/ByteOrder.h 
b/headers/build/os/support/ByteOrder.h
index ea63f6d..0f2f28f 100644
--- a/headers/build/os/support/ByteOrder.h
+++ b/headers/build/os/support/ByteOrder.h
@@ -1 +1,132 @@
-#include <../os/support/ByteOrder.h>
+/*
+ * Copyright 2007, Haiku, Inc. All Rights Reserved.
+ * Distributed under the terms of the MIT License.
+ */
+#ifndef _BYTEORDER_H
+#define _BYTEORDER_H
+
+
+#include <BeBuild.h>
+#include <endian.h>
+#include <SupportDefs.h>
+#include <TypeConstants.h>
+       /* for convenience */
+
+
+/* swap directions */
+typedef enum {
+       B_SWAP_HOST_TO_LENDIAN,
+       B_SWAP_HOST_TO_BENDIAN,
+       B_SWAP_LENDIAN_TO_HOST,
+       B_SWAP_BENDIAN_TO_HOST,
+       B_SWAP_ALWAYS
+} swap_action;
+
+
+/* BSD/networking macros */
+#ifndef htonl
+#      define htonl(x) B_HOST_TO_BENDIAN_INT32(x)
+#      define ntohl(x) B_BENDIAN_TO_HOST_INT32(x)
+#      define htons(x) B_HOST_TO_BENDIAN_INT16(x)
+#      define ntohs(x) B_BENDIAN_TO_HOST_INT16(x)
+#endif
+
+/* always swap macros */
+#define B_SWAP_DOUBLE(arg)   __swap_double(arg)
+#define B_SWAP_FLOAT(arg)    __swap_float(arg)
+#define B_SWAP_INT64(arg)    __swap_int64(arg)
+#define B_SWAP_INT32(arg)    __swap_int32(arg)
+#define B_SWAP_INT16(arg)    __swap_int16(arg)
+
+#if BYTE_ORDER == __LITTLE_ENDIAN
+/* Host is little endian */
+
+#define B_HOST_IS_LENDIAN 1
+#define B_HOST_IS_BENDIAN 0
+
+/* Host native to little endian */
+#define B_HOST_TO_LENDIAN_DOUBLE(arg)  (double)(arg)
+#define B_HOST_TO_LENDIAN_FLOAT(arg)   (float)(arg)
+#define B_HOST_TO_LENDIAN_INT64(arg)   (uint64)(arg)
+#define B_HOST_TO_LENDIAN_INT32(arg)   (uint32)(arg)
+#define B_HOST_TO_LENDIAN_INT16(arg)   (uint16)(arg)
+
+/* Little endian to host native */
+#define B_LENDIAN_TO_HOST_DOUBLE(arg)  (double)(arg)
+#define B_LENDIAN_TO_HOST_FLOAT(arg)   (float)(arg)
+#define B_LENDIAN_TO_HOST_INT64(arg)   (uint64)(arg)
+#define B_LENDIAN_TO_HOST_INT32(arg)   (uint32)(arg)
+#define B_LENDIAN_TO_HOST_INT16(arg)   (uint16)(arg)
+
+/* Host native to big endian */
+#define B_HOST_TO_BENDIAN_DOUBLE(arg)  __swap_double(arg)
+#define B_HOST_TO_BENDIAN_FLOAT(arg)   __swap_float(arg)
+#define B_HOST_TO_BENDIAN_INT64(arg)   __swap_int64(arg)
+#define B_HOST_TO_BENDIAN_INT32(arg)   __swap_int32(arg)
+#define B_HOST_TO_BENDIAN_INT16(arg)   __swap_int16(arg)
+
+/* Big endian to host native */
+#define B_BENDIAN_TO_HOST_DOUBLE(arg)  __swap_double(arg)
+#define B_BENDIAN_TO_HOST_FLOAT(arg)   __swap_float(arg)
+#define B_BENDIAN_TO_HOST_INT64(arg)   __swap_int64(arg)
+#define B_BENDIAN_TO_HOST_INT32(arg)   __swap_int32(arg)
+#define B_BENDIAN_TO_HOST_INT16(arg)   __swap_int16(arg)
+
+#else  /* BYTE_ORDER */
+/* Host is big endian */
+
+#define B_HOST_IS_LENDIAN 0
+#define B_HOST_IS_BENDIAN 1
+
+/* Host native to little endian */
+#define B_HOST_TO_LENDIAN_DOUBLE(arg)  __swap_double(arg)
+#define B_HOST_TO_LENDIAN_FLOAT(arg)   __swap_float(arg)
+#define B_HOST_TO_LENDIAN_INT64(arg)   __swap_int64(arg)
+#define B_HOST_TO_LENDIAN_INT32(arg)   __swap_int32(arg)
+#define B_HOST_TO_LENDIAN_INT16(arg)   __swap_int16(arg)
+
+/* Little endian to host native */
+#define B_LENDIAN_TO_HOST_DOUBLE(arg)  __swap_double(arg)
+#define B_LENDIAN_TO_HOST_FLOAT(arg)   __swap_float(arg)
+#define B_LENDIAN_TO_HOST_INT64(arg)   __swap_int64(arg)
+#define B_LENDIAN_TO_HOST_INT32(arg)   __swap_int32(arg)
+#define B_LENDIAN_TO_HOST_INT16(arg)   __swap_int16(arg)
+
+/* Host native to big endian */
+#define B_HOST_TO_BENDIAN_DOUBLE(arg)  (double)(arg)
+#define B_HOST_TO_BENDIAN_FLOAT(arg)   (float)(arg)
+#define B_HOST_TO_BENDIAN_INT64(arg)   (uint64)(arg)
+#define B_HOST_TO_BENDIAN_INT32(arg)   (uint32)(arg)
+#define B_HOST_TO_BENDIAN_INT16(arg)   (uint16)(arg)
+
+/* Big endian to host native */
+#define B_BENDIAN_TO_HOST_DOUBLE(arg)  (double)(arg)
+#define B_BENDIAN_TO_HOST_FLOAT(arg)   (float)(arg)
+#define B_BENDIAN_TO_HOST_INT64(arg)   (uint64)(arg)
+#define B_BENDIAN_TO_HOST_INT32(arg)   (uint32)(arg)
+#define B_BENDIAN_TO_HOST_INT16(arg)   (uint16)(arg)
+
+#endif /* BYTE_ORDER */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern status_t swap_data(type_code type, void *data, size_t length,
+       swap_action action);
+extern bool is_type_swapped(type_code type);
+
+
+/* Private implementations */
+extern double __swap_double(double arg);
+extern float  __swap_float(float arg);
+extern uint64 __swap_int64(uint64 arg);
+extern uint32 __swap_int32(uint32 arg);
+extern uint16 __swap_int16(uint16 arg);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BYTEORDER_H */


Other related posts:

  • » [haiku-commits] haiku: hrev47284 - in headers: build/os/support os/support - jessica . l . hamilton