Linux指针对齐 封装接口

这段代码展示了在Linux环境下,用于处理内存对齐和封裝接口的内联函数。通过定义结构体`__una_in6_addr`, `__una_u16`, `__una_u32`, `__una_u64`实现数据对齐,并提供`__get_unaligned_cpu*`和`__put_unaligned_cpu*`系列函数进行读写操作。此外,还包含了将数据转换为网络字节序的函数如`htons`, `htonl`, `htonll`,以及针对特定字节数的封装函数,如`put_unaligned_be16`, `put_unaligned_be32`, `put_unaligned_be64`。" 136413132,7337247,深度学习预训练数据的高效存储与管理,"['大数据', '人工智能', '语言模型', '架构设计', '数据管理']
摘要由CSDN通过智能技术生成

#include <netinet/in.h>
#include "sg_global.h"

struct __una_in6_addr { struct in6_addr x; } __packed;

struct __una_u16 { __u16 x; } __packed;
struct __una_u32 { __u32 x; } __packed;
struct __una_u64 { __u64 x; } __packed;

static inline __u16 __get_unaligned_cpu16(const void *p)
{
    const struct __una_u16 *ptr = (const struct __una_u16 *)p;
    return ptr->x;
}

static inline __u32 __get_unaligned_cpu32(const void *p)
{
    const struct __una_u32 *ptr = (const struct __una_u32 *)p;
    return ptr->x;
}

static inline __u64 __get_unaligned_cpu64(const void *p)
{
    const struct __una_u64 *ptr = (const struct __una_u64 *)p;
    return ptr->x;
}

static inline struct in6_addr __get_unaligned_in6_addr(const void *p)
{
    const struct __una_in6_addr *ptr = (const struct

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值