各位大虾!小弟进来想研读linux kernel ,请问谁能发一份给俺!谢谢! 我的邮箱是:[email]zihuazheng2005@163.com[/email]
by zihuazheng - Linux新手园地 - 2007-10-24 17:45:28 阅读(2897) 回复(1)
首先看源代码: startup_32: movl $0x10,%eax # 0x10是GDT中数据段选择符。 mov %ax,%ds lss init_stack,%esp call setup_idt # 设置IDT。先把256个中断门都填默认处理过程的描述符。 call setup_gdt 这汇编段代码在head.s中,左边部分是编译出的.o二进制代码,如下: 0: b8 10 00 00 00 mov $0x10,%eax 5: 8e d8 mov %eax,%ds 7...
LI_rw_blk.c 中line 78-84 for ( ; tmp->;next ; tmp=tmp->;next) if ((IN_ORDER(tmp,req) || !IN_ORDER(tmp,tmp->;next)) && IN_ORDER(req,tmp->;next)) break; req->;next=tmp->;next; tmp->;next=req; 其中: #define IN_ORDER(s1,s2) \ ((s1)->;cmd<(s2)->;cmd || (s1)->;cmd==(s2)->;cmd && \ ((s1)->;dev < (s2)->;dev || ((s1)->;dev == (s2)->;dev && \ (s1)->;sector < (s2)->;sector))) 不知道有没有...
LI_rw_blk.c 中line 78-84 for ( ; tmp->;next ; tmp=tmp->;next) if ((IN_ORDER(tmp,req) || !IN_ORDER(tmp,tmp->;next)) && IN_ORDER(req,tmp->;next)) break; req->;next=tmp->;next; tmp->;next=req; 其中: #define IN_ORDER(s1,s2) \ ((s1)->;cmd<(s2)->;cmd || (s1)->;cmd==(s2)->;cmd && \ ((s1)->;dev < (s2)->;dev || ((s1)->;dev == (s2)->;dev && \ (s1)->;sector < (s2)->;sector))) 不知道有没有...
上次看到do_exit中的free_page_tables(),因为其中牵扯到了内存管理中的分页和分段,看了两天终于明白了。今天继续看我们的init进程,就又回到free_page_tables。 free_page_tables(get_base(current->ldt[1]),get_limit(0x0f)); free_page_tables(get_base(current->ldt[2]),get_limit(0x17)); 首先看下他调用的参数。 1、get_base(current->ldt[1])和get_base(current->ldt[2]) A.get_base()函数的定义: #define get_base(ldt...
用掉了差不多两个月来所有空闲时间,感觉真是收获颇多,也为赵炯博士的深刻见地由衷地敬佩——有句话说教别人一分,自己必有十分,我作为一个学习者,一本书读下来都是勉勉强强囫囵吞枣,可以想象博士学识的深度了。回头想想自己,要花多少功夫才能达到一个精字呢?
用掉了差不多两个月来所有空闲时间,感觉真是收获颇多,也为赵炯博士的深刻见地由衷地敬佩——有句话说教别人一分,自己必有十分,我作为一个学习者,一本书读下来都是勉勉强强囫囵吞枣,可以想象博士学识的深度了。回头想想自己,要花多少功夫才能达到一个精字呢?