我的一些读源码的经验

上传人:枫** 文档编号:568810001 上传时间:2024-07-27 格式:PPT 页数:9 大小:190.50KB
返回 下载 相关 举报
我的一些读源码的经验_第1页
第1页 / 共9页
我的一些读源码的经验_第2页
第2页 / 共9页
我的一些读源码的经验_第3页
第3页 / 共9页
我的一些读源码的经验_第4页
第4页 / 共9页
我的一些读源码的经验_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《我的一些读源码的经验》由会员分享,可在线阅读,更多相关《我的一些读源码的经验(9页珍藏版)》请在金锄头文库上搜索。

1、我的一些读源码的经验1 1谁看了潘爱民老师的PPT?2如何开始工具WindowsWindows下下Source InsightSource InsightLinuxLinux下下Source NavigatorSource Navigator参考书LinuxLinux情景分析、情景分析、Understanding Linux Understanding Linux KernelKernel文档Make in SMTH,googleMake in SMTH,google3如何开始(1)Build a source insight project4如何开始(2)尽可能在源码目录中找到一些文档的Ma

2、kefileMakefile:能知道程序的关联关系:能知道程序的关联关系Document/Document/:能找到一些源码的说明,比如目录:能找到一些源码的说明,比如目录树树例子:LinuxLinux源码目录下源码目录下/Documentation/Documentation00-INDEX:00-INDEX:说明了目录树结构说明了目录树结构Makefile:Makefile:CORE_FILESCORE_FILES=kernel/kernel.o mm/mm.o fs/fs.o =kernel/kernel.o mm/mm.o fs/fs.o ipc/ipc.oipc/ipc.o5怎么读K

3、eep in mindKeep in mind 大的方面,关注代码的结构大的方面,关注代码的结构 小的方面,关注小的方面,关注核心的功能模块核心的功能模块是怎么实现的是怎么实现的方法方法 猜猜函数的名字,注释函数的名字,注释 跳跳读不懂的可以先跳过读不懂的可以先跳过可以忽略的就忽略过去可以忽略的就忽略过去 记记边读边记:边读边记:Microsoft OneNoteMicrosoft OneNote遇到问题怎么办?遇到问题怎么办?6例子void _init trap_init(void)void _init trap_init(void) #ifdef CONFIG_EISA#ifdef CON

4、FIG_EISAif (isa_readl(0x0FFFD9) = E+(I8)+(S16)+(A24)if (isa_readl(0x0FFFD9) = E+(I8)+(S16)+(A24)EISA_bus = 1;EISA_bus = 1;#endif#endif set_trap_gate(0,÷_error);set_trap_gate(0,÷_error); set_intr_gate(2,&nmi);set_intr_gate(2,&nmi);set_system_gate(3,&int3);set_system_gate(3,&int3); /* int3

5、-5 can be called from all */* int3-5 can be called from all */ set_system_gate(SYSCALL_VECTOR,&system_call);set_system_gate(SYSCALL_VECTOR,&system_call); /*/* * default LDT is a single-entry callgate to lcall7 for iBCS * default LDT is a single-entry callgate to lcall7 for iBCS * and a callgate to l

6、call27 for Solaris/x86 binaries * and a callgate to lcall27 for Solaris/x86 binaries */ */set_call_gate(&default_ldt0,lcall7);set_call_gate(&default_ldt0,lcall7);set_call_gate(&default_ldt4,lcall27);set_call_gate(&default_ldt4,lcall27);#ifdef CONFIG_X86_VISWS_APIC#ifdef CONFIG_X86_VISWS_APICsuperio_

7、init();superio_init();lithium_init();lithium_init();cobalt_init();cobalt_init();#endif#endif 略:不是我重点关心的内容。像这种条件编译在代码中有很多,要懂得取舍猜:set_xxx_gate()应该是设置一些门大的结构:该函数就是初始化陷阱,应该是在初始化过程中被调用。明白了这个函数的功能,我就可以考虑细不细读了不关心,可以略过笔记:该函数的功能是。,主要是通过调用set_xxx_gate()设置一些硬件门一定要记,以避免以后一时想不起来的时候查阅7遇到问题怎么办?充分利用sourceInsight的功能先放一放,寻找灵感知之为知之不知google知找牛人请教8Others法无定法,实践出真知No pains,No gains9

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号