在阅读中断的代码遇到点问题,麻烦大虾解答

wyfwx 2011-09-01 02:52:17
1、
#define BUILD_IRQ(nr) \
asmlinkage void IRQ_NAME(nr); \
__asm__( \
"\n.p2align\n" \
"IRQ" #nr "_interrupt:\n\t" \
"push $" #nr "-256 ; " \
"jmp common_interrupt");

common_interrupt我搜索了源码,没有找到?

2、
set_trap_gate(0,÷_error);
set_intr_gate(1,&debug);
set_intr_gate(2,&nmi);
set_system_intr_gate(3, &int3); /* int3-5 can be called from all */
set_system_gate(4,&overflow);
set_system_gate(5,&bounds);
set_trap_gate(6,&invalid_op);
set_trap_gate(7,&device_not_available);
set_task_gate(8,GDT_ENTRY_DOUBLEFAULT_TSS);
set_trap_gate(9,&coprocessor_segment_overrun);
set_trap_gate(10,&invalid_TSS);
set_trap_gate(11,&segment_not_present);
set_trap_gate(12,&stack_segment);
set_trap_gate(13,&general_protection);
set_intr_gate(14,&page_fault);
set_trap_gate(15,&spurious_interrupt_bug);
set_trap_gate(16,&coprocessor_error);
set_trap_gate(17,&alignment_check);
set_trap_gate(18,&machine_check);
set_trap_gate(19,&simd_coprocessor_error);

里面的中断处理函数我也没有搜索到具体的函数实现。


不知道是否我的代码不全,他们的具体实现和定义在哪呢? 俺用的是si看的代码
...全文
48 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyfwx 2011-09-01
  • 打赏
  • 举报
回复
我的arch\x86_64下竟然没有kvm目录
帅得不敢出门 2011-09-01
  • 打赏
  • 举报
回复
arch/x86/mm/fault.c

dotraplinkage void __kprobes
do_page_fault(struct pt_regs *regs, unsigned long error_code)
.........
帅得不敢出门 2011-09-01
  • 打赏
  • 举报
回复
arch/x86/kvm/paging_tmpl.h

static int FNAME(page_fault)(struct kvm_vcpu *vcpu, gva_t addr,
u32 error_code)
............
wyfwx 2011-09-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zmlovelx 的回复:]
linux-2.6.36/arch/x86/include/asm/desc.h
/*
* This routine sets up an interrupt gate at directory privilege level 3.
*/
static inline void set_system_intr_gate(unsigned int n, void *addr)
{
BU……
[/Quote]

我没说清楚,是divide_error、page_fault等我没有搜索到。网上有说do_page_fault是缺叶的处理函数,那么page_fault和do_page_fault是怎么关联的
帅得不敢出门 2011-09-01
  • 打赏
  • 举报
回复
linux-2.6.36/arch/x86/kernel/entry_32.S

common_interrupt:
addl $-0x80,(%esp) /* Adjust vector into the [-256,-1] range */
SAVE_ALL
TRACE_IRQS_OFF
movl %esp,%eax
call do_IRQ
jmp ret_from_intr
ENDPROC(common_interrupt)
CFI_ENDPROC

帅得不敢出门 2011-09-01
  • 打赏
  • 举报
回复
linux-2.6.36/arch/x86/include/asm/desc.h
/*
* This routine sets up an interrupt gate at directory privilege level 3.
*/
static inline void set_system_intr_gate(unsigned int n, void *addr)
{
BUG_ON((unsigned)n > 0xFF);
_set_gate(n, GATE_INTERRUPT, addr, 0x3, 0, __KERNEL_CS);
}
...........
........
wyfwx 2011-09-01
  • 打赏
  • 举报
回复
v2.6.10

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧