亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? 2.html

?? 介紹linux下文件和設(shè)備編程
?? HTML
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
&nbsp;&nbsp; |SAVE_ALL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |do_IRQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; wrapper routines<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |handle_IRQ_event&nbsp; ---<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |handler() -&gt; timer_interrupt&nbsp; // registered IRQ 0 handler<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |do_timer_interrupt<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |do_timer<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |jiffies++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |update_process_times<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |if (--counter &lt;= 0) { // if time slice ended then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |counter = 0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp; reset counter<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |need_resched = 1;&nbsp;&nbsp; //&nbsp;&nbsp; prepare to reschedule<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |do_softirq<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |while (need_resched) { // if necessary<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |schedule&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp; reschedule<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |handle_softirq<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |}<br>&nbsp;&nbsp; |RESTORE_ALL<p>&middot;IRQ0x00_interrupt, SAVE_ALL [include/asm/hw_irq.h]<br>&middot;do_IRQ, handle_IRQ_event [arch/i386/kernel/irq.c]<br>&middot;timer_interrupt, do_timer_interrupt [arch/i386/kernel/time.c]<br>&middot;do_timer, update_process_times [kernel/timer.c]<br>&middot;do_softirq [kernel/soft_irq.c]<br>&middot;RESTORE_ALL, while loop [arch/i386/kernel/entry.S]<p>&nbsp;&nbsp;&nbsp; 系統(tǒng)啟動(dòng)核心時(shí),調(diào)用start_kernal()繼續(xù)各方面的初始化,在這之前,各種中斷都被禁止,只有在完成必要的初始化后,直到執(zhí)行完Kmalloc_init()后,才允許中斷(init\main.c)。與時(shí)鐘中斷有關(guān)的部分初始化如下:<p>&nbsp;&nbsp;&nbsp; 調(diào)用trap_init()設(shè)置各種trap入口,如system_call、GDT entry、LDT entry、call gate等。其中0~17為各種錯(cuò)誤入口,18~47保留。<p>&nbsp;&nbsp;&nbsp; 調(diào)用init_IRQ()函數(shù)設(shè)置核心系統(tǒng)的時(shí)鐘周期為10ms,即100HZ,它是以后按照輪轉(zhuǎn)法進(jìn)行CPU調(diào)度時(shí)所依照的基準(zhǔn)時(shí)鐘周期。每10ms產(chǎn)生的時(shí)鐘中斷信號(hào)直接輸入到第一塊8259A的INT 0(即irq0)。初始化中斷矢量表中從0x20起的17個(gè)中斷矢量,用bad_IRQ#_interrupt函數(shù)的地址(#為中斷號(hào))填寫(xiě)。<p>&nbsp;&nbsp;&nbsp; 調(diào)用sched_init()函數(shù),設(shè)置啟動(dòng)第一個(gè)進(jìn)程init_task。設(shè)置用于管理bottom_half機(jī)制的數(shù)據(jù)結(jié)構(gòu)bh_base[],規(guī)定三類事件的中斷處理函數(shù),即時(shí)鐘TIMER_BH、設(shè)備TQUEUE_BH和IMMEDIATE_BH。<p>&nbsp;&nbsp;&nbsp; 調(diào)用time_init()函數(shù),首先讀取當(dāng)時(shí)的CMOS時(shí)間,最后調(diào)用setup_x86_irq(0,&amp;irq0)函數(shù),把irq0掛到irq_action[0]隊(duì)列的后面,并把中斷矢量表中第0x20項(xiàng),即timer中斷對(duì)應(yīng)的中斷矢量改為IRQ0_interrupt函數(shù)的地址,在irq0中,指定時(shí)間中斷服務(wù)程序是timer_interrupt,<br>&nbsp;&nbsp;&nbsp;&nbsp; static struct irqaction irq0&nbsp; = { timer_interrupt, 0, 0, &quot;timer&quot;, NULL, NULL}<br>&nbsp;&nbsp;&nbsp; 結(jié)構(gòu)irqaction的定義如下:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct irqaction {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; void (*handler)(int, void *, struct pt_regs *);&nbsp; /* 中斷服務(wù)函數(shù)入口 */<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; unsigned long flags;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* 服務(wù)允中與否標(biāo)記 */<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned long mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; const char *name;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; void *dev_id;<br>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct irqaction *next;<br>&nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; 其中,若flag==SA_INTERRUPT,則中斷矢量改為fast_IRQ#_interrupt,在執(zhí)行中斷服務(wù)的過(guò)程中不允許出現(xiàn)中斷,若為其它標(biāo)記,則中斷矢量為IRQ#_interrupt,在執(zhí)行中斷服務(wù)的過(guò)程中,允許出現(xiàn)中斷。<br>Irq_action的定義與初始化如下:<br>&nbsp;&nbsp;&nbsp; static void (*interrupt[17])(void) = {IRQ#_interrupt};<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; static void (*fast_interrupt[16])(void) = {fast_IRQ#_interrupt};<br>&nbsp;&nbsp;&nbsp; static void (*bad_interrupt[16])(void) = {bad_IRQ#_interrupt};(以上#為中斷號(hào))<br>&nbsp;&nbsp;&nbsp; static struct irqaction *irq_action[16] = {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; NULL, NULL, NULL, NULL,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; NULL, NULL, NULL, NULL,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; NULL, NULL, NULL, NULL,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; NULL, NULL, NULL, NULL<br>&nbsp;&nbsp;&nbsp; };<p>&nbsp;&nbsp;&nbsp; irq_action是一個(gè)全局?jǐn)?shù)組,每個(gè)元素指向一個(gè)irq隊(duì)列,共16個(gè)irq隊(duì)列,時(shí)鐘中斷請(qǐng)求隊(duì)列在第一個(gè)隊(duì)列,即irq_action[0]。當(dāng)每個(gè)中斷請(qǐng)求到來(lái)時(shí),都調(diào)用setup_x86_irq把該請(qǐng)求掛到相應(yīng)的隊(duì)列的后面。<p>&nbsp;&nbsp;&nbsp; 以后,系統(tǒng)每10ms產(chǎn)生一次時(shí)鐘中斷信號(hào),該信號(hào)直接輸入到第一塊8259A的INT 0(即irq0)。CPU根據(jù)中斷矢量表和中斷源,找到中斷矢量函數(shù)入口IRQ0_interrupt(程序運(yùn)行過(guò)程中允許中斷)或者fast_IRQ0_interrupt(程序運(yùn)行過(guò)程中不允許中斷)或者bad_IRQ0_interrupt(不執(zhí)行任何動(dòng)作,直接返回),這些函數(shù)由宏BUILD_TIMER_IRQ(chip, nr, mask)展開(kāi)定義。<br>宏BUILD_TIMER_IRQ(chip, nr, mask)的定義如下:<br>#define BUILD_TIMER_IRQ(chip,nr,mask) \<br>asmlinkage void IRQ_NAME(nr); \<br>asmlinkage void FAST_IRQ_NAME(nr); \<br>asmlinkage void BAD_IRQ_NAME(nr); \<br>__asm__( \<br>&quot;\n&quot;__ALIGN_STR&quot;\n&quot; \<br>SYMBOL_NAME_STR(fast_IRQ) #nr &quot;_interrupt:\n\t&quot; \<br>SYMBOL_NAME_STR(bad_IRQ) #nr &quot;_interrupt:\n\t&quot; \<br>SYMBOL_NAME_STR(IRQ) #nr &quot;_interrupt:\n\t&quot; \<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;pushl $-&quot;#nr&quot;-2\n\t&quot; \<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SAVE_ALL \<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENTER_KERNEL \<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACK_##chip(mask,(nr&amp;7)) \<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;incl &quot;SYMBOL_NAME_STR(intr_count)&quot;\n\t&quot;\&nbsp; /* intr_count為進(jìn)入臨界區(qū)的同步信號(hào)量 */<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;movl %esp,%ebx\n\t&quot; \<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;pushl %ebx\n\t&quot; \<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;pushl $&quot; #nr &quot;\n\t&quot; \&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* 把do_irq函數(shù)參數(shù)壓進(jìn)堆棧 */<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;call &quot;SYMBOL_NAME_STR(do_IRQ)&quot;\n\t&quot; \<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;addl $8,%esp\n\t&quot; \<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;cli\n\t&quot; \<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UNBLK_##chip(mask) \<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;decl &quot;SYMBOL_NAME_STR(intr_count)&quot;\n\t&quot; \<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;incl &quot;SYMBOL_NAME_STR(syscall_count)&quot;\n\t&quot; \<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;jmp ret_from_sys_call\n&quot;);<p>&nbsp;&nbsp;&nbsp; 其中nr為中斷請(qǐng)求類型,取值0~15。在irq.c中通過(guò)語(yǔ)句BUILD_TIMER_IRQ(first, 0, 0x01)調(diào)用該宏,在執(zhí)行宏的過(guò)程中處理時(shí)鐘中斷響應(yīng)程序do_irq()。<p>&nbsp;&nbsp;&nbsp; 函數(shù)do_irq()的第一個(gè)參數(shù)是中斷請(qǐng)求隊(duì)列序號(hào),時(shí)鐘中斷請(qǐng)求傳進(jìn)來(lái)的該參數(shù)是0。于是程序根據(jù)參數(shù)0找到請(qǐng)求隊(duì)列irq_action[0],逐個(gè)處理該隊(duì)列上handler所指的時(shí)鐘中斷請(qǐng)求的服務(wù)函數(shù)。由于已經(jīng)指定時(shí)鐘中斷請(qǐng)求的服務(wù)函數(shù)是timer_interrupt,在函數(shù)timer_interrupt中,立即調(diào)用do_timer()函數(shù)。<p>&nbsp;&nbsp;&nbsp; 函數(shù)do_timer()把jiffies和lost_ticks加1,接著就執(zhí)行mark_bh(TIMER_BH)函數(shù),把bottom_half中時(shí)鐘隊(duì)列對(duì)應(yīng)的位置位,表示該隊(duì)列處于激活狀態(tài)。在做完這些動(dòng)作后,程序從函數(shù)do_irq()中返回,繼續(xù)執(zhí)行以后的匯編代碼。于是,程序在執(zhí)行語(yǔ)句jmp ret_from_sys_call后,跳到指定的位置處繼續(xù)執(zhí)行。<p>代碼段jmp ret_from_sys_call及其相關(guān)的代碼段如下:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ALIGN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .globl ret_from_sys_call<br>ret_from_sys_call:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cmpl $0,SYMBOL_NAME(intr_count)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jne 2f<br>9:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movl SYMBOL_NAME(bh_mask),%eax<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; andl SYMBOL_NAME(bh_active),%eax<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jne handle_bottom_half<br>#ifdef __SMP__<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cmpb $(NO_PROC_ID), SYMBOL_NAME(saved_active_kernel_processor)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jne 2f<br>#endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movl EFLAGS(%esp),%eax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # check VM86 flag: CS/SS are<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testl $(VM_MASK),%eax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # different then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jne 1f<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cmpw $(KERNEL_CS),CS(%esp)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # was old code segment supervisor ?<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; je 2f<br>1:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sti<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; orl $(IF_MASK),%eax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # these just try to make sure<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; andl $~NT_MASK,%eax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # the program doesn't do anything<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movl %eax,EFLAGS(%esp)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # stupid<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cmpl $0,SYMBOL_NAME(need_resched)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jne reschedule<br>#ifdef __SMP__<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GET_PROCESSOR_OFFSET(%eax)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movl SYMBOL_NAME(current_set)(,%eax), %eax<br>#else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movl SYMBOL_NAME(current_set),%eax<br>#endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cmpl SYMBOL_NAME(task),%eax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # task[0] cannot have signals<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; je 2f<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movl blocked(%eax),%ecx<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movl %ecx,%ebx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # save blocked in %ebx for signal handling<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; notl %ecx<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; andl signal(%eax),%ecx<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jne signal_return<br>2:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RESTORE_ALL<p>ALIGN<br>signal_return:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movl %esp,%ecx<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pushl %ecx<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testl $(VM_MASK),EFLAGS(%ecx)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jne v86_signal_return<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pushl %ebx<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call SYMBOL_NAME(do_signal)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; popl %ebx<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; popl %ebx<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RESTORE_ALL<p>ALIGN<br>v86_signal_return:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call SYMBOL_NAME(save_v86_state)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movl %eax,%esp<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pushl %eax<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pushl %ebx<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call SYMBOL_NAME(do_signal)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; popl %ebx<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; popl %ebx<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RESTORE_ALL<p>&nbsp; handle_bottom_half:<br>incl SYMBOL_NAME(intr_count)<br>call SYMBOL_NAME(do_bottom_half)<br>decl SYMBOL_NAME(intr_count)<br>

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情综合色丁香一区二区| 欧美色爱综合网| 国产精品伊人色| 亚洲.国产.中文慕字在线| 国产精品欧美一区喷水| 中文字幕第一区| 国产亚洲一二三区| 国产色产综合产在线视频| 久久视频一区二区| 欧美一区二区在线不卡| 在线成人高清不卡| 一本大道av一区二区在线播放| 国产精品伊人色| 国产成人在线网站| av一区二区三区在线| 99久久综合国产精品| 色婷婷激情久久| 91麻豆视频网站| 欧美色图片你懂的| 欧美一个色资源| 日韩一区二区电影| 久久久久99精品国产片| 国产情人综合久久777777| 中文字幕亚洲精品在线观看| 国产精品欧美一区喷水| 日韩美女啊v在线免费观看| 洋洋av久久久久久久一区| 亚洲一区视频在线| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久国产精品区| 91婷婷韩国欧美一区二区| 69精品人人人人| 欧美国产精品一区二区| 亚洲网友自拍偷拍| 美国十次了思思久久精品导航| 久久草av在线| 日本伦理一区二区| 制服丝袜日韩国产| 中文字幕乱码亚洲精品一区| 亚洲一区二区不卡免费| 麻豆成人久久精品二区三区小说| 国产麻豆91精品| aaa欧美大片| 精品久久一二三区| 图片区小说区国产精品视频| 成人看片黄a免费看在线| 欧美日韩国产电影| 国产精品视频你懂的| 捆绑紧缚一区二区三区视频| 在线精品视频小说1| 中文字幕精品—区二区四季| 日韩成人一级大片| 在线观看日韩一区| 中文字幕一区二区三区蜜月 | 91天堂素人约啪| 欧美xxx久久| 秋霞电影一区二区| 日韩欧美一二三| 午夜精品久久久久久久久久久| 99久久夜色精品国产网站| 欧美成人vps| 国产美女在线观看一区| 日韩一区二区三区电影在线观看| 亚洲韩国精品一区| 波多野结衣在线aⅴ中文字幕不卡 波多野结衣在线一区 | 亚洲欧美激情在线| 久久精品无码一区二区三区| 日本系列欧美系列| 亚洲女人****多毛耸耸8| 成人免费高清在线观看| 一区在线播放视频| 99久久夜色精品国产网站| 国产午夜久久久久| 丁香一区二区三区| 亚洲欧美韩国综合色| 91论坛在线播放| 五月天婷婷综合| 欧美一级欧美三级| 久久精品国产99久久6| 欧美电视剧在线看免费| 国产一区二区三区免费| 国产精品久久久久久久久图文区 | 美腿丝袜亚洲色图| 欧美精品一区二区三区蜜臀| 国产+成+人+亚洲欧洲自线| 亚洲欧洲性图库| 欧美日韩亚洲丝袜制服| 久久av老司机精品网站导航| 国产精品美女久久久久高潮| 欧美午夜片在线观看| 国产一区在线精品| 国产一区二区精品在线观看| 国产清纯在线一区二区www| 欧美影院一区二区三区| 懂色av中文一区二区三区| 亚洲综合成人在线| 精品99999| 一区二区三区中文字幕精品精品| www.日韩av| 亚洲在线观看免费| 精品久久久久av影院| 色婷婷综合久久久久中文一区二区| 美国av一区二区| 午夜视频一区在线观看| 国产精品视频你懂的| 国产视频一区在线观看| 777欧美精品| 91色九色蝌蚪| 成人精品亚洲人成在线| 秋霞午夜鲁丝一区二区老狼| 樱花草国产18久久久久| 国产欧美va欧美不卡在线| 日韩免费高清视频| 欧美一区二区性放荡片| 欧美高清视频不卡网| 色成年激情久久综合| 成人三级在线视频| 国产不卡视频在线观看| 国产成人av电影| 成人一区二区三区中文字幕| 精品一区二区成人精品| 日韩在线播放一区二区| 亚洲免费视频中文字幕| 国产精品麻豆一区二区| 久久久久久久久99精品| 亚洲精品在线网站| 久久综合久久综合久久综合| 最近日韩中文字幕| 夜夜嗨av一区二区三区中文字幕| 亚洲精品国产一区二区三区四区在线| 亚洲欧美日韩国产手机在线 | 蜜桃精品视频在线| 国产精一品亚洲二区在线视频| 国产在线不卡视频| 成人美女在线视频| 欧美色电影在线| 亚洲成人免费在线观看| 午夜精品视频一区| 久久99国产精品免费网站| 91福利在线看| 6080国产精品一区二区| 久久免费视频色| 国产精品久久久久婷婷二区次| 亚洲精品成a人| 久久综合综合久久综合| av一区二区三区黑人| 在线观看av一区| 欧美国产综合色视频| 一区二区欧美国产| 国产成人免费视频精品含羞草妖精| 不卡影院免费观看| 精品欧美乱码久久久久久| 亚洲美女少妇撒尿| 久久69国产一区二区蜜臀| 在线观看日韩精品| 久久综合久久久久88| 亚洲一区二区三区精品在线| 国产成人超碰人人澡人人澡| 欧美日韩免费视频| 欧美国产精品一区| 国产高清久久久久| 欧美电影免费观看高清完整版| 亚洲线精品一区二区三区| 国产剧情一区在线| 91麻豆精品国产91久久久久久 | 91搞黄在线观看| 亚洲国产成人自拍| 国产一区在线看| 欧美日韩一区成人| 日韩理论片一区二区| 国产精品一区二区黑丝| 欧美精品久久天天躁| 亚洲精品乱码久久久久| 成人免费av资源| 久久久噜噜噜久久中文字幕色伊伊| 亚洲成人免费在线观看| 色网站国产精品| 国产精品久久久久久久久免费桃花| 精品午夜一区二区三区在线观看| 欧美在线免费视屏| 亚洲国产欧美日韩另类综合 | 欧美大片顶级少妇| 奇米精品一区二区三区在线观看| 99re热这里只有精品免费视频| 国产精品色一区二区三区| 狠狠狠色丁香婷婷综合激情| 日韩一区二区电影| 国产成人鲁色资源国产91色综 | 岛国精品在线观看| 国产精品欧美经典| 欧美日韩dvd在线观看| 日本三级亚洲精品| 日韩欧美国产wwwww| 九一九一国产精品| 国产精品三级电影| 欧美视频中文一区二区三区在线观看| 午夜不卡在线视频| 国产欧美一区二区三区在线老狼| 91在线看国产| 亚洲一区二区在线免费观看视频|