摘要:
转载:http://www.cnblogs.com/wang_yb/archive/2013/04/16/3023892.html http://blog.csdn.net/tigerjibo/article/details/8450995 本文是在以上基础上转载而成,内核基础内容,就不必浪费时间重 阅读全文
摘要:
通过上面的分析,总结结构体对齐规则如下: 1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员的对齐按照#pragma pack指定的数值和这个数据成员自身长度中,比较小的那个进行。2、结构(或联合)的整体对齐规则: 阅读全文
摘要:
原文链接:http://www.catb.org/esr/structure-packing/ 谁应阅读本文 本文探讨如何通过手工重新打包C结构体声明,来减小内存空间占用。你需要掌握基本的C语言知识,以理解本文所讲述的内容。 如果你在内存容量受限的嵌入式系统中写程序,或者编写操作系统内核代码,就有必 阅读全文
摘要:
GCC支持用__attribute__为变量、类型、函数、标签指定特殊属性。这些不是编程语言标准里的内容,而属于编译器对语言的扩展。 本文介绍其中的两个属性:aligned和packed。 aligned aligned属性最常用在变量声明上。它的作用是告诉GCC,为变量分配内存时,要分配在对齐的内 阅读全文
摘要:
gcc 支持 aligned 和 packed 属性指定数据对齐,那么在了解对齐规则之前,需要解决第一个以为,我们为什么需要数据对齐?请看下图: 相信学过汇编的朋友都很熟悉这张图,这张图就是CPU与内存如何进行数据交换的模型,其中,左边蓝色的方框是CPU,右边绿色的方框是内存,内存上面的0~3是内存 阅读全文
摘要:
本文系作者原创, 欢迎大家转载! 转载请注明出处:netwalker.blog.chinaunix.net 尽管在大多数时候只需关心代码运行的正确性,但是很多时候需要在编译期间就发现这些潜在的致命错误。内核提供了两个有力的宏定义: 1 include/linux/kernel.h 2 /* Forc 阅读全文
摘要:
本文系作者原创, 欢迎大家转载! 转载请注明出处:netwalker.blog.chinaunix.net 1.FIELD_SIZEOF获取成员大小 FIELD_SIZEOF用来获取成员大小。它需要两个参数,第一个指定结构体的类型,第二个则指明成员的名字。 1 include/linux/kerne 阅读全文
摘要:
转载:http://blog.chinaunix.net/uid-20608849-id-3027972.html 由于内核中定义了很多复杂的数据结构,而它们的实例中的成员在作为函数参数传递的时,函数中可能需要对它的包含者中的其他的兄弟成员进行处理,这就需要只根据成员地址就可以获取整个结构体变量的地 阅读全文
摘要:
本文系作者原创, 欢迎大家转载! 转载请注明出处:netwalker.blog.chinaunix.net 通过位图提供的两种状态可以在非常节约内存的情况下表示开关变量,并且同类这类变量可以紧凑而高效的统一进行处理。有很多内核子系统都需要位图的支持,但是不同的情况又需要不同的位图个数,比如SMP系统 阅读全文
摘要:
转载:http://stackoverflow.com/questions/1010922/question-about-round-up-macro 以下内容转载自stackoverflow关于 roundup 系列函数的讨论,已经解释的很详细了,不需要添加新内容。 With the above 阅读全文