linux/tools/include/linux/unaligned/packed_struct.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef _LINUX_UNALIGNED_PACKED_STRUCT_H
   3#define _LINUX_UNALIGNED_PACKED_STRUCT_H
   4
   5#include <linux/kernel.h>
   6
   7struct __una_u16 { u16 x; } __packed;
   8struct __una_u32 { u32 x; } __packed;
   9struct __una_u64 { u64 x; } __packed;
  10
  11static inline u16 __get_unaligned_cpu16(const void *p)
  12{
  13        const struct __una_u16 *ptr = (const struct __una_u16 *)p;
  14        return ptr->x;
  15}
  16
  17static inline u32 __get_unaligned_cpu32(const void *p)
  18{
  19        const struct __una_u32 *ptr = (const struct __una_u32 *)p;
  20        return ptr->x;
  21}
  22
  23static inline u64 __get_unaligned_cpu64(const void *p)
  24{
  25        const struct __una_u64 *ptr = (const struct __una_u64 *)p;
  26        return ptr->x;
  27}
  28
  29static inline void __put_unaligned_cpu16(u16 val, void *p)
  30{
  31        struct __una_u16 *ptr = (struct __una_u16 *)p;
  32        ptr->x = val;
  33}
  34
  35static inline void __put_unaligned_cpu32(u32 val, void *p)
  36{
  37        struct __una_u32 *ptr = (struct __una_u32 *)p;
  38        ptr->x = val;
  39}
  40
  41static inline void __put_unaligned_cpu64(u64 val, void *p)
  42{
  43        struct __una_u64 *ptr = (struct __una_u64 *)p;
  44        ptr->x = val;
  45}
  46
  47#endif /* _LINUX_UNALIGNED_PACKED_STRUCT_H */
  48