linux-exception
文章平均质量分 80
coldsnow33
这个作者很懒,什么都没留下…
展开
-
ARM Linux异常处理之data abort
本文简要分析了ARM Linux的data abort异常处理过程,内核版本2.6.28,s3c6410平台。 1 异常向量与程序跳转 data abort是ARM体系定义的异常之一。异常发生时,ARM会自动跳转到异常向量表中,通过向量表中的跳转命令跳转到相应的异常处理中去。 ARM的异常处理向量表在entry-armv.S文件中: .globl __vectors转载 2014-03-04 21:23:19 · 4166 阅读 · 0 评论 -
linux运行模式
据说linux kernel只用到了arm的usr和svc两种模式;用户态位于usr,内核态位于svc。如果发生中断呢?难道不是出于irq模式?在中断异常的用户入口__irq_usr处加了打印,发现此时的mode是3,不是应该处于irq mode吗?怎么是svc呢?怎么切过去的?这还要从中断异常的入口说起。还记得中断向量表吗? /* * Interrupt dispatcher */ vecto原创 2013-10-25 18:15:15 · 1442 阅读 · 0 评论 -
中断二 C实现
init/main.c start_kernel()->early_irq_init()初始化中断描述符irq_desc,分为数组和基数树两种方式。 desc->irq_data.chip和desc->handle_irq start_kernel()->init_IRQ()-> void __init init_IRQ(void) { if (IS_ENABLED(CONFIG_OF)原创 2013-11-18 15:41:10 · 3278 阅读 · 1 评论 -
中断一 中断向量表跳来跳去跳到C
一 中断的处理流程 1 发生中断时,CPU执行异常向量vector_irq的代码。 2 在vertor_irq里面,最终会调用中断处理的总入口函数asm_do_IRQ。 3 asm_do_IRQ根据中断号调用irq_desc数组项中的handle_irq。 4 handle_irq会使用chip成员中的函数来设置硬件,比如清除中断、禁止中断、重新使能中断等。 5 handle_irq逐个原创 2013-10-23 19:20:51 · 4038 阅读 · 2 评论 -
arm系统调用
一 系统调用用户接口 1 int open(const char *filename, int oflag,mode_t mode); 打开file,方式为oflag("O_RDONLY"即0,"O_WRONLY"即1,"O_RDWR"即2),mode是仅当创建新文件才使用,一般可缺省不要。(返回值:成功0;失败-1) 2 int close(int file); 关闭一个打开的文件fi原创 2013-10-24 21:38:04 · 3795 阅读 · 0 评论