2#ifndef __LINUX_UNALIGNED_H
3#define __LINUX_UNALIGNED_H
13#define get_unaligned(ptr) __get_unaligned_t(typeof(*(ptr)), (ptr))
14#define put_unaligned(val, ptr) __put_unaligned_t(typeof(*(ptr)), (val), (ptr))
16static inline u16 get_unaligned_le16(
const void *p)
21static inline u32 get_unaligned_le32(
const void *p)
26static inline u64 get_unaligned_le64(
const void *p)
31static inline void put_unaligned_le16(
u16 val,
void *p)
36static inline void put_unaligned_le32(
u32 val,
void *p)
41static inline void put_unaligned_le64(
u64 val,
void *p)
46static inline u16 get_unaligned_be16(
const void *p)
51static inline u32 get_unaligned_be32(
const void *p)
56static inline u64 get_unaligned_be64(
const void *p)
61static inline void put_unaligned_be16(
u16 val,
void *p)
66static inline void put_unaligned_be32(
u32 val,
void *p)
71static inline void put_unaligned_be64(
u64 val,
void *p)
76static inline u32 __get_unaligned_be24(
const u8 *p)
78 return p[0] << 16 | p[1] << 8 | p[2];
81static inline u32 get_unaligned_be24(
const void *p)
83 return __get_unaligned_be24(p);
86static inline u32 __get_unaligned_le24(
const u8 *p)
88 return p[0] | p[1] << 8 | p[2] << 16;
91static inline u32 get_unaligned_le24(
const void *p)
93 return __get_unaligned_le24(p);
96static inline void __put_unaligned_be24(
const u32 val,
u8 *p)
98 *p++ = (val >> 16) & 0xff;
99 *p++ = (val >> 8) & 0xff;
103static inline void put_unaligned_be24(
const u32 val,
void *p)
105 __put_unaligned_be24(val, p);
108static inline void __put_unaligned_le24(
const u32 val,
u8 *p)
111 *p++ = (val >> 8) & 0xff;
112 *p++ = (val >> 16) & 0xff;
115static inline void put_unaligned_le24(
const u32 val,
void *p)
117 __put_unaligned_le24(val, p);
120static inline void __put_unaligned_be48(
const u64 val,
u8 *p)
122 *p++ = (val >> 40) & 0xff;
123 *p++ = (val >> 32) & 0xff;
124 *p++ = (val >> 24) & 0xff;
125 *p++ = (val >> 16) & 0xff;
126 *p++ = (val >> 8) & 0xff;
130static inline void put_unaligned_be48(
const u64 val,
void *p)
132 __put_unaligned_be48(val, p);
135static inline u64 __get_unaligned_be48(
const u8 *p)
137 return (
u64)p[0] << 40 | (
u64)p[1] << 32 | (
u64)p[2] << 24 |
138 p[3] << 16 | p[4] << 8 | p[5];
141static inline u64 get_unaligned_be48(
const void *p)
143 return __get_unaligned_be48(p);
#define le64_to_cpu
Definition generic.h:87
#define cpu_to_le64
Definition generic.h:86
#define cpu_to_be16
Definition generic.h:96
#define le16_to_cpu
Definition generic.h:91
#define cpu_to_be64
Definition generic.h:92
#define cpu_to_le32
Definition generic.h:88
#define be64_to_cpu
Definition generic.h:93
#define be16_to_cpu
Definition generic.h:97
#define be32_to_cpu
Definition generic.h:95
#define le32_to_cpu
Definition generic.h:89
#define cpu_to_be32
Definition generic.h:94
#define cpu_to_le16
Definition generic.h:90
uint32_t __be32
Definition kernel.h:37
uint64_t u64
Definition kernel.h:17
uint64_t __be64
Definition kernel.h:38
uint16_t __le16
Definition kernel.h:33
uint8_t u8
Definition kernel.h:14
uint64_t __le64
Definition kernel.h:35
uint16_t __be16
Definition kernel.h:36
uint16_t u16
Definition kernel.h:15
uint32_t __le32
Definition kernel.h:34
uint32_t u32
Definition kernel.h:16
#define __put_unaligned_t(type, val, ptr)
Definition unaligned.h:38
#define __get_unaligned_t(type, ptr)
Definition unaligned.h:20