随笔分类 - kernel
摘要:转载: http://www.cnblogs.com/haippy/archive/2012/09/02/2668099.html https://zh.wikipedia.org/zh/%E7%BA%A2%E9%BB%91%E6%A0%91 红黑树和avl树一样,是二叉平衡搜索树,目前内核中已经找
阅读全文
摘要:转载: http://blog.csdn.net/programmingring/article/details/37969745 https://zh.wikipedia.org/wiki/AVL%E6%A0%91 理解avl树,首先需要理解二叉搜索树: http://www.cnblogs.co
阅读全文
摘要:http://www.cnblogs.com/vamei/archive/2012/09/13/2682778.html
阅读全文
摘要:在阅读内核源码的时候,发现了条件表达式的奇怪用法,一时没有反应过来。下面的内容是从wiki转载而来,用作回顾和备忘. 转载链接:https://zh.wikipedia.org/wiki/%E6%9D%A1%E4%BB%B6%E8%BF%90%E7%AE%97%E7%AC%A6 用法 ?:的一般形式
阅读全文
摘要:转载: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
阅读全文
摘要:转载:http://blog.chinaunix.net/uid-20608849-id-3027953.html 转载:http://blog.chinaunix.net/uid-20608849-id-3027953.html 内核为了保持最大的兼容性和代码灵活性,不可能直接对某个数据类型定义它
阅读全文
摘要:VA函数(variable argument function),参数个数可变函数,又称可变参数函数。C/C++编程中,系统提供给编程人员的va函数很少。*printf()/*scanf()系列函数,用于输入输出时格式化字符串;exec*()系列函数,用于在程序中执行外部文件(main(int ar
阅读全文
摘要:typeof是gcc的扩展功能,比较简单,是用来取得参数类型,具体可参考gcc官网的解释. https://gcc.gnu.org/onlinedocs/gcc/Typeof.html 本文系作者原创, 欢迎大家转载! 转载请注明出处:netwalker.blog.chinaunix.net 由于L
阅读全文
摘要:1.通知链表简介 大多数内核子系统都是相互独立的,因此某个子系统可能对其它子系统产生的事件感兴趣。为了满足这个需求,也即是让某个子系统在发生某个事件时通知其它的子系统,Linux内核提供了通知链的机制。通知链表只能够在内核的子系统之间使用,而不能够在内核与用户空间之间进行事件的通知。 通知链表是一个
阅读全文
摘要:MAC地址是以太网二层使用的一个48bit(6字节十六进制数)的地址,用来标识设备位置。MAC地址分成两部分,前24位是组织唯一标识符(OUI, Organizationally unique identifier),后24位由厂商自行分配。 MAC地址有单播、组播、广播之分。单播地址(unicas
阅读全文
摘要:本文系作者原创, 欢迎大家转载! 转载请注明出处:netwalker.blog.chinaunix.net 内核在某些应用中,为了实现某种机制,比如分页,或者提高访问效率需要保证数据或者指针地址对齐到某个特定的整数值,比如连接代码脚本。这个值必须是2N。数据对齐,可以看做向上圆整的一种运算。 inc
阅读全文

浙公网安备 33010602011771号