摘要:
有时候内核代码因为各种原因,发生改变,如何查找更新理由? 1、首先git内核全部代码,不能用下载的压缩包,git可以包含全部信息。 2、查看下载的内核版本? 3、比如:我想查看 include/linux/kernel.h内的min3()函数是何时更改的? 4、首先:用grep命令,查看min3的行 阅读全文
摘要:
1、先上实现代码: __UNIQUE_ID(min1_)含义是制造一个唯一的标识符:__UNIQUE_ID_min1_0 __UNIQUE_ID(min2_)含义是制造一个唯一的标识符:__UNIQUE_ID_min2_1 2、为什么把x,y赋值给_min1和_min2然后返回_min1和_min2 阅读全文
摘要:
在《c标准库》实现assert.h中有一个语句: 其他都理解,就是为啥0还要用void强转一下? 经过一番查阅,原来:给0加void强转,主要的目的是防止该宏被当作右值使用。 比如: 如果assert(test)中test为真,返回(void)0,编译器就会因类型不匹配(int和哦void)而报错。 阅读全文
摘要:
1、手工写了一个程序验证void *指针加减运算移动几个字节: 输出: 由上可知,当一个int指针被强转为void型指针后,加1,由以前移动4个字节变为了移动1个字节。 结论:void *指针加减1,移动1个字节,这个在一些计算地址的宏和函数里会用到。 例如:container_of宏: 阅读全文
摘要:
最近在学习c语言宏编程,看到了container_of宏,深入学习了一天,做个笔记留念。 1、看一下书上写的container_of的版本: 2、举一个实例: 替换后的结果: 如果替换后的结果你还能看懂,说明你是真明白了,呵呵,有没有兴趣自己写一遍替换后的代码? 3、多余的不说了,网上有的是讲解的, 阅读全文