欢迎来到天天文库
浏览记录
ID:52720262
大小:45.00 KB
页数:11页
时间:2020-03-29
《系统软件分析报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、系统软件分析报告A:函数分析一.函数名:traps.c程序二.功能描述traps.c程序主要包括一些在处理异常故障<硬件中断)的底层代码asm.s中调用的相应C函数。用于显示出错位置和出错号等调试信息。其中的die(>通用函数用于在中断处理中显示详细的出错信息,而代码最后的初始化函数trap_init(>是在前面init/main.c中被调用,用于硬件异常处理中断向量<陷阱门)的初始化,并设置允许中断请求信号的到来。b5E2RGbCAP三.代码注释程序:linux/kernel/traps.c1/*2*
2、linux/kernel/traps.c3*4*(C>1991LinusTorvalds5*/67/*8*'Traps.c'handleshardwaretrapsandfaultsafterwehavesavedsomep1EanqFDPw9*statein'asm.s'.Currentlymostlyadebugging-aid,willbeextendedDXDiTa9E3d10*tomainlykilltheoffendingprocess(probablybygivingitasignal,R
3、TCrpUDGiT11*butpossiblybykillingitoutrightifnecessary>.5PCzVD7HxA12*//**在程序asm.s11/11中保存了一些状态后,本程序用来处理硬件陷阱和故障。目前主要用于调试目的,*以后将扩展用来杀死遭损坏的进程<主要是通过发送一个信号,但如果必要也会直接杀死)。*/13#include//字符串头文件。主要定义了一些有关字符串操作的嵌入函数。jLBHrnAILg1415#include//he
4、ad头文件,定义了段描述符的简单结构,和几个选择符常量。xHAQX74J0X16#include//调度程序头文件,定义了任务结构task_struct、初始任务0的数据,LDAYtRyKfE//还有一些有关描述符参数设置和获取的嵌入式汇编函数宏语句。17#include//内核头文件。含有一些内核常用函数的原形定义。Zzz6ZB2Ltk18#include//系统头文件。定义了设置或修改描述符/中断门等的嵌入式汇
5、编宏。dvzfvkwMI119#include//段操作头文件。定义了有关段寄存器操作的嵌入式汇编函数。rqyn14ZNXI20#include//输入/输出头文件。定义硬件端口输入/输出宏汇编语句。EmxvxOtOco21//以下语句定义了三个嵌入式汇编宏语句函数。有关嵌入式汇编的基本语法见列表后或参见附录。//取段seg中地址addr处的一个字节。//用圆括号括住的组合语句<花括号中的语句)可以作为表达式使用,其中最后的__res是其输出值。22#d
6、efineget_seg_byte(seg,addr>({23registerchar__res。24__asm__("push%%fs。mov%%ax,%%fs。movb%%fs:%2,%%al。pop%%fs"SixE2yXPq525:"=a"(__res>:""(seg>,"m"(*(addr>>>。6ewMyirQFL26__res。}>2711/11//取段seg中地址addr处的一个长字<4字节)。28#defineget_seg_long(seg,addr>({29registe
7、runsignedlong__res。30__asm__("push%%fs。mov%%ax,%%fs。movl%%fs:%2,%%eax。pop%%fs"kavU42VRUs31:"=a"(__res>:""(seg>,"m"(*(addr>>>。y6v3ALoS8932__res。}>33//取fs段寄存器的值<选择符)。34#define_fs(>({35registerunsignedshort__res。36__asm__("mov%%fs,%%ax":"=a"(__res>:>。
8、37__res。}>38//以下定义了一些函数原型。39intdo_exit(longcode>。//程序退出处理。(kernel/exit.c,102>M2ub6vSTnP4041voidpage_exception(void>。//页异常。实际是page_fault(mm/page.s,14>0YujCfmUCw42//以下定义了一些中断处理程序原型,代码在
此文档下载收益归作者所有