Linux内核中断/异常的注册(重要中断函数的查找方法,Linux 2.6.11)

105 篇文章 2 订阅
84 篇文章 6 订阅
Linux内核中断/异常的注册(重要中断函数的查找方法,Linux 2.6.11)


按照下面列出的方式,在trap_init()函数中,可以查找到重点的中断的处理函数有哪些


1. 缺页中断
start_kernel
-> trap_init //注册各种中断和异常
-> set_intr_gate(14,&page_fault); //注册缺页中断入口
-> ENTRY(page_fault) entry.S
-> pushl $do_page_fault //压栈,处理函数为do_page_fault
-> jmp error_code
-> call *%edi
-> do_page_fault
另:vma有VM_GROWSDOWN标志,表示它是一个堆栈区




2. Machine Check(i386)
start_kernel
-> trap_init //注册各种中断和异常
-> set_trap_gate(18,&machine_check); //注册MCE中断入口
-> ENTRY(machine_check) //entry.S
-> pushl machine_check_vector //压栈,处理函数为machine_check_vector指向的函数
-> jmp error_code
-> call *%edi
-> intel_machine_check或pentium_machine_check或k7_machine_check
-> intel_machine_check//记录错误信息后panic




3. Machine Check(x86_64)
start_kernel
-> trap_init //注册各种中断和异常
-> set_intr_gate_ist(18,&machine_check, MCE_STACK); //注册MCE中断入口
-> ENTRY(machine_check) //entry.S
-> paranoidentry do_machine_check
-> do_machine_check //进入MCE的处理流程






另外,通过force_sig_info(SIGBUS, &info, tsk);可以像指定的任务发送指定的信号


 Exception table 异常表地址:
 /* Exception table */
从  __start___ex_table  到  __stop___ex_table ;search_extable(EIP)会使用查找一个EIP是否是一个系统调用












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值