Zephyr Project API 4.0.0
A Scalable Open Source RTOS
|
Byte order helpers. More...
#include <zephyr/types.h>
#include <stddef.h>
#include <zephyr/sys/__assert.h>
#include <zephyr/toolchain.h>
Go to the source code of this file.
Macros | |
#define | BSWAP_16(x) ((uint16_t) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))) |
#define | BSWAP_24(x) |
#define | BSWAP_32(x) |
#define | BSWAP_40(x) |
#define | BSWAP_48(x) |
#define | BSWAP_64(x) |
#define | sys_le16_to_cpu(val) BSWAP_16(val) |
Convert 16-bit integer from little-endian to host endianness. | |
#define | sys_cpu_to_le16(val) BSWAP_16(val) |
Convert 16-bit integer from host endianness to little-endian. | |
#define | sys_le24_to_cpu(val) BSWAP_24(val) |
Convert 24-bit integer from little-endian to host endianness. | |
#define | sys_cpu_to_le24(val) BSWAP_24(val) |
Convert 24-bit integer from host endianness to little-endian. | |
#define | sys_le32_to_cpu(val) BSWAP_32(val) |
Convert 32-bit integer from little-endian to host endianness. | |
#define | sys_cpu_to_le32(val) BSWAP_32(val) |
Convert 32-bit integer from host endianness to little-endian. | |
#define | sys_le40_to_cpu(val) BSWAP_40(val) |
#define | sys_cpu_to_le40(val) BSWAP_40(val) |
#define | sys_le48_to_cpu(val) BSWAP_48(val) |
Convert 48-bit integer from little-endian to host endianness. | |
#define | sys_cpu_to_le48(val) BSWAP_48(val) |
Convert 48-bit integer from host endianness to little-endian. | |
#define | sys_le64_to_cpu(val) BSWAP_64(val) |
#define | sys_cpu_to_le64(val) BSWAP_64(val) |
#define | sys_be16_to_cpu(val) (val) |
Convert 16-bit integer from big-endian to host endianness. | |
#define | sys_cpu_to_be16(val) (val) |
Convert 16-bit integer from host endianness to big-endian. | |
#define | sys_be24_to_cpu(val) (val) |
Convert 24-bit integer from big-endian to host endianness. | |
#define | sys_cpu_to_be24(val) (val) |
Convert 24-bit integer from host endianness to big-endian. | |
#define | sys_be32_to_cpu(val) (val) |
Convert 32-bit integer from big-endian to host endianness. | |
#define | sys_cpu_to_be32(val) (val) |
Convert 32-bit integer from host endianness to big-endian. | |
#define | sys_be40_to_cpu(val) (val) |
#define | sys_cpu_to_be40(val) (val) |
#define | sys_be48_to_cpu(val) (val) |
Convert 48-bit integer from big-endian to host endianness. | |
#define | sys_cpu_to_be48(val) (val) |
Convert 48-bit integer from host endianness to big-endian. | |
#define | sys_be64_to_cpu(val) (val) |
#define | sys_cpu_to_be64(val) (val) |
#define | sys_uint16_to_array(val) |
Convert 16-bit unsigned integer to byte array. | |
#define | sys_uint32_to_array(val) |
Convert 32-bit unsigned integer to byte array. | |
#define | sys_uint64_to_array(val) |
Convert 64-bit unsigned integer to byte array. | |
Functions | |
static void | sys_put_be16 (uint16_t val, uint8_t dst[2]) |
Put a 16-bit integer as big-endian to arbitrary location. | |
static void | sys_put_be24 (uint32_t val, uint8_t dst[3]) |
Put a 24-bit integer as big-endian to arbitrary location. | |
static void | sys_put_be32 (uint32_t val, uint8_t dst[4]) |
Put a 32-bit integer as big-endian to arbitrary location. | |
static void | sys_put_be40 (uint64_t val, uint8_t dst[5]) |
Put a 40-bit integer as big-endian to arbitrary location. | |
static void | sys_put_be48 (uint64_t val, uint8_t dst[6]) |
Put a 48-bit integer as big-endian to arbitrary location. | |
static void | sys_put_be64 (uint64_t val, uint8_t dst[8]) |
Put a 64-bit integer as big-endian to arbitrary location. | |
static void | sys_put_le16 (uint16_t val, uint8_t dst[2]) |
Put a 16-bit integer as little-endian to arbitrary location. | |
static void | sys_put_le24 (uint32_t val, uint8_t dst[3]) |
Put a 24-bit integer as little-endian to arbitrary location. | |
static void | sys_put_le32 (uint32_t val, uint8_t dst[4]) |
Put a 32-bit integer as little-endian to arbitrary location. | |
static void | sys_put_le40 (uint64_t val, uint8_t dst[5]) |
Put a 40-bit integer as little-endian to arbitrary location. | |
static void | sys_put_le48 (uint64_t val, uint8_t dst[6]) |
Put a 48-bit integer as little-endian to arbitrary location. | |
static void | sys_put_le64 (uint64_t val, uint8_t dst[8]) |
Put a 64-bit integer as little-endian to arbitrary location. | |
static uint16_t | sys_get_be16 (const uint8_t src[2]) |
Get a 16-bit integer stored in big-endian format. | |
static uint32_t | sys_get_be24 (const uint8_t src[3]) |
Get a 24-bit integer stored in big-endian format. | |
static uint32_t | sys_get_be32 (const uint8_t src[4]) |
Get a 32-bit integer stored in big-endian format. | |
static uint64_t | sys_get_be40 (const uint8_t src[5]) |
Get a 40-bit integer stored in big-endian format. | |
static uint64_t | sys_get_be48 (const uint8_t src[6]) |
Get a 48-bit integer stored in big-endian format. | |
static uint64_t | sys_get_be64 (const uint8_t src[8]) |
Get a 64-bit integer stored in big-endian format. | |
static uint16_t | sys_get_le16 (const uint8_t src[2]) |
Get a 16-bit integer stored in little-endian format. | |
static uint32_t | sys_get_le24 (const uint8_t src[3]) |
Get a 24-bit integer stored in little-endian format. | |
static uint32_t | sys_get_le32 (const uint8_t src[4]) |
Get a 32-bit integer stored in little-endian format. | |
static uint64_t | sys_get_le40 (const uint8_t src[5]) |
Get a 40-bit integer stored in little-endian format. | |
static uint64_t | sys_get_le48 (const uint8_t src[6]) |
Get a 48-bit integer stored in little-endian format. | |
static uint64_t | sys_get_le64 (const uint8_t src[8]) |
Get a 64-bit integer stored in little-endian format. | |
static void | sys_memcpy_swap (void *dst, const void *src, size_t length) |
Swap one buffer content into another. | |
static void | sys_mem_swap (void *buf, size_t length) |
Swap buffer content. | |
Byte order helpers.
#define BSWAP_16 | ( | x | ) | ((uint16_t) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))) |
#define BSWAP_24 | ( | x | ) |
#define BSWAP_32 | ( | x | ) |
#define BSWAP_40 | ( | x | ) |
#define BSWAP_48 | ( | x | ) |
#define BSWAP_64 | ( | x | ) |
#define sys_be16_to_cpu | ( | val | ) | (val) |
Convert 16-bit integer from big-endian to host endianness.
val | 16-bit integer in big-endian format. |
#define sys_be24_to_cpu | ( | val | ) | (val) |
Convert 24-bit integer from big-endian to host endianness.
val | 24-bit integer in big-endian format. |
#define sys_be32_to_cpu | ( | val | ) | (val) |
Convert 32-bit integer from big-endian to host endianness.
val | 32-bit integer in big-endian format. |
#define sys_be40_to_cpu | ( | val | ) | (val) |
#define sys_be48_to_cpu | ( | val | ) | (val) |
Convert 48-bit integer from big-endian to host endianness.
val | 48-bit integer in big-endian format. |
#define sys_be64_to_cpu | ( | val | ) | (val) |
#define sys_cpu_to_be16 | ( | val | ) | (val) |
Convert 16-bit integer from host endianness to big-endian.
val | 16-bit integer in host endianness. |
#define sys_cpu_to_be24 | ( | val | ) | (val) |
Convert 24-bit integer from host endianness to big-endian.
val | 24-bit integer in host endianness. |
#define sys_cpu_to_be32 | ( | val | ) | (val) |
Convert 32-bit integer from host endianness to big-endian.
val | 32-bit integer in host endianness. |
#define sys_cpu_to_be40 | ( | val | ) | (val) |
#define sys_cpu_to_be48 | ( | val | ) | (val) |
Convert 48-bit integer from host endianness to big-endian.
val | 48-bit integer in host endianness. |
#define sys_cpu_to_be64 | ( | val | ) | (val) |
#define sys_cpu_to_le16 | ( | val | ) | BSWAP_16(val) |
Convert 16-bit integer from host endianness to little-endian.
val | 16-bit integer in host endianness. |
#define sys_cpu_to_le24 | ( | val | ) | BSWAP_24(val) |
Convert 24-bit integer from host endianness to little-endian.
val | 24-bit integer in host endianness. |
#define sys_cpu_to_le32 | ( | val | ) | BSWAP_32(val) |
Convert 32-bit integer from host endianness to little-endian.
val | 32-bit integer in host endianness. |
#define sys_cpu_to_le40 | ( | val | ) | BSWAP_40(val) |
#define sys_cpu_to_le48 | ( | val | ) | BSWAP_48(val) |
Convert 48-bit integer from host endianness to little-endian.
val | 48-bit integer in host endianness. |
#define sys_cpu_to_le64 | ( | val | ) | BSWAP_64(val) |
#define sys_le16_to_cpu | ( | val | ) | BSWAP_16(val) |
Convert 16-bit integer from little-endian to host endianness.
val | 16-bit integer in little-endian format. |
#define sys_le24_to_cpu | ( | val | ) | BSWAP_24(val) |
Convert 24-bit integer from little-endian to host endianness.
val | 24-bit integer in little-endian format. |
#define sys_le32_to_cpu | ( | val | ) | BSWAP_32(val) |
Convert 32-bit integer from little-endian to host endianness.
val | 32-bit integer in little-endian format. |
#define sys_le40_to_cpu | ( | val | ) | BSWAP_40(val) |
#define sys_le48_to_cpu | ( | val | ) | BSWAP_48(val) |
Convert 48-bit integer from little-endian to host endianness.
val | 48-bit integer in little-endian format. |
#define sys_le64_to_cpu | ( | val | ) | BSWAP_64(val) |
#define sys_uint16_to_array | ( | val | ) |
Convert 16-bit unsigned integer to byte array.
Byte order aware macro to treat an unsigned integer as an array, rather than an integer literal. For example, 0x0123
would be converted to {0x01, 0x23}
for big endian machines, and {0x23, 0x01}
for little endian machines.
val | 16-bit unsigned integer. |
#define sys_uint32_to_array | ( | val | ) |
Convert 32-bit unsigned integer to byte array.
Byte order aware macro to treat an unsigned integer as an array, rather than an integer literal. For example, 0x01234567
would be converted to {0x01, 0x23, 0x45, 0x67}
for big endian machines, and {0x67, 0x45, 0x23, 0x01}
for little endian machines.
val | 32-bit unsigned integer. |
#define sys_uint64_to_array | ( | val | ) |
Convert 64-bit unsigned integer to byte array.
Byte order aware macro to treat an unsigned integer as an array, rather than an integer literal. For example, 0x0123456789abcdef
would be converted to {0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef}
for big endian machines, and {0xef, 0xcd, 0xab, 0x89, 0x67, 0x45, 0x23, 0x01}
for little endian machines.
val | 64-bit unsigned integer. |
Get a 16-bit integer stored in big-endian format.
Get a 16-bit integer, stored in big-endian format in a potentially unaligned memory location, and convert it to the host endianness.
src | Location of the big-endian 16-bit integer to get. |
Get a 24-bit integer stored in big-endian format.
Get a 24-bit integer, stored in big-endian format in a potentially unaligned memory location, and convert it to the host endianness.
src | Location of the big-endian 24-bit integer to get. |
Get a 32-bit integer stored in big-endian format.
Get a 32-bit integer, stored in big-endian format in a potentially unaligned memory location, and convert it to the host endianness.
src | Location of the big-endian 32-bit integer to get. |
Get a 40-bit integer stored in big-endian format.
Get a 40-bit integer, stored in big-endian format in a potentially unaligned memory location, and convert it to the host endianness.
src | Location of the big-endian 40-bit integer to get. |
Get a 48-bit integer stored in big-endian format.
Get a 48-bit integer, stored in big-endian format in a potentially unaligned memory location, and convert it to the host endianness.
src | Location of the big-endian 48-bit integer to get. |
Get a 64-bit integer stored in big-endian format.
Get a 64-bit integer, stored in big-endian format in a potentially unaligned memory location, and convert it to the host endianness.
src | Location of the big-endian 64-bit integer to get. |
Get a 16-bit integer stored in little-endian format.
Get a 16-bit integer, stored in little-endian format in a potentially unaligned memory location, and convert it to the host endianness.
src | Location of the little-endian 16-bit integer to get. |
Get a 24-bit integer stored in little-endian format.
Get a 24-bit integer, stored in little-endian format in a potentially unaligned memory location, and convert it to the host endianness.
src | Location of the little-endian 24-bit integer to get. |
Get a 32-bit integer stored in little-endian format.
Get a 32-bit integer, stored in little-endian format in a potentially unaligned memory location, and convert it to the host endianness.
src | Location of the little-endian 32-bit integer to get. |
Get a 40-bit integer stored in little-endian format.
Get a 40-bit integer, stored in little-endian format in a potentially unaligned memory location, and convert it to the host endianness.
src | Location of the little-endian 40-bit integer to get. |
Get a 48-bit integer stored in little-endian format.
Get a 48-bit integer, stored in little-endian format in a potentially unaligned memory location, and convert it to the host endianness.
src | Location of the little-endian 48-bit integer to get. |
Get a 64-bit integer stored in little-endian format.
Get a 64-bit integer, stored in little-endian format in a potentially unaligned memory location, and convert it to the host endianness.
src | Location of the little-endian 64-bit integer to get. |
|
inlinestatic |
Swap buffer content.
In-place memory swap, where final content will be reversed. I.e.: buf[n] will be put in buf[end-n] Where n is an index and 'end' the last index of buf.
buf | A valid pointer on a memory area to swap |
length | Size of buf memory area |
|
inlinestatic |
Swap one buffer content into another.
Copy the content of src buffer into dst buffer in reversed order, i.e.: src[n] will be put in dst[end-n] Where n is an index and 'end' the last index in both arrays. The 2 memory pointers must be pointing to different areas, and have a minimum size of given length.
dst | A valid pointer on a memory area where to copy the data in |
src | A valid pointer on a memory area where to copy the data from |
length | Size of both dst and src memory areas |
Put a 16-bit integer as big-endian to arbitrary location.
Put a 16-bit integer, originally in host endianness, to a potentially unaligned memory location in big-endian format.
val | 16-bit integer in host endianness. |
dst | Destination memory address to store the result. |
Put a 24-bit integer as big-endian to arbitrary location.
Put a 24-bit integer, originally in host endianness, to a potentially unaligned memory location in big-endian format.
val | 24-bit integer in host endianness. |
dst | Destination memory address to store the result. |
Put a 32-bit integer as big-endian to arbitrary location.
Put a 32-bit integer, originally in host endianness, to a potentially unaligned memory location in big-endian format.
val | 32-bit integer in host endianness. |
dst | Destination memory address to store the result. |
Put a 40-bit integer as big-endian to arbitrary location.
Put a 40-bit integer, originally in host endianness, to a potentially unaligned memory location in big-endian format.
val | 40-bit integer in host endianness. |
dst | Destination memory address to store the result. |
Put a 48-bit integer as big-endian to arbitrary location.
Put a 48-bit integer, originally in host endianness, to a potentially unaligned memory location in big-endian format.
val | 48-bit integer in host endianness. |
dst | Destination memory address to store the result. |
Put a 64-bit integer as big-endian to arbitrary location.
Put a 64-bit integer, originally in host endianness, to a potentially unaligned memory location in big-endian format.
val | 64-bit integer in host endianness. |
dst | Destination memory address to store the result. |
Put a 16-bit integer as little-endian to arbitrary location.
Put a 16-bit integer, originally in host endianness, to a potentially unaligned memory location in little-endian format.
val | 16-bit integer in host endianness. |
dst | Destination memory address to store the result. |
Put a 24-bit integer as little-endian to arbitrary location.
Put a 24-bit integer, originally in host endianness, to a potentially unaligned memory location in little-endian format.
val | 24-bit integer in host endianness. |
dst | Destination memory address to store the result. |
Put a 32-bit integer as little-endian to arbitrary location.
Put a 32-bit integer, originally in host endianness, to a potentially unaligned memory location in little-endian format.
val | 32-bit integer in host endianness. |
dst | Destination memory address to store the result. |
Put a 40-bit integer as little-endian to arbitrary location.
Put a 40-bit integer, originally in host endianness, to a potentially unaligned memory location in little-endian format.
val | 40-bit integer in host endianness. |
dst | Destination memory address to store the result. |
Put a 48-bit integer as little-endian to arbitrary location.
Put a 48-bit integer, originally in host endianness, to a potentially unaligned memory location in little-endian format.
val | 48-bit integer in host endianness. |
dst | Destination memory address to store the result. |
Put a 64-bit integer as little-endian to arbitrary location.
Put a 64-bit integer, originally in host endianness, to a potentially unaligned memory location in little-endian format.
val | 64-bit integer in host endianness. |
dst | Destination memory address to store the result. |