Linux内核
文章平均质量分 75
kernel_digger
kernel.digger@gmail.com
展开
-
Linux内核中crc16_table与crc32_table的计算
CRC: Cyclic redundancy check 循环冗余校验具体的计算原理与方法参考:http://en.wikipedia.org/wiki/Cyclic_redundancy_check内核中使用的crc16计算方法位于代码树/lib/crc16.c文件中crc32的计算方法位于代码树/lib/crc32.c文件中均采用了查表法其中原创 2011-12-04 23:03:35 · 3359 阅读 · 0 评论 -
Linux内核代码风格摘要
第一章:缩进制表符是8个字符避免3级以上的缩进在switch语句中switch与case对齐不要把多个语句放在一行里除了注释、文档和Kconfig之外,不要使用空格缩进不要在行尾留空格第二章:把长的行和字符串打散每一行的长度限制是80列第三章:大括号和空格的放置起始大括号放在行尾,结束大括号放在行首(if、switch原创 2011-12-10 22:17:10 · 727 阅读 · 0 评论 -
Linux内核中mktime()函数算法分析
内核中的mktime()函数位于kernel/time.c内该函数主要用于内核启动时,将CMOS中的 年-月-日 时:分:秒 信息转换为距离1970-01-01 00:00:00的秒数 具体定义如下: unsigned longmktime(const unsigned int year0, const unsigned int mon0, const unsi原创 2011-08-29 22:08:17 · 3206 阅读 · 2 评论 -
误用kfree()释放skb导致内存泄露
前段时间写的一个转发模块在现网应用后几台设备出现了不同程度的内存泄露大约4-15天设备内存耗尽泄露速度因业务压力和网络丢包情况而不同经历了N次的代码review和一个不眠之夜后终于找到了原因在一处释放skb的地方本应该使用kfree_skb()的,鬼使神差的被我敲成了kfree()教训很深刻遂仔细查看了相关函数以SLUB分配方式为例原创 2012-01-13 21:18:21 · 4666 阅读 · 0 评论 -
Linux内核学习——参考资料
本文章记录我在学习内核过程中使用的一些书籍及在网络上查阅的资源链接。因为在注释代码的过程中如果每一处都加上引用说明有点不切实际,而且很多地方我已记不清出处,所以在这里一并列出,以尊重原作者的劳动成果。所列书籍不分先后。书籍:Linux内核设计与实现深入理解LINUX内核深入Linux内核架构深入LINUX网络技术内幕精通Linux设备驱动程序原创 2011-07-09 21:24:22 · 1875 阅读 · 0 评论 -
Linux内核学习——中文注释计划
序幕:试想一下这样的情景。某天你到一座陌生的城市去旅行,买了一份城市的地图。当你进入这个城市的时候,期望着从地图上获取尽可能多的导航信息,可是你还是迷路了。因为城市在不断的建设,你手中的地图很可能已经过期了,地图上的古迹已经变成了摩天大楼;也可能地图上标的很明确,但是当你站在路口时还是不知该往哪个方向前进,因为路口没有相应的指示牌,或者路牌上使用的不是你掌握的语言。。。甚至是一些你永远也猜原创 2011-06-20 23:06:00 · 4019 阅读 · 6 评论 -
使用位与运算代替取模运算
使用构造哈希表的方法来代替简单的遍历查找是常用的算法优化根据关键字计算哈希值的时候通常使用取模运算计算最终的桶下标以防止桶的溢出在Linux内核中也使用了大量的哈希表进行查找起初内核中也是使用取模的方式计算桶下标不过现在内核中在实现哈希表的时候桶通常选择为2^n个使用按位与(2^n - 1)的方式计算桶下标最终的目的都是为了确定桶下标但是内核为什么选择位原创 2012-03-14 21:26:44 · 4313 阅读 · 1 评论 -
linux时钟浅析
时钟的作用尽管与CPU指令执行没有什么直接关系,时钟对于操作系统来说还是有着很重要的意义: 1、记录系统时间。很多应用程序需要知道日期和时间、由日期和时间构成的时间戳也会被打在文件上面、等等; 2、统计功能。如top之类的用户程序可以查看一段时间内的系统负载、以及各个进程占用CPU的时间、等等; 3、定时功能。很多用户程序会使用到定时器,比如sleep一段时间后做某件事情、比如给s转载 2012-08-21 21:44:11 · 2449 阅读 · 0 评论