~ubuntu-branches/ubuntu/trusty/ctfutils/trusty

« back to all changes in this revision

Viewing changes to sys/cddl/compat/opensolaris/sys/byteorder.h

  • Committer: Package Import Robot
  • Author(s): Robert Millan
  • Date: 2013-11-09 17:07:06 UTC
  • Revision ID: package-import@ubuntu.com-20131109170706-kacr6nvpkbhxsk81
Tags: upstream-9.2
ImportĀ upstreamĀ versionĀ 9.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * CDDL HEADER START
 
3
 *
 
4
 * The contents of this file are subject to the terms of the
 
5
 * Common Development and Distribution License (the "License").
 
6
 * You may not use this file except in compliance with the License.
 
7
 *
 
8
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 
9
 * or http://www.opensolaris.org/os/licensing.
 
10
 * See the License for the specific language governing permissions
 
11
 * and limitations under the License.
 
12
 *
 
13
 * When distributing Covered Code, include this CDDL HEADER in each
 
14
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 
15
 * If applicable, add the following below this CDDL HEADER, with the
 
16
 * fields enclosed by brackets "[]" replaced with your own identifying
 
17
 * information: Portions Copyright [yyyy] [name of copyright owner]
 
18
 *
 
19
 * CDDL HEADER END
 
20
 *
 
21
 * $FreeBSD$
 
22
 */
 
23
 
 
24
/*
 
25
 * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
 
26
 * Use is subject to license terms.
 
27
 */
 
28
 
 
29
/*      Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T     */
 
30
/*        All Rights Reserved   */
 
31
 
 
32
/*
 
33
 * University Copyright- Copyright (c) 1982, 1986, 1988
 
34
 * The Regents of the University of California
 
35
 * All Rights Reserved
 
36
 *
 
37
 * University Acknowledgment- Portions of this document are derived from
 
38
 * software developed by the University of California, Berkeley, and its
 
39
 * contributors.
 
40
 */
 
41
 
 
42
#ifndef _OPENSOLARIS_SYS_BYTEORDER_H_
 
43
#define _OPENSOLARIS_SYS_BYTEORDER_H_
 
44
 
 
45
/* for htonl() */
 
46
#ifndef _KERNEL
 
47
#include <netinet/in.h>
 
48
#endif
 
49
 
 
50
/*
 
51
 * Macros to reverse byte order
 
52
 */
 
53
#define BSWAP_8(x)      ((x) & 0xff)
 
54
#define BSWAP_16(x)     ((BSWAP_8(x) << 8) | BSWAP_8((x) >> 8))
 
55
#define BSWAP_32(x)     ((BSWAP_16(x) << 16) | BSWAP_16((x) >> 16))
 
56
#define BSWAP_64(x)     ((BSWAP_32(x) << 32) | BSWAP_32((x) >> 32))
 
57
 
 
58
#define BMASK_8(x)      ((x) & 0xff)
 
59
#define BMASK_16(x)     ((x) & 0xffff)
 
60
#define BMASK_32(x)     ((x) & 0xffffffff)
 
61
#define BMASK_64(x)     (x)
 
62
 
 
63
/*
 
64
 * Macros to convert from a specific byte order to/from native byte order
 
65
 */
 
66
#if _BYTE_ORDER == _BIG_ENDIAN
 
67
#define BE_8(x)         BMASK_8(x)
 
68
#define BE_16(x)        BMASK_16(x)
 
69
#define BE_32(x)        BMASK_32(x)
 
70
#define BE_64(x)        BMASK_64(x)
 
71
#define LE_8(x)         BSWAP_8(x)
 
72
#define LE_16(x)        BSWAP_16(x)
 
73
#define LE_32(x)        BSWAP_32(x)
 
74
#define LE_64(x)        BSWAP_64(x)
 
75
#else
 
76
#define LE_8(x)         BMASK_8(x)
 
77
#define LE_16(x)        BMASK_16(x)
 
78
#define LE_32(x)        BMASK_32(x)
 
79
#define LE_64(x)        BMASK_64(x)
 
80
#define BE_8(x)         BSWAP_8(x)
 
81
#define BE_16(x)        BSWAP_16(x)
 
82
#define BE_32(x)        BSWAP_32(x)
 
83
#define BE_64(x)        BSWAP_64(x)
 
84
#endif
 
85
 
 
86
#if _BYTE_ORDER == _BIG_ENDIAN
 
87
#define htonll(x)       BMASK_64(x)
 
88
#define ntohll(x)       BMASK_64(x)
 
89
#else
 
90
#define htonll(x)       BSWAP_64(x)
 
91
#define ntohll(x)       BSWAP_64(x)
 
92
#endif
 
93
 
 
94
#define BE_IN32(xa)     htonl(*((uint32_t *)(void *)(xa)))
 
95
 
 
96
#endif /* _OPENSOLARIS_SYS_BYTEORDER_H_ */