QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1202|回复: 3

【求】陷阱门初始化代码释疑

[复制链接]
发表于 2004-9-24 16:11:53 | 显示全部楼层 |阅读模式
是看0.11 Linux 源码分析中的 Trap_init()进去的调用了N多set_intr_gate();
----------------------------------------------------------
#define _set_gate(gate_addr,type,dpl,addr) \
__asm__ ("movw %%dx,%%ax\n\t" \
        "movw %0,%%dx\n\t" \
        "movl %%eax,%1\n\t" \
        "movl %%edx,%2" \
        : \
        : "i" ((short) (0x8000+(dpl<<13)+(type<<)), \
        "o" (*((char *) (gate_addr))), \
        "o" (*(4+(char *) (gate_addr))), \
        "d" ((char *) (addr)),"a" (0x00080000))

#define set_intr_gate(n,addr) \
        _set_gate(&idt[n],14,0,addr)
----------------------------------------------------------

>>请牛人详细解释一下_set_gate()里面的一些细节,以及地址数据的含意:比如dpl<<13,0x00080000
谢谢
发表于 2004-9-24 16:26:51 | 显示全部楼层
不知道是谁先开始散播一种迷信的,一有什么问题就是看source去,source解释一切。

呵呵,14换成2进制后就是i386里idt表项中type域的类型编码,意思是中断门。
dpl是在设置那个门的访问权限。

解释这个东西真的很没意思,它既不会有什么变更,开发内核程序时也用不到,随便一本讲解linux内核的书或者i386手册都会解释这个东西,为什么不先看看那些解释再看源码呢?
回复

使用道具 举报

发表于 2004-9-25 17:15:56 | 显示全部楼层
其实你对着中断门描述符的结构图,一一 比对就一目了然了
回复

使用道具 举报

 楼主| 发表于 2004-9-27 11:33:53 | 显示全部楼层
谢谢指点~~~~~kakuyou对于阅读源码有什么建议吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-16 06:53 , Processed in 0.040183 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表