生如夏花

专注于工业物联网行业数据采集,嵌入式Linux系统裁剪,5G智慧网关软件开发等

内核数据结构之container_of

container_of宏用于根据结构体某个成员的地址来获取结构体自身的地址,获得结构体自身地址之后可以访问该结构其他字段,定义在<linux/kernel.h>中。

offsetof宏用于计算结构体成员到结构体自身地址之间的偏移,定义在<linux/stddef.h>中。

pragma pack预定义指令用于限制结构体成员的最大对齐数,结构体的对齐数取决于结构体成员的最大对齐数,结构体成员的对齐数取决于其自身大小和编译器设置的参数。

__attribute__((packed))__attribute__((aligned(n)))分别用于GCC不设置对齐和设置以n字节对齐。

数据结构

本章主要总结了数据结构的基本概念和定义。

数据结构三要素:逻辑结构、存储结构(物理结构)以及数据的运算(算法)。

数据结构的存储结构有四种,分别是顺序存储、链式存储、索引存储以及散列存储。本节主要介绍前两种。

数据的运算定义是基于逻辑结构的,而运算实现是基于存储结构的。同一逻辑结构的不同存储结构的运算的实现是不同的