Linux内核完全剖析---math_emulate.c程序
发布:smiling 来源: PHP粉丝网 添加日期:2014-03-05 22:10:54 浏览: 评论:0
math_emulate.c程序中的所有函数可分为3部分:第一类是设备不存在异常处理程序接口函数math_emulate(),只有这一个函数;第二类是浮点指令仿真处理主函数do_emu(),也只有一个函数;另外所有函数都是仿真运算辅助类函数,包括其余几个C语言程序中的函数。
在一台不包含80387协处理器芯片的PC中,如果内核初始化时在CR0中设置了仿真标志EM = 1,那么当CPU遇到一条浮点指令时就会引起CPU产生异常中断int 7,并且在该中断处理过程中调用本程序中第476行处的math_emulate(long ___false)函数。
在math_emulate()函数中,若判断出当前进程还没有使用过仿真的协处理运算时就会对仿真的80387控制字、状态字和特征字(Tag Word)进行初始化操作,设置控制字中所有6种协处理器异常屏蔽位并复位状态字和特征字,然后调用仿真处理主函数do_emu(),使用的参数是作为如下info结构的中断处理过程中调用math_emulate()函数的返回地址指针,info结构实际上就是栈中自从CPU产生中断int7后逐渐入栈的一些数据构成的一个结构,因此它与系统调用时内核栈中数据的分布情况基本相同,参见include/linux/math_emu.h文件第 11 行和kernel/sys_call.s开始部分。
Tags: Linux内核 math_emulate c
相关文章
- ·开源社区正挑战Linux内核开发的极限速度(2014-02-28)
- ·Linux内核补丁AMD旁路转换缓冲(TLB)错误(2014-03-05)
- ·Linux内核完全剖析---头文件(1)(2014-03-05)
- ·Linux内核完全剖析---数学协处理器(1)(2014-03-05)
- ·Linux内核开发者的两则实用技巧(2014-03-05)
- ·定制Linux内核 发挥Linux潜能(2014-03-08)
- ·Linux内核的同步机制(2014-03-08)
- ·linux内核强制访问控制-Apparmor(2014-10-17)
- ·简单理解linux内核的链表教程(2015-04-20)
- ·使用SCons轻松建造自己的程序(1)(2013-11-14)
- ·使用SCons轻松建造自己的程序(2014-02-28)
- ·详解Unix和Linux操作系统中Cron的用法(2014-02-28)
- ·教你使用Linux系统的Shell脚本维护Oracle(2014-02-28)
- ·嵌入式基础:ARM下GCC交叉编译器的制作(2014-02-28)
- ·分析评价Linux和WinCE的优缺点(2014-03-05)
- ·Linux系统下的C语言开发都需要学些什么(2014-03-06)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)