Print this page
5007142 Add ntohll and htonll to sys/byteorder.h
6717509 Need to use bswap/bswapq for byte swap of 64-bit integer on x32/x64
PSARC 2008/474

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/sys/byteorder.h
          +++ new/usr/src/uts/common/sys/byteorder.h
↓ open down ↓ 12 lines elided ↑ open up ↑
  13   13   * When distributing Covered Code, include this CDDL HEADER in each
  14   14   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  
  22   22  /*
  23      - * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
       23 + * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
  24   24   * Use is subject to license terms.
  25   25   */
  26   26  
  27   27  /*      Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T     */
  28   28  /*        All Rights Reserved   */
  29   29  
  30   30  /*
  31   31   * University Copyright- Copyright (c) 1982, 1986, 1988
  32   32   * The Regents of the University of California
  33   33   * All Rights Reserved
  34   34   *
  35   35   * University Acknowledgment- Portions of this document are derived from
  36   36   * software developed by the University of California, Berkeley, and its
  37   37   * contributors.
  38   38   */
  39   39  
  40   40  #ifndef _SYS_BYTEORDER_H
  41   41  #define _SYS_BYTEORDER_H
  42   42  
  43      -#pragma ident   "%Z%%M% %I%     %E% SMI"
  44      -
  45   43  #include <sys/isa_defs.h>
  46   44  #include <sys/int_types.h>
  47   45  
  48   46  #if defined(__GNUC__) && defined(_ASM_INLINES) && \
  49   47          (defined(__i386) || defined(__amd64))
  50   48  #include <asm/byteorder.h>
  51   49  #endif
  52   50  
  53   51  #ifdef  __cplusplus
  54   52  extern "C" {
  55   53  #endif
  56   54  
  57   55  /*
  58   56   * macros for conversion between host and (internet) network byte order
  59   57   */
  60   58  
  61   59  #if defined(_BIG_ENDIAN) && !defined(ntohl) && !defined(__lint)
  62   60  /* big-endian */
  63   61  #define ntohl(x)        (x)
       62 +#define ntohll(x)       (x)
  64   63  #define ntohs(x)        (x)
  65   64  #define htonl(x)        (x)
       65 +#define htonll(x)       (x)
  66   66  #define htons(x)        (x)
  67   67  
  68   68  #elif !defined(ntohl) /* little-endian */
  69   69  
  70   70  #ifndef _IN_PORT_T
  71   71  #define _IN_PORT_T
  72   72  typedef uint16_t in_port_t;
  73   73  #endif
  74   74  
  75   75  #ifndef _IN_ADDR_T
  76   76  #define _IN_ADDR_T
  77   77  typedef uint32_t in_addr_t;
  78   78  #endif
  79   79  
  80   80  #if !defined(_XPG4_2) || defined(__EXTENSIONS__) || defined(_XPG5)
  81   81  extern  uint32_t htonl(uint32_t);
  82   82  extern  uint16_t htons(uint16_t);
  83      -extern  uint32_t ntohl(uint32_t);
       83 +extern  uint32_t ntohl(uint32_t);
  84   84  extern  uint16_t ntohs(uint16_t);
  85   85  #else
  86   86  extern  in_addr_t htonl(in_addr_t);
  87   87  extern  in_port_t htons(in_port_t);
  88      -extern  in_addr_t ntohl(in_addr_t);
       88 +extern  in_addr_t ntohl(in_addr_t);
  89   89  extern  in_port_t ntohs(in_port_t);
  90   90  #endif  /* !defined(_XPG4_2) || defined(__EXTENSIONS__) || defined(_XPG5) */
       91 +#if !(defined(_XPG4_2) || defined(_XPG5)) || defined(__EXTENSIONS__)
       92 +extern  uint64_t htonll(uint64_t);
       93 +extern  uint64_t ntohll(uint64_t);
       94 +#endif  /* !(_XPG4_2||_XPG5) || __EXTENSIONS__ */
  91   95  #endif
  92   96  
  93   97  #if !defined(_XPG4_2) || defined(__EXTENSIONS__)
  94   98  
  95   99  /*
  96  100   * Macros to reverse byte order
  97  101   */
  98  102  #define BSWAP_8(x)      ((x) & 0xff)
  99  103  #define BSWAP_16(x)     ((BSWAP_8(x) << 8) | BSWAP_8((x) >> 8))
 100  104  #define BSWAP_32(x)     ((BSWAP_16(x) << 16) | BSWAP_16((x) >> 16))
↓ open down ↓ 99 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX