1.应用程序调用某一个系统调用函数(如write)。
2.write函数是在C库里面实现的,所以先跑到C库里面,在C库里面干的事情:
(1)把write对应的系统号保存到R7寄存器里面。
(2)调 用一个特殊指令swi(老版本的ARM)或者svc,该指令的意思是触发软中断。
3.接着CPU处理软中断,于是程序跳转到内核里面了,转到内核的什么地方呢,答案是跳到内核的异常向量表(异常向量表是内核初始化 时就建立好的,地址是0xffff0000)的vector_swi入口处(软中断对应的入口)。
4.剩下的就是异常向量表的vector_swi处理机制了:
内核从R7寄存器里面取出之前保存的系统调用号,以此号码为索引到系统调用表里面找对应的函数(sys_write),执行该函数。
5.返回(逆序原路返回)。
阅读(1634) | 评论(0) | 转发(0) |