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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? traps.c

?? LINUX 0.11版內核代碼。 并有代碼分析說明。
?? C
字號:
/* passed *  linux/kernel/traps.c * *  (C) 1991  Linus Torvalds */#include <set_seg.h>
/* * 在程序asm.s 中保存了一些狀態后,本程序用來處理硬件陷阱和故障。目前主要用于調試目的,
 * 以后將擴展用來殺死遭損壞的進程(主要是通過發送一個信號,但如果必要也會直接殺死)。 */// 字符串頭文件。主要定義了一些有關字符串操作的嵌入函數。
#include <string.h>

// head 頭文件,定義了段描述符的簡單結構,和幾個選擇符常量。#include <linux/head.h>
// 調度程序頭文件,定義了任務結構task_struct、初始任務0 的數據,
// 還有一些有關描述符參數設置和獲取的嵌入式匯編函數宏語句。#include <linux/sched.h>
// 內核頭文件。含有一些內核常用函數的原形定義。#include <linux/kernel.h>
// 系統頭文件。定義了設置或修改描述符/中斷門等的嵌入式匯編宏。#include <asm/system.h>
// 段操作頭文件。定義了有關段寄存器操作的嵌入式匯編函數。#include <asm/segment.h>
// 輸入/輸出頭文件。定義硬件端口輸入/輸出宏匯編語句。#include <asm/io.h>
// 以下語句定義了三個嵌入式匯編宏語句函數。有關嵌入式匯編的基本語法見列表后或參見附錄。
// 取段seg 中地址addr 處的一個字節。//#define get_seg_byte(seg,addr) ({ \//register char __res; \//__asm__("push %%fs;mov %%ax,%%fs;movb %%fs:%2,%%al;pop %%fs" \//	:"=a" (__res):"0" (seg),"m" (*(addr))); \//__res;})
_inline char get_seg_byte(unsigned short segm, void *addr)
{
	register char __res;
	_asm{
	push fs
	mov ax,segm
	mov fs,ax
	mov ebx,addr
	mov al,byte ptr fs:[ebx]
	mov __res,al
	pop fs
	}
	return __res;
}
// 取段seg 中地址addr 處的一個長字(4 字節)。
_inline long 
get_seg_long(unsigned short segm,long *addr) {
	register unsigned long __res;
	_asm{
		push fs
		mov ax,segm
		mov fs,ax
		mov ebx,addr
		mov eax,fs:[ebx]
		mov __res,eax
		pop fs
	}
	return __res;
}//#define get_seg_long(seg,addr) ({ \//register unsigned long __res; \//__asm__("push %%fs;mov %%ax,%%fs;movl %%fs:%2,%%eax;pop %%fs" \//	:"=a" (__res):"0" (seg),"m" (*(addr))); \//__res;})
// 取fs 段寄存器的值(選擇符)。
_inline unsigned short _fs() {
	register unsigned short __res;
	_asm mov ax,fs
	_asm mov __res,ax
	return __res;
}//#define _fs() ({ \//register unsigned short __res; \//__asm__("mov %%fs,%%ax":"=a" (__res):); \//__res;})
// 以下定義了一些函數原型。int do_exit(long code);// (kernel/exit.c,102)void page_exception(void);// [??]
// 以下定義了一些中斷處理程序原型,代碼在(kernel/asm.s 或system_call.s)中。void divide_error(void);// int0 (kernel/asm.s,19)。void debug(void);// int1 (kernel/asm.s,53)。void nmi(void);// int2 (kernel/asm.s,57)。void int3(void);// int3 (kernel/asm.s,61)。void overflow(void);// int4 (kernel/asm.s,65)。void bounds(void);// int5 (kernel/asm.s,69)。void invalid_op(void);// int6 (kernel/asm.s,73)。void device_not_available(void);// int7 (kernel/system_call.s,148)。void double_fault(void);// int8 (kernel/asm.s,97)。void coprocessor_segment_overrun(void);// int9 (kernel/asm.s,77)。void invalid_TSS(void);// int10 (kernel/asm.s,131)。void segment_not_present(void);// int11 (kernel/asm.s,135)。void stack_segment(void);// int12 (kernel/asm.s,139)。void general_protection(void);// int13 (kernel/asm.s,143)。void page_fault(void);// int14 (mm/page.s,14)。void reserved(void);// int15 (kernel/asm.s,81)。
void coprocessor_error(void);// int16 (kernel/system_call.s,131)。void parallel_interrupt(void);// int39 (kernel/system_call.s,280)。void irq13(void);// int45 協處理器中斷處理(kernel/asm.s,85)。
// 該子程序用來打印出錯中斷的名稱、出錯號、調用程序的EIP、EFLAGS、ESP、fs 段寄存器值、
// 段的基址、段的長度、進程號pid、任務號、10 字節指令碼。如果堆棧在用戶數據段,則還
// 打印16 字節的堆棧內容。static void die(char * str,long esp_ptr,long nr){	long * esp = (long *) esp_ptr;	int i;	printk("%s: %04x\n\r",str,nr&0xffff);	printk("EIP:\t%04x:%p\nEFLAGS:\t%p\nESP:\t%04x:%p\n",		esp[1],esp[0],esp[2],esp[4],esp[3]);	printk("fs: %04x\n",_fs());	printk("base: %p, limit: %p\n",get_base(current->ldt[1]),get_limit(0x17));	if (esp[4] == 0x17) {		printk("Stack: ");		for (i=0;i<4;i++)			printk("%p ",get_seg_long(0x17,i+(long *)esp[3]));		printk("\n");	}	str(i);	printk("Pid: %d, process nr: %d\n\r",current->pid,0xffff & i);	for(i=0;i<10;i++)		printk("%02x ",0xff & get_seg_byte(esp[1],(i+(char *)esp[0])));	printk("\n\r");	do_exit(11);		/* play segment exception */}
// 以下這些以do_開頭的函數是對應名稱中斷處理程序調用的C 函數。void do_double_fault(long esp, long error_code){	die("double fault",esp,error_code);}void do_general_protection(long esp, long error_code){	die("general protection",esp,error_code);}void do_divide_error(long esp, long error_code){	die("divide error",esp,error_code);}void do_int3(long * esp, long error_code,		long fs,long es,long ds,		long ebp,long esi,long edi,		long edx,long ecx,long ebx,long eax){	int tr;//	__asm__("str %%ax":"=a" (tr):"0" (0));
	_asm xor eax,eax
	_asm str ax
	_asm mov tr,eax	printk("eax\t\tebx\t\tecx\t\tedx\n\r%8x\t%8x\t%8x\t%8x\n\r",		eax,ebx,ecx,edx);	printk("esi\t\tedi\t\tebp\t\tesp\n\r%8x\t%8x\t%8x\t%8x\n\r",		esi,edi,ebp,(long) esp);	printk("\n\rds\tes\tfs\ttr\n\r%4x\t%4x\t%4x\t%4x\n\r",		ds,es,fs,tr);	printk("EIP: %8x   CS: %4x  EFLAGS: %8x\n\r",esp[0],esp[1],esp[2]);}void do_nmi(long esp, long error_code){	die("nmi",esp,error_code);}void do_debug(long esp, long error_code){	die("debug",esp,error_code);}void do_overflow(long esp, long error_code){	die("overflow",esp,error_code);}void do_bounds(long esp, long error_code){	die("bounds",esp,error_code);}void do_invalid_op(long esp, long error_code){	die("invalid operand",esp,error_code);}void do_device_not_available(long esp, long error_code){	die("device not available",esp,error_code);}void do_coprocessor_segment_overrun(long esp, long error_code){	die("coprocessor segment overrun",esp,error_code);}void do_invalid_TSS(long esp,long error_code){	die("invalid TSS",esp,error_code);}void do_segment_not_present(long esp,long error_code){	die("segment not present",esp,error_code);}void do_stack_segment(long esp,long error_code){	die("stack segment",esp,error_code);}void do_coprocessor_error(long esp, long error_code){	if (last_task_used_math != current)		return;	die("coprocessor error",esp,error_code);}void do_reserved(long esp, long error_code){	die("reserved (15,17-47) error",esp,error_code);}
// 下面是異常(陷阱)中斷程序初始化子程序。設置它們的中斷調用門(中斷向量)。
// set_trap_gate()與set_system_gate()的主要區別在于前者設置的特權級為0,后者是3。因此
// 斷點陷阱中斷int3、溢出中斷overflow 和邊界出錯中斷bounds 可以由任何程序產生。
// 這兩個函數均是嵌入式匯編宏程序(include/asm/system.h,第36 行、39 行)。void trap_init(void){	int i;	set_trap_gate(0,&divide_error);// 設置除操作出錯的中斷向量值。以下雷同。	set_trap_gate(1,&debug);	set_trap_gate(2,&nmi);	set_system_gate(3,&int3);	/* int3-5 can be called from all */	set_system_gate(4,&overflow);	set_system_gate(5,&bounds);	set_trap_gate(6,&invalid_op);	set_trap_gate(7,&device_not_available);	set_trap_gate(8,&double_fault);	set_trap_gate(9,&coprocessor_segment_overrun);	set_trap_gate(10,&invalid_TSS);	set_trap_gate(11,&segment_not_present);	set_trap_gate(12,&stack_segment);	set_trap_gate(13,&general_protection);	set_trap_gate(14,&page_fault);	set_trap_gate(15,&reserved);	set_trap_gate(16,&coprocessor_error);
// 下面將int17-48 的陷阱門先均設置為reserved,以后每個硬件初始化時會重新設置自己的陷阱門。	for (i=17;i<48;i++)		set_trap_gate(i,&reserved);	set_trap_gate(45,&irq13);// 設置協處理器的陷阱門。	outb_p(inb_p(0x21)&0xfb,0x21);// 允許主8259A 芯片的IRQ2 中斷請求。	outb(inb_p(0xA1)&0xdf,0xA1);// 允許從8259A 芯片的IRQ13 中斷請求。	set_trap_gate(39,&parallel_interrupt);// 設置并行口的陷阱門。}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区影院| 久久成人免费网站| 中文字幕成人网| 国产清纯白嫩初高生在线观看91| 欧美一区二区三区精品| 51精品久久久久久久蜜臀| 欧美三级午夜理伦三级中视频| 欧美手机在线视频| 欧美日韩中文国产| 91精品国产一区二区三区蜜臀| 欧美另类一区二区三区| 欧美日韩美少妇| 日韩片之四级片| 国产亚洲一区二区在线观看| 国产日韩欧美电影| 综合网在线视频| 亚洲综合激情小说| 天天做天天摸天天爽国产一区| 日韩**一区毛片| 久久99精品久久久| 丁香亚洲综合激情啪啪综合| 色综合一区二区| 欧美日韩高清影院| 日韩欧美色综合网站| 久久久久久久综合日本| 综合电影一区二区三区| 亚洲成人在线观看视频| 久久成人麻豆午夜电影| 成人高清视频免费观看| 欧美视频在线观看一区| 精品久久久久一区| 国产精品另类一区| 一区二区三区在线免费视频| 麻豆视频观看网址久久| 成人自拍视频在线观看| 欧美人狂配大交3d怪物一区| 精品国产乱码久久久久久免费| 国产精品久久毛片av大全日韩| 一区二区三区欧美亚洲| 精品一区二区三区在线播放视频 | 怡红院av一区二区三区| 日韩二区在线观看| 成+人+亚洲+综合天堂| 欧美日韩国产综合视频在线观看| 久久综合色婷婷| 一区二区三区欧美视频| 国产精品 日产精品 欧美精品| 色av综合在线| 久久免费美女视频| 天天影视色香欲综合网老头| 成人国产视频在线观看| 精品日韩欧美一区二区| 艳妇臀荡乳欲伦亚洲一区| 国产一区二区三区在线观看免费| 精品视频在线视频| 亚洲欧洲www| 国产精品69久久久久水密桃| 欧美一区二区三区四区在线观看| 国产精品国产自产拍高清av| 久久99精品久久久久久| 欧美精品欧美精品系列| 亚洲欧美日韩一区二区| 国产精品一线二线三线| 日韩美女在线视频| 国产成人精品三级| 欧美日韩aaaaa| 亚洲一区二区三区精品在线| 成年人午夜久久久| 国产精品无圣光一区二区| 国产一区999| 久久久久久一级片| 精品一区二区免费在线观看| 制服丝袜av成人在线看| 亚洲午夜免费视频| 在线视频一区二区三| 综合网在线视频| 色菇凉天天综合网| 亚洲精品国产精华液| 一本久久a久久精品亚洲| 国产精品欧美经典| 99久久精品99国产精品| 亚洲视频精选在线| 色欧美日韩亚洲| 亚欧色一区w666天堂| 亚洲精品v日韩精品| 91精品国产麻豆国产自产在线| 国产精品进线69影院| 成人免费视频caoporn| 国产精品免费视频一区| 97se狠狠狠综合亚洲狠狠| 综合久久久久久| 欧美亚洲丝袜传媒另类| 粉嫩久久99精品久久久久久夜| 国产午夜亚洲精品羞羞网站| 成人免费视频播放| 亚洲一区二区成人在线观看| 欧美午夜精品理论片a级按摩| 亚洲国产综合91精品麻豆 | 久久久久久久久免费| 国产成都精品91一区二区三| 日韩伦理av电影| 欧美美女黄视频| 韩国一区二区三区| 亚洲精品国产无套在线观| 91精品国产91久久久久久一区二区 | 成人av免费在线播放| 亚洲自拍偷拍欧美| 欧美大胆人体bbbb| 一本久久综合亚洲鲁鲁五月天 | 欧美色综合久久| 日韩高清在线电影| 久久夜色精品一区| 欧美性做爰猛烈叫床潮| 蜜桃视频免费观看一区| 26uuu久久综合| 91免费观看视频| 亚洲高清免费观看 | 欧美大肚乱孕交hd孕妇| 亚洲视频每日更新| 精品日韩一区二区三区免费视频| 成人午夜免费av| 亚洲最大色网站| 26uuu亚洲| 91福利国产成人精品照片| 国产一区二区三区在线观看免费| 中文字幕视频一区| 在线综合视频播放| 成人美女在线视频| 天天av天天翘天天综合网色鬼国产| 国产天堂亚洲国产碰碰| 欧洲日韩一区二区三区| 国产一区福利在线| 亚洲欧美另类久久久精品2019| 欧美一区二区在线视频| 国产乱码精品一区二区三区五月婷| 午夜久久久久久| 国产精品国产自产拍在线| 日韩一区二区影院| 91精品国产入口| 国产成人精品1024| 另类综合日韩欧美亚洲| 亚洲欧美福利一区二区| 欧美日韩亚洲综合一区 | 色婷婷av一区二区三区大白胸| 日韩精品一级二级| 国产精品成人免费| 精品美女一区二区三区| 欧美精品在欧美一区二区少妇| 国产凹凸在线观看一区二区| 美女视频黄频大全不卡视频在线播放| 欧美国产日韩a欧美在线观看| 欧美一区二区三区爱爱| 在线免费观看不卡av| 国产成人亚洲精品狼色在线| 亚洲一区二区美女| 日韩国产欧美三级| 亚洲精品国久久99热| 欧美激情一区二区三区四区| 欧美成人乱码一区二区三区| 欧美日韩视频在线一区二区| 欧美日韩中文字幕精品| 一本色道a无线码一区v| 成人动漫视频在线| 国产999精品久久| 久久99久久精品| 国产一区欧美一区| 国产在线麻豆精品观看| 久久超碰97人人做人人爱| 一区二区国产盗摄色噜噜| 亚洲一区二区三区中文字幕| 亚洲欧美另类久久久精品| 国产精品看片你懂得| 国产精品久久三| 综合激情网...| 亚洲一区二区三区四区在线观看| 国产精品不卡在线观看| 国产精品福利一区二区三区| 亚洲欧洲日本在线| 欧美激情艳妇裸体舞| 国产91精品一区二区麻豆网站| 国产真实乱偷精品视频免| 国产最新精品免费| 国产自产高清不卡| 91日韩一区二区三区| 欧美性感一类影片在线播放| 欧美日韩一区高清| 日韩欧美一区在线| 91精品国产色综合久久ai换脸 | 国产精品18久久久久久久网站| 粉嫩高潮美女一区二区三区| 91丨porny丨国产入口| 欧美三级视频在线| 欧美sm美女调教| 日韩欧美国产系列| 国产精品久久精品日日| 亚洲一区二区黄色| 久久99热这里只有精品| 在线区一区二视频| 日韩免费在线观看| 国产精品美女久久久久久久久久久|