/src/systemd/src/basic/sparse-endian.h
Line  | Count  | Source (jump to first uncovered line)  | 
1  |  | /* SPDX-License-Identifier: MIT  | 
2  |  |  *  | 
3  |  |  * Copyright (c) 2012 Josh Triplett <josh@joshtriplett.org>  | 
4  |  |  *  | 
5  |  |  * Permission is hereby granted, free of charge, to any person obtaining a copy  | 
6  |  |  * of this software and associated documentation files (the "Software"), to  | 
7  |  |  * deal in the Software without restriction, including without limitation the  | 
8  |  |  * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or  | 
9  |  |  * sell copies of the Software, and to permit persons to whom the Software is  | 
10  |  |  * furnished to do so, subject to the following conditions:  | 
11  |  |  *  | 
12  |  |  * The above copyright notice and this permission notice shall be included in  | 
13  |  |  * all copies or substantial portions of the Software.  | 
14  |  |  *  | 
15  |  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  | 
16  |  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,  | 
17  |  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE  | 
18  |  |  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER  | 
19  |  |  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING  | 
20  |  |  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS  | 
21  |  |  * IN THE SOFTWARE.  | 
22  |  |  */  | 
23  |  | #pragma once  | 
24  |  |  | 
25  |  | #include <byteswap.h>  | 
26  |  | #include <endian.h>  | 
27  |  | #include <stdint.h>  | 
28  |  |  | 
29  |  | #ifdef __CHECKER__  | 
30  |  | #define __sd_bitwise __attribute__((__bitwise__))  | 
31  |  | #define __sd_force __attribute__((__force__))  | 
32  |  | #else  | 
33  |  | #define __sd_bitwise  | 
34  |  | #define __sd_force  | 
35  |  | #endif  | 
36  |  |  | 
37  |  | typedef uint16_t __sd_bitwise le16_t;  | 
38  |  | typedef uint16_t __sd_bitwise be16_t;  | 
39  |  | typedef uint32_t __sd_bitwise le32_t;  | 
40  |  | typedef uint32_t __sd_bitwise be32_t;  | 
41  |  | typedef uint64_t __sd_bitwise le64_t;  | 
42  |  | typedef uint64_t __sd_bitwise be64_t;  | 
43  |  |  | 
44  |  | #undef htobe16  | 
45  |  | #undef htole16  | 
46  |  | #undef be16toh  | 
47  |  | #undef le16toh  | 
48  |  | #undef htobe32  | 
49  |  | #undef htole32  | 
50  |  | #undef be32toh  | 
51  |  | #undef le32toh  | 
52  |  | #undef htobe64  | 
53  |  | #undef htole64  | 
54  |  | #undef be64toh  | 
55  |  | #undef le64toh  | 
56  |  |  | 
57  |  | #if __BYTE_ORDER == __LITTLE_ENDIAN  | 
58  |  | #define bswap_16_on_le(x) bswap_16(x)  | 
59  |  | #define bswap_32_on_le(x) bswap_32(x)  | 
60  |  | #define bswap_64_on_le(x) bswap_64(x)  | 
61  |  | #define bswap_16_on_be(x) (x)  | 
62  |  | #define bswap_32_on_be(x) (x)  | 
63  |  | #define bswap_64_on_be(x) (x)  | 
64  |  | #elif __BYTE_ORDER == __BIG_ENDIAN  | 
65  |  | #define bswap_16_on_le(x) (x)  | 
66  |  | #define bswap_32_on_le(x) (x)  | 
67  |  | #define bswap_64_on_le(x) (x)  | 
68  |  | #define bswap_16_on_be(x) bswap_16(x)  | 
69  |  | #define bswap_32_on_be(x) bswap_32(x)  | 
70  |  | #define bswap_64_on_be(x) bswap_64(x)  | 
71  |  | #endif  | 
72  |  |  | 
73  | 0  | static inline le16_t htole16(uint16_t value) { return (le16_t __sd_force) bswap_16_on_be(value); }Unexecuted instantiation: link-config.c:htole16 Unexecuted instantiation: link-config-gperf.c:htole16  | 
74  | 0  | static inline le32_t htole32(uint32_t value) { return (le32_t __sd_force) bswap_32_on_be(value); }Unexecuted instantiation: link-config.c:htole32 Unexecuted instantiation: link-config-gperf.c:htole32  | 
75  | 0  | static inline le64_t htole64(uint64_t value) { return (le64_t __sd_force) bswap_64_on_be(value); }Unexecuted instantiation: link-config.c:htole64 Unexecuted instantiation: link-config-gperf.c:htole64  | 
76  |  |  | 
77  | 0  | static inline be16_t htobe16(uint16_t value) { return (be16_t __sd_force) bswap_16_on_le(value); }Unexecuted instantiation: link-config.c:htobe16 Unexecuted instantiation: link-config-gperf.c:htobe16  | 
78  | 0  | static inline be32_t htobe32(uint32_t value) { return (be32_t __sd_force) bswap_32_on_le(value); }Unexecuted instantiation: link-config.c:htobe32 Unexecuted instantiation: link-config-gperf.c:htobe32  | 
79  | 0  | static inline be64_t htobe64(uint64_t value) { return (be64_t __sd_force) bswap_64_on_le(value); }Unexecuted instantiation: link-config.c:htobe64 Unexecuted instantiation: link-config-gperf.c:htobe64  | 
80  |  |  | 
81  | 0  | static inline uint16_t le16toh(le16_t value) { return bswap_16_on_be((uint16_t __sd_force)value); }Unexecuted instantiation: link-config.c:le16toh Unexecuted instantiation: link-config-gperf.c:le16toh  | 
82  | 0  | static inline uint32_t le32toh(le32_t value) { return bswap_32_on_be((uint32_t __sd_force)value); }Unexecuted instantiation: link-config.c:le32toh Unexecuted instantiation: link-config-gperf.c:le32toh  | 
83  | 0  | static inline uint64_t le64toh(le64_t value) { return bswap_64_on_be((uint64_t __sd_force)value); }Unexecuted instantiation: link-config.c:le64toh Unexecuted instantiation: link-config-gperf.c:le64toh  | 
84  |  |  | 
85  | 0  | static inline uint16_t be16toh(be16_t value) { return bswap_16_on_le((uint16_t __sd_force)value); }Unexecuted instantiation: link-config.c:be16toh Unexecuted instantiation: link-config-gperf.c:be16toh  | 
86  | 0  | static inline uint32_t be32toh(be32_t value) { return bswap_32_on_le((uint32_t __sd_force)value); }Unexecuted instantiation: link-config.c:be32toh Unexecuted instantiation: link-config-gperf.c:be32toh  | 
87  | 0  | static inline uint64_t be64toh(be64_t value) { return bswap_64_on_le((uint64_t __sd_force)value); }Unexecuted instantiation: link-config.c:be64toh Unexecuted instantiation: link-config-gperf.c:be64toh  | 
88  |  |  | 
89  |  | #undef __sd_bitwise  | 
90  |  | #undef __sd_force  |