治肾虚不含糖,专注内核性能优化二十年。 https://github.com/KnightKu
发布时间:2013-05-13 14:37:21
前几天写的一个demo,没几行代码,但是涵盖的东西比较多:撰写模块,创建内核线程,节点及cpu亲缘性设置,内核态获取时间,内核态分配大内存,时间处理等等...已备后用。点击(此处)折叠或打开#include <linux/module.h>#include <linux/init.h>#include <linux.........【阅读全文】
发布时间:2013-05-07 13:54:59
编译libconhash的时候出现了一些类型问题的警告:conhash_util.c: In function ‘conhash_get_vnodes’:conhash_util.c:31:2: warning: passing argument 1 of ‘util_rbtree_mid_travel’ discards ‘const’ qualifier from pointer target type [enabled by default]util_rbtree.h:112:6: note: expected ‘struct u.........【阅读全文】
发布时间:2013-03-15 17:35:14
vsyscall相较于普通的通过INT 80中断完成的系统调用要更快,因此在对于精度要求很高或者时延要求极低的系统调用适合用vsyscall来实现,但是有一个缺点是vsyscall的系统调用不一定有libc的包裹函数,因此使用上比较复杂,但是内核已经为我们映射好了这些vsyscall到线程的地址空间中。废话少说,看代码:点击(此处.........【阅读全文】
发布时间:2013-01-05 22:22:36
先看一个经典的面试题:#include <stdio.h>#define f(a,b) a##b#define g(a) #a#define h(a) g(a) int main(){ printf("%s\n", h(f(1,2))); printf("%s\n", g(f(1,2))); return 0;}输出是:12f(1,2)原因就是宏替换的原则问题:当一个宏参数被放进宏体时,通常(注意,有例外)这个宏参数会首先被全部展开。当展开后的宏参数被放进宏体时,预处理器对新展开的宏体进行第二次扫描,并继续展开。例如:#define P......【阅读全文】
发布时间:2012-12-26 12:57:46
1.最长递增子串(codepad.org已验证) 2.最长不连续公共子串(codepad.org已验证) 3.字符串的编辑距离(codepad.org已验证) 4.上下两个等长数组,可互换同下标元素,求上下两数组和可能的最小差值(codepad.org已验证) 5.连续子数组的最大和(codepad.org已验证) 代码都为简单实现版,均为递归算法,用作练手和思路记录。 1.最长递增子串 点击(此处)折叠或打开 #define MAX 10000 #include <stdio.h> #include &l......【阅读全文】