- 0
- 0
- 约2.03万字
- 约 24页
- 2021-11-01 发布于浙江
- 举报
目录
TOC \o 1-3 \h \z \u Linux中断处理体系结构分析(一) 1
异常,就是可以打断CPU正常运行流程的一些事情,比如外部中断、未定义指令、试图修改只读的数据、执行swi指令(Software Interrupt Instruction ,软件中断指令)等。当这些事情发生时,CPU暂停当前的程序,先处理异常事件,然后再继续执行被中断的程序。操作系统中经常通过异常来完成一些特定的功能。其中的中断也占有很大的一部分。例如下面的这几种情况: 1
当CPU执行未定义的机器指令时将触发“未定义指令异常”,操作系统可以利用这个特点使用一些自定义的机器指令,它们在异常处理函数中实现。 1
Linux中断处理体系结构分析(一)
异常,就是可以打断CPU正常运行流程的一些事情,比如外部中断、未定义指令、试图修改只读的数据、执行swi指令(Software Interrupt Instruction ,软件中断指令)等。当这些事情发生时,CPU暂停当前的程序,先处理异常事件,然后再继续执行被中断的程序。操作系统中经常通过异常来完成一些特定的功能。其中的中断也占有很大的一部分。例如下面的这几种情况:
当CPU执行未定义的机器指令时将触发“未定义指令异常”,操作系统可以利用这个特点使用一些自定义的机器指令,它们在异常处理函数中实现。
当用户程序试图读写的数据或执行的指令不在内存中时,也会触发一个“数据访问中止异常”或“指令预取中止异常”,在异常处理函数中将这些数据或指令读入内存,然后重新执行被中断的程序,这样可以节省内存,还使得操作系统可以运行这类程序,它们使用的内存远大于实际的物理内存。
在原先的内核版本中,内核在start_kernel函数(源码在init/main.c中)中调用trap_init、init_IRQ两个函数来设置异常和处理函数。在Linux的内核版本中(也许在之前的版本就有变化),trap_init函数的内容发生了变化,在trap.c中,
void __init trap_init(void){return;}
在这个文件中还有一个函数,
void __init early_trap_init(void){unsigned long vectors = CONFIG_VECTORS_BASE;extern char __stubs_start[], __stubs_end[];extern char __vectors_start[], __vectors_end[];extern char __kuser_helper_start[], __kuser_helper_end[];int kuser_sz = __kuser_helper_end - __kuser_helper_start;
memcpy((void *)vectors, __vectors_start, __vectors_end - __vectors_start);memcpy((void *)vectors + 0x200, __stubs_start, __stubs_end - __stubs_start);memcpy((void *)vectors + 0x1000 - kuser_sz, __kuser_helper_start, kuser_sz);memcpy((void *)KERN_SIGRETURN_CODE, sigreturn_codes,sizeof(sigreturn_codes));memcpy((void *)KERN_RESTART_CODE, syscall_restart_code,sizeof(syscall_restart_code));flush_icache_range(vectors, vectors + PAGE_SIZE);modify_domain(DOMAIN_USER, DOMAIN_CLIENT);}
这个函数才是真正要用到的,在init/mian.c中可以找到,调用了trap_init(),而early_trap_init()函数在setup_arch(command_line)函数中调用。在Linux/ arch/ arm/ kernel/ setup.c
698 void __init setup_arch(char **cmdline_p)699 {700 struct tag *tags = (struct tag *)init_tags;701 struct machine_desc *mdesc;702 char *from = default_command_line;
最近下载
- 第2章-逻辑代数基础教材课件.pptx VIP
- (2026年春新版)人教版一年级语文下册全册教案.docx
- 阿法拉伐分油机中文说明Instruction book1.pdf VIP
- 项目度量分析报告.pptx VIP
- 《动车组车辆设计技术》课件 5.转向架零部件设计.pdf
- 2025美国心脏协会和美国儿科学会新生儿复苏、儿童基础生命支持和儿童高级生命支持指南更新解读.pptx VIP
- 流浪未成年人救助保护中心建设标准(附条文说明).docx VIP
- 2025至2030中国半导体晶圆抛光研磨设备行业细分市场及应用领域与趋势展望研究报告.docx VIP
- 深度解析(2026)《GB 13495.1-2015消防安全标志 第1部分:标志》.pptx VIP
- 左权“风光水火储氢”多能互补一体化综合能源基地三期发电项目(50MW 风电)风电工程环评报告书.pdf
原创力文档

文档评论(0)