BEMTOH32(9)

NAME
bemtoh16, bemtoh32, bemtoh64, lemtoh16, lemtoh32, lemtoh64, htobem16, htobem32, htobem64, htobem16, htobem32, htobem64 - byte swapping memory load and store operations

SYNOPSIS
#include <sys/types.h>
uint16_t
bemtoh16(uint16_t *m);
uint32_t
bemtoh32(uint32_t *m);
uint64_t
bemtoh64(uint64_t *m);
uint16_t
lemtoh16(uint16_t *m);
uint32_t
lemtoh32(uint32_t *m);
uint64_t
lemtoh64(uint64_t *m);
void
htobem16(uint16_t *m, uint16_t v);
void
htobem32(uint32_t *m, uint32_t v);
void
htobem64(uint64_t *m, uint64_t v);
void
htolem16(uint16_t *m, uint16_t v);
void
htolem32(uint32_t *m, uint32_t v);
void
htolem64(uint64_t *m, uint64_t v);

DESCRIPTION
This API provides a way to take advantage of an architecture's ability to load and store words in memory of different endians. If an architecture has no specialised support for these operations they will be implemented as a wrapper around the byteorder(3) API.

These operations are subject to the same alignment restrictions as the host's normal memory loads and stores.

bemtoh16(), bemtoh32(), and bemtoh64() read a big endian value from the memory located at m into the host's native byte order. lemtoh16(), lemtoh32(), and lemtoh64() read a little endian value from the memory located at m into the host's native byte order.

htobem16(), htobem32(), and htobem64() store the host's native byte ordered value of v as a big endian value in the memory located at m. htolem16(), htolem32(), and htolem64() store the host's native byte ordered value of v as a little endian value in the memory located at m.

CONTEXT
bemtoh16(), bemtoh32(), bemtoh64(), lemtoh16(), lemtoh32(), lemtoh64(), htobem16(), htobem32(), htobem64(), htolem16(), htolem32(), and htolem64() can be called during autoconf, from process context, or from interrupt context.

RETURN VALUES
bemtoh16(), bemtoh32(), bemtoh64(), lemtoh16(), lemtoh32(), and lemtoh64() return the host's native byte ordered value of the memory at m after the appropriate byteswapping has occurred.

htobem16(), htobem32(), htobem64(), htolem16(), htolem32(), and htolem64() do not return a value.

SEE ALSO
byteorder(3)

HISTORY
These functions first appeared in OpenBSD 5.6.