青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

那誰的技術博客

感興趣領域:高性能服務器編程,存儲,算法,Linux內核
隨筆 - 210, 文章 - 0, 評論 - 1183, 引用 - 0
數據加載中……

linux內核V2.6.11學習筆記(5)--異常處理

這里以除0錯誤這個異常來講解異常處理的機制.

1) 注冊異常處理函數
在系統初始化的時候,調用trap_init函數注冊異常處理函數.
這個函數里調用set_trap_gate(0,&divide_error);注冊除0錯誤的異常由divide_error函數處理,而這個錯誤的中斷向量號是0.

2) 當異常被觸發時,調用原先注冊的divide_error函數.
這個函數的實現的Entry.S文件中:
ENTRY(divide_error)
    pushl $
0            # no error code
    pushl $do_divide_error
    ALIGN
error_code:
    pushl 
%ds
    pushl 
%eax
    xorl 
%eax, %eax
    pushl 
%ebp
    pushl 
%edi
    pushl 
%esi
    pushl 
%edx
    decl 
%eax            # eax = -1
    pushl 
%ecx
    pushl 
%ebx
    cld
    movl 
%es, %ecx
    movl ES(
%esp), %edi        # get the function address
    movl ORIG_EAX(
%esp), %edx    # get the error code
    movl 
%eax, ORIG_EAX(%esp)
    movl 
%ecx, ES(%esp)
    movl $(__USER_DS), 
%ecx
    movl 
%ecx, %ds
    movl 
%ecx, %es
    movl 
%esp,%eax            # pt_regs pointer
    call 
*%edi
    jmp ret_from_exception
首先,它將真正的處理函數do_divide_error壓入棧中,其實,對于每個異常而言,真正的處理函數都是名為"do_注冊函數"的函數.
緊跟著,將一些需要保存的寄存器也壓入棧中.
接著,由于處理函數的地址已經在edi寄存器中了,調用call *%edi調用處理函數.
當處理完畢之后,調用函數ret_from_exception從異常處理中返回.

上面是大致的流程,下面詳細看看do_divide_error函數做了什么.
這個函數的實現在文件trap.c中:
#define DO_VM86_ERROR_INFO(trapnr, signr, str, name, sicode, siaddr) \
fastcall 
void do_##name(struct pt_regs * regs, long error_code) \
{ \
    siginfo_t info; \
    info.si_signo 
= signr; \
    info.si_errno 
= 0; \
    info.si_code 
= sicode; \
    info.si_addr 
= (void __user *)siaddr; \
    
if (notify_die(DIE_TRAP, str, regs, error_code, trapnr, signr) \
                        
== NOTIFY_STOP) \
        
return; \
    do_trap(trapnr, signr, str, 
1, regs, error_code, &info); \
}

DO_VM86_ERROR_INFO( 
0, SIGFPE,  "divide error", divide_error, FPE_INTDIV, regs->eip)
可以看到,最終這個函數會走到do_trap函數中,接著看這個函數中的代碼片段:
    trap_signal: {
        
struct task_struct *tsk = current;
        tsk
->thread.error_code = error_code;
        tsk
->thread.trap_no = trapnr;
        
if (info)
            force_sig_info(signr, info, tsk);
        
else
            force_sig(signr, tsk);
        
return;
    }
首先得到當前進程的指針,在進程結構體的thread結構體中保存error_code和trapnr,也就是錯誤號和中斷向量.
接著調用force_sig_info函數,可以跟進這個函數,其實最終要做的就是將該異常以信號量的形式加入到當前進程的信號集合中,也就是給當前進程發送信號,告訴進程有異常被觸發了,需要處理.以除0錯誤來看,這個信號量是SIGFPE.



posted on 2009-04-29 21:45 那誰 閱讀(3262) 評論(0)  編輯 收藏 引用 所屬分類: linux kernel

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品久久久久久久久久免费看| 一区二区免费在线播放| 一本色道久久综合亚洲精品高清| 亚洲国产片色| 日韩亚洲视频| 亚洲欧美激情四射在线日 | 久久米奇亚洲| 嫩草成人www欧美| 亚洲国产乱码最新视频| 亚洲人成在线观看| 亚洲欧美www| 榴莲视频成人在线观看| 欧美日韩一二区| 国产一区二区三区久久| 亚洲三级视频| 午夜精品久久久久久久男人的天堂| 久久国产精彩视频| 最新国产成人av网站网址麻豆| 一区二区三区欧美视频| 欧美在线综合视频| 欧美特黄一区| 亚洲第一狼人社区| 亚洲免费在线观看| 欧美国产在线视频| 先锋资源久久| 欧美丝袜一区二区| 亚洲激情在线播放| 欧美有码在线视频| 91久久精品国产91久久性色| 性做久久久久久免费观看欧美| 欧美成人亚洲成人| 狠狠色狠狠色综合人人| 亚洲男人的天堂在线| 欧美国产在线观看| 久久精品中文| 国产深夜精品| 亚洲免费伊人电影在线观看av| 欧美成人69av| 久久国产免费看| 国产欧美精品| 先锋资源久久| 亚洲午夜一区| 国产精品国产三级国产专区53| av72成人在线| 亚洲电影在线播放| 久久精品国产99精品国产亚洲性色| 欧美另类一区| 亚洲毛片一区| 亚洲国产一区在线观看| 老司机一区二区三区| 国产综合18久久久久久| 久久爱www久久做| 亚洲午夜在线观看| 国产精品色一区二区三区| 亚洲少妇在线| 亚洲私人影吧| 国产精品嫩草99a| 亚洲欧美日韩在线综合| 亚洲私人影吧| 国产精品视频久久| 欧美在线你懂的| 欧美与黑人午夜性猛交久久久| 国产欧美在线| 美女诱惑一区| 欧美成人dvd在线视频| 日韩亚洲欧美中文三级| 日韩一级网站| 国产麻豆视频精品| 久久视频一区| 麻豆精品在线视频| 一本一本久久a久久精品牛牛影视| 亚洲人成在线观看网站高清| 欧美日韩综合视频| 久久se精品一区二区| 久久免费视频在线| 一区二区三区高清不卡| 一本色道久久加勒比88综合| 国产精品一区视频网站| 久久午夜电影| 欧美日韩网站| 久久久亚洲国产美女国产盗摄| 裸体一区二区| 亚洲欧美国产高清va在线播| 亚洲女同精品视频| 在线精品高清中文字幕| 亚洲精品乱码久久久久久蜜桃91| 欧美性jizz18性欧美| 久久网站免费| 欧美少妇一区| 欧美成年人视频| 国产精品美女视频网站| 每日更新成人在线视频| 欧美日韩国产综合视频在线观看| 午夜精品久久久久久久久久久久久| 香蕉久久夜色精品| 日韩视频不卡中文| 欧美一区二区三区男人的天堂 | 久久亚洲私人国产精品va媚药| 女生裸体视频一区二区三区 | 欧美aⅴ一区二区三区视频| 欧美日本国产一区| 在线不卡欧美| 亚洲欧美日韩精品一区二区| 欧美在线观看日本一区| 一区二区三区福利| 久久蜜臀精品av| 亚洲欧美一区二区原创| 欧美二区在线| 狂野欧美性猛交xxxx巴西| 欧美日韩一区三区| 亚洲二区在线视频| 国模一区二区三区| 亚洲午夜久久久| 在线视频你懂得一区| 久久视频在线视频| 久久精品主播| 国产精品一区在线观看你懂的 | 久久久久在线| 久久不射电影网| 欧美性猛交xxxx乱大交蜜桃| 亚洲黄色一区| 亚洲日本理论电影| 蜜臀av一级做a爰片久久| 麻豆成人av| 伊人久久大香线蕉综合热线| 午夜欧美视频| 性欧美大战久久久久久久久| 国产精品www994| 亚洲精品中文字幕在线| 日韩一级网站| 欧美精品在线视频观看| 亚洲欧洲在线视频| 9人人澡人人爽人人精品| 欧美激情久久久久| 亚洲区在线播放| 日韩一区二区精品在线观看| 欧美成人午夜剧场免费观看| 亚洲第一精品夜夜躁人人爽| 亚洲黄色视屏| 欧美精品www| 日韩写真视频在线观看| 亚洲一区二区三区四区五区黄| 欧美少妇一区二区| 亚洲欧美视频在线观看视频| 久久久精品国产一区二区三区| 国产亚洲va综合人人澡精品| 欧美诱惑福利视频| 免费毛片一区二区三区久久久| 尤物yw午夜国产精品视频明星| 久久久另类综合| 欧美激情四色| 亚洲永久免费av| 国产一区在线播放| 久久在线视频| 亚洲精品久久在线| 午夜精品亚洲| 1204国产成人精品视频| 欧美精品一区二区蜜臀亚洲| 夜夜嗨av一区二区三区| 欧美一区二区三区四区高清| 国内一区二区在线视频观看| 免费h精品视频在线播放| 亚洲精品欧美日韩| 欧美在线一二三| 亚洲破处大片| 国产老肥熟一区二区三区| 久久久91精品国产一区二区精品| 亚洲高清精品中出| 性欧美video另类hd性玩具| 伊人久久婷婷色综合98网| 嫩草影视亚洲| 国产欧美日韩精品专区| 久久久噜噜噜久久狠狠50岁| 亚洲欧洲日本一区二区三区| 亚洲视频一区在线观看| 国内精品一区二区三区| 欧美乱人伦中文字幕在线| 欧美一区二区免费| 99亚洲伊人久久精品影院红桃| 久久中文在线| 亚洲欧美日本国产专区一区| 亚洲欧洲一区二区三区久久| 国产精品久久久久免费a∨| 久久女同精品一区二区| 中国av一区| 亚洲国产天堂久久综合| 久久精品一本| 香蕉久久夜色精品国产| 日韩西西人体444www| 在线播放一区| 好吊妞这里只有精品| 国产欧美日本| 欧美视频在线视频| 欧美国产日本高清在线| 久久国产手机看片| 午夜精品视频网站| 亚洲一区二区三区久久| 日韩亚洲视频| 亚洲精品综合久久中文字幕| 亚洲大片一区二区三区|