Linux kernel 相关笔记及转抄
来源:互联网 发布:无糖可乐 知乎 编辑:程序博客网 时间:2024/05/17 22:56
BootLoader
PPC中与调用C函数时,第一个参数用的是r3寄存器的值。
BootLoader
昨天读PPC的Head.S在源文件的带领下跳来跳去跳到了C文件,突然发现怎么“没有初始化内存就对就是直接付值了”,这样和传统不一样呀。
晚上睡觉前突然明白了一点,这些东西之前还有个BootLoader,这些工作是它在做的。
DoWhile(0)
转自http://my.donews.com/lerosua/
更详细参考Kernelnewbies
为啥内核里有这么多 do{ }while(0) 的宏啊?一开始我也好不明白。感觉不出用了会有什么效果。不过明白之后就知道它的好处了。好处就在于多语句的宏。
#define FOO(x)print(”arg is %sn”,x);do_something(x);
在代码中使用:
if(2==blah)FOO(blah);
预编译展开后:
if(2==blah)print(”arg is %sn”,blah);do_something(blah);
看到了吧,do_something函数已经脱离了if语句的控制了。这可不是我们想要的。使用do{}while(0);就万无一失了。
if (2== blah) do {printf(”arg is %sn”, blah);do_something(blah); } while (0);当然你也可以使用下面这种形式:#define exch(x,y) { int tmp; tmp=x; x=y; y=tmp; }但是它在if-else语句中会出现问题。如:if (x > y)exch(x,y); // Branch 1elsedo_something(); // Branch 2展开后:
if (x > y) { // Single-branch if-statement!!! int tmp; // The one and only branch consiststmp = x; // of the block.x = y;y = tmp;v}; // empty statementelse // ERROR!!! “parse error before else”do_something();看到了吧,else成了语法错误了。使用do{}while(0)就不会有这个问题了。
if (x > y)do {int tmp;tmp = x;x = y;y = tmp;} while(0);elsedo_something();嗯,现在明白之后,自己的代码也记得用啊!
- Linux kernel 相关笔记及转抄
- linux-kernel相关链接
- 【Linux kernel】进程相关
- linux kernel调试相关
- Java智能卡相关知识(转抄)
- Linux Kernel学习笔记
- Linux Kernel学习笔记
- Linux kernel 学习笔记
- Linux kernel移植笔记
- Linux内核参数(如kernel.shmmax)及Oracle相关参数调整(如SGA_MAX_SIZE)
- Linux内核参数(如kernel.shmmax)及Oracle相关参数调整(如SGA_MAX_SIZE)
- Linux内核参数(如kernel.shmmax)及Oracle相关参数调整(如SGA_MAX_SIZE)
- Linux系统中I/O调度的选择及磁盘相关的kernel参数调整
- Linux kernel 3.10内核源码分析--slab原理及相关代码
- Linux Kernel 技术手册笔记
- Linux Kernel 的学习笔记
- linux kernel学习笔记(一)
- Linux kernel panic学习笔记
- 项目经理是这样当的
- SHUTDOWN常用参数(转东转西)
- js模拟datagrid
- 项目经理经验谈
- SQL语句导入导出大全
- Linux kernel 相关笔记及转抄
- 项目经理是这样当的
- Linux下MPICH2集群系统安装手册(采用建立信任ssh)
- 写给即将步入大学,主修计算机专业的青年们的一封信
- 功能完整的分页程序 + 高效SQL查询语句
- vc中的release和debug版本的区别
- SQL注射总结
- 要备份222222
- WebLucene之安装习行录