kernel学习
文章平均质量分 61
superlong100
这个作者很懒,什么都没留下…
展开
-
内核中 GNU 的 C 扩展
内核中 GNU 的 C 扩展承接前文(Clang 宏定义初探(二)),提到了一个 GNU 的 C 的扩展用法,最近总结了下主要会用到的有以下一些:结构体( struct )值的初始化这个在对网络包拼装,以及一些配置结构体的赋值有一定的帮助。 例如:typedef struct testnode{ int arg1; char arg2; ...}testnode_t;对这个结构体进原创 2016-03-15 22:33:00 · 436 阅读 · 0 评论 -
Clang 宏定义初探(二)
Clang 宏定义初探(二)本篇总结下这几天看的宏的一些看到的用法。1、参数粘结这是一个类似 shell 之类的脚本语言的特性,可以利用这个特性完成一些重复度比较高的编码的简化。 例如,对proc文件系统进行绑定的时候,需要在/proc/test/目录下,简历3个文件接口,test1、test2、test3. 可以这样写#define BIND(x) test##x->read_proc=tes原创 2016-03-11 01:39:14 · 1503 阅读 · 1 评论 -
kernel 中的红黑树
先放上标题,学习中~原创 2016-03-11 01:45:20 · 397 阅读 · 0 评论 -
Clang 宏定义初探(一)
Clang 宏定义初探(一)宏的定义方法是#define 那么在什么场景下需要用到宏呢?遇到一些重复的东西,简单的有 for(i = 0; i < n; i ++) 之类的,为了减少繁琐的编码,可能使用 c #define FO(i,N) for(i=0;i<N;i++) 为了增强可读性,比如说设置一个数组常亮大小,可以使用 c #define N 1001 宏看起来感觉很好用,但是潜藏了原创 2016-03-11 01:34:07 · 1544 阅读 · 0 评论 -
linux kernel 中的链表(一)
linux kernel 中的链表本文总结下最近学习的 kernel 中链表的使用和实现细节,本章主要是总结下链表部分提供的常用接口。kernel 数据结构风格linux kernel 在实现中,沉淀了不少的基础库,其中数据结构的封装和实现让人感觉非常的巧妙,而且用起来觉得非常的强大。 kernel 在实现一个通用的数据结构时,通常都是不带数据部分的,这点有些像C++了,他在给出一个数据结构时,只原创 2016-03-28 23:07:27 · 412 阅读 · 0 评论 -
linux kernel 中的链表(二)
linux kernel 中的链表(二)hlist 的定义前文提到的 linux/list.h ,这个文件中实际包含了一个双向链表和一个哈希头,哈希链表的定义如下:struct hlist_head { struct hlist_node *first;};struct hlist_node { struct hlist_node *next, **pprev;};hlist_h原创 2016-04-06 21:09:41 · 403 阅读 · 0 评论