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

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

?? system_call.s

?? LINUX 0.11版內核代碼。 并有代碼分析說明。
?? S
?? 第 1 頁 / 共 2 頁
字號:
;/* passed;* linux/kernel/system_call.s;*;* (C) 1991 Linus Torvalds;*/.386p
.model flat
;/*;* system_call.s contains the system-call low-level handling routines.;* This also contains the timer-interrupt handler, as some of the code is;* the same. The hd- and flopppy-interrupts are also here.;*;* NOTE: This code handles signal-recognition, which happens every time;* after a timer-interrupt and after each system call. Ordinary interrupts;* don't handle signal-recognition, as that would clutter them up totally;* unnecessarily.;*;* Stack layout in 'ret_from_system_call':;*;* 0(%esp) - %eax;* 4(%esp) - %ebx;* 8(%esp) - %ecx;* C(%esp) - %edx;* 10(%esp) - %fs;* 14(%esp) - %es;* 18(%esp) - %ds;* 1C(%esp) - %eip;* 20(%esp) - %cs;* 24(%esp) - %eflags;* 28(%esp) - %oldesp;* 2C(%esp) - %oldss;*/;/*;* system_call.s 文件包含系統調用(system-call)底層處理子程序。由于有些代碼比較類似,所以;* 同時也包括時鐘中斷處理(timer-interrupt)句柄。硬盤和軟盤的中斷處理程序也在這里。;*;* 注意:這段代碼處理信號(signal)識別,在每次時鐘中斷和系統調用之后都會進行識別。一般;* 中斷信號并不處理信號識別,因為會給系統造成混亂。;*;* 從系統調用返回('ret_from_system_call')時堆棧的內容見上面19-30 行。;*/SIG_CHLD = 17 ;// 定義SIG_CHLD 信號(子進程停止或結束)。R_EAX = 00h ;// 堆棧中各個寄存器的偏移位置。R_EBX = 04hR_ECX = 08hR_EDX = 0ChR_FS = 10hR_ES = 14hR_DS = 18hR_EIP = 1ChR_CS = 20hEFLAGS = 24hOLDR_ESP = 28h ;// 當有特權級變化時。OLR_DSS = 2Ch;// 以下這些是任務結構(task_struct)中變量的偏移值,參見include/linux/sched.h,77 行開始。state = 0 ;// these are offsets into the task-struct. ;// 進程狀態碼counter = 4 ;// 任務運行時間計數(遞減)(滴答數),運行時間片。priority = 8 ;// 運行優先數。任務開始運行時counter=priority,越大則運行時間越長。signal = 12 ;// 是信號位圖,每個比特位代表一種信號,信號值=位偏移值+1。sigaction = 16 ;// MUST be 16 (=len of sigaction) // sigaction 結構長度必須是16 字節。;// 信號執行屬性結構數組的偏移值,對應信號將要執行的操作和標志信息。blocked = (33*16) ;// 受阻塞信號位圖的偏移量。;// 以下定義在sigaction 結構中的偏移量,參見include/signal.h,第48 行開始。;// offsets within sigactionsa_handler = 0 ;// 信號處理過程的句柄(描述符)。sa_mask = 4 ;// 信號量屏蔽碼sa_flags = 8 ;// 信號集。sa_restorer = 12 ;// 返回恢復執行的地址位置。nr_system_calls = 72 ;// Linux 0.11 版內核中的系統調用總數。;/*;* Ok, I get parallel printer interrupts while using the floppy for some;* strange reason. Urgel. Now I just ignore them.;*/;/*;* 好了,在使用軟驅時我收到了并行打印機中斷,很奇怪。呵,現在不管它。;*/;// 定義入口點。
extrn _schedule:proc,_do_signal:proc,_math_error:proc
extrn _math_state_restore:proc,_math_emulate:proc,_jiffies:proc
extrn _do_timer:proc,_do_execve:proc
extrn _find_empty_process:proc,_copy_process:proc
extrn _do_floppy:proc,_unexpected_floppy_interrupt:proc
extrn _do_hd:proc,_unexpected_hd_interrupt:proc

extrn _current:dword,_task:dword,_sys_call_table:dword
public _system_call,_sys_fork,_timer_interrupt,_sys_execvepublic _hd_interrupt,_floppy_interrupt,_parallel_interruptpublic _device_not_available, _coprocessor_error

.code

;// 錯誤的系統調用號。align 4 ;// 內存4 字節對齊。bad_sys_call:	mov eax,-1 ;// eax 中置-1,退出中斷。	iretd;// 重新執行調度程序入口。調度程序schedule 在(kernel/sched.c,104)。align 4reschedule:	push ret_from_sys_call ;// 將ret_from_sys_call 的地址入棧(101 行)。	jmp _schedule;//// int 0x80 --linux 系統調用入口點(調用中斷int 0x80,eax 中是調用號)。align 4_system_call:	cmp eax,nr_system_calls-1 ;// 調用號如果超出范圍的話就在eax 中置-1 并退出。	ja bad_sys_call	push ds ;// 保存原段寄存器值。	push es	push fs	push edx ;// ebx,ecx,edx 中放著系統調用相應的C 語言函數的調用參數。	push ecx ;// push %ebx,%ecx,%edx as parameters	push ebx ;// to the system call	mov edx,10h ;// set up ds,es to kernel space	mov ds,dx ;// ds,es 指向內核數據段(全局描述符表中數據段描述符)。	mov es,dx	mov edx,17h ;// fs points to local data space	mov fs,dx ;// fs 指向局部數據段(局部描述符表中數據段描述符)。;// 下面這句操作數的含義是:調用地址 = _sys_call_table + %eax * 4。參見列表后的說明。;// 對應的C 程序中的sys_call_table 在include/linux/sys.h 中,其中定義了一個包括72 個;// 系統調用C 處理函數的地址數組表。	call [_sys_call_table+eax*4]	push eax ;// 把系統調用號入棧。	mov eax,_current ;// 取當前任務(進程)數據結構地址??eax。;// 下面97-100 行查看當前任務的運行狀態。如果不在就緒狀態(state 不等于0)就去執行調度程序。;// 如果該任務在就緒狀態但counter[??]值等于0,則也去執行調度程序。	cmp dword ptr [state+eax],0 ;// state	jne reschedule	cmp dword ptr [counter+eax],0 ;// counter	je reschedule;// 以下這段代碼執行從系統調用C 函數返回后,對信號量進行識別處理。ret_from_sys_call:;// 首先判別當前任務是否是初始任務task0,如果是則不必對其進行信號量方面的處理,直接返回。;// 103 行上的_task 對應C 程序中的task[]數組,直接引用task 相當于引用task[0]。	mov eax,_current ;// task[0] cannot have signals	cmp eax,_task	je l1 ;// 向前(forward)跳轉到標號l1。;// 通過對原調用程序代碼選擇符的檢查來判斷調用程序是否是超級用戶。如果是超級用戶就直接;// 退出中斷,否則需進行信號量的處理。這里比較選擇符是否為普通用戶代碼段的選擇符0x000f;// (RPL=3,局部表,第1 個段(代碼段)),如果不是則跳轉退出中斷程序。	cmp word ptr [R_CS+esp],0fh ;// was old code segment supervisor ?	jne l1;// 如果原堆棧段選擇符不為0x17(也即原堆棧不在用戶數據段中),則也退出。	cmp word ptr [OLR_DSS+esp],17h ;// was stack segment = 0x17 ?	jne l1;// 下面這段代碼(109-120)的用途是首先取當前任務結構中的信號位圖(32 位,每位代表1 種信號),;// 然后用任務結構中的信號阻塞(屏蔽)碼,阻塞不允許的信號位,取得數值最小的信號值,再把;// 原信號位圖中該信號對應的位復位(置0),最后將該信號值作為參數之一調用do_signal()。;// do_signal()在(kernel/signal.c,82)中,其參數包括13 個入棧的信息。	mov ebx,[signal+eax] ;// 取信號位圖??ebx,每1 位代表1 種信號,共32 個信號。	mov ecx,[blocked+eax] ;// 取阻塞(屏蔽)信號位圖??ecx。	not ecx ;// 每位取反。	and ecx,ebx ;// 獲得許可的信號位圖。	bsf ecx,ecx ;// 從低位(位0)開始掃描位圖,看是否有1 的位,;// 若有,則ecx 保留該位的偏移值(即第幾位0-31)。	je l1 ;// 如果沒有信號則向前跳轉退出。	btr ebx,ecx ;// 復位該信號(ebx 含有原signal 位圖)。	mov dword ptr [signal+eax],ebx ;// 重新保存signal 位圖信息??current->signal。	inc ecx ;// 將信號調整為從1 開始的數(1-32)。	push ecx ;// 信號值入棧作為調用do_signal 的參數之一。	call _do_signal ;// 調用C 函數信號處理程序(kernel/signal.c,82)	pop eax ;// 彈出信號值。l1: pop eax	pop ebx	pop ecx	pop edx	pop fs	pop es	pop ds	iretd;//// int16 -- 下面這段代碼處理協處理器發出的出錯信號。跳轉執行C 函數math_error();// (kernel/math/math_emulate.c,82),返回后將跳轉到ret_from_sys_call 處繼續執行。align 4_coprocessor_error:	push ds	push es	push fs	push edx	push ecx	push ebx	push eax

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区日韩| 欧洲一区二区三区在线| 肉色丝袜一区二区| 亚洲国产综合91精品麻豆| 欧美激情一二三区| 中文字幕精品一区二区精品绿巨人| 亚洲午夜激情网页| 亚洲永久免费av| 午夜欧美视频在线观看| 日本vs亚洲vs韩国一区三区二区 | 精品福利一二区| 日韩美女主播在线视频一区二区三区| 亚洲精品日韩专区silk| 亚洲色欲色欲www在线观看| 亚洲人成影院在线观看| 亚洲永久精品大片| 久久精品国产澳门| 国产不卡在线一区| 色综合久久久久网| 在线91免费看| 日韩电影免费在线看| 久久99热99| 风间由美中文字幕在线看视频国产欧美| 九九久久精品视频| 国产传媒一区在线| 91浏览器打开| 日韩欧美成人激情| 国产精品国产馆在线真实露脸| 久久精品国产精品青草| 99久久国产综合精品女不卡| 欧美这里有精品| 精品国产伦一区二区三区观看体验 | 成人福利视频网站| 一区二区在线观看不卡| 男人操女人的视频在线观看欧美| 激情久久五月天| 色哟哟精品一区| 精品国产成人在线影院| 亚洲精品高清视频在线观看| 久久成人久久爱| 欧洲精品一区二区| 日韩二区三区四区| jlzzjlzz亚洲日本少妇| 欧美一级搡bbbb搡bbbb| 亚洲日本va午夜在线影院| 裸体在线国模精品偷拍| 欧美亚洲动漫另类| 国产精品久久久久aaaa| 美日韩一级片在线观看| 国产精品国产自产拍高清av| 全国精品久久少妇| 欧美性videosxxxxx| 欧美极品aⅴ影院| 麻豆精品视频在线观看免费| 欧美日韩国产精品自在自线| 国产精品久久久久久久久免费桃花 | 国产精品自拍网站| 欧美一区二区三区色| 一区二区不卡在线播放| 成人综合在线视频| 久久影院视频免费| 日本欧美肥老太交大片| 欧美日韩中文字幕一区二区| 亚洲色图制服诱惑| 3d动漫精品啪啪一区二区竹菊 | 欧美日韩你懂的| 亚洲欧美日韩在线| 成人va在线观看| 久久精品一区八戒影视| 国产精品一二一区| 日韩av在线播放中文字幕| 色综合色综合色综合| 亚洲三级在线播放| 色狠狠av一区二区三区| 亚洲欧美激情一区二区| 94-欧美-setu| 一区二区三区在线视频观看| 色婷婷综合久久久久中文一区二区 | 亚洲v中文字幕| 欧美视频一区二区在线观看| 亚洲图片一区二区| 欧美日韩亚洲国产综合| 午夜视频一区二区| 在线不卡中文字幕播放| 亚洲成av人片| 亚洲成人7777| 欧美精品v日韩精品v韩国精品v| 亚洲va欧美va人人爽| 欧美一区日本一区韩国一区| 老汉av免费一区二区三区| 精品国产乱码久久久久久蜜臀| 国产在线日韩欧美| 欧美极品xxx| 在线视频欧美区| 欧美日韩视频在线一区二区| 青青草国产精品97视觉盛宴| 欧美xxxxx牲另类人与| 国产91露脸合集magnet | 日韩精品电影在线| 精品久久久影院| 懂色av一区二区三区免费观看| 国产一区二区在线观看免费| 久久午夜色播影院免费高清| 成人免费看视频| 亚洲国产毛片aaaaa无费看| 欧美一区二区成人6969| 国产成人精品免费网站| 一区二区三区日韩精品视频| 日韩精品一区二区三区蜜臀| 成人国产精品免费观看动漫 | 91麻豆产精品久久久久久| 亚洲bt欧美bt精品| 国产精品视频线看| 欧美日本在线播放| 成人av网站在线观看免费| 午夜精品久久久久久不卡8050| 日韩欧美国产电影| 日本黄色一区二区| 欧美一区二区三区免费在线看| 国产成人在线观看免费网站| 婷婷综合久久一区二区三区| 欧美国产日韩a欧美在线观看 | 国产免费观看久久| 欧美日韩亚洲丝袜制服| 白白色亚洲国产精品| 91理论电影在线观看| 久久99久久99精品免视看婷婷 | 成人性生交大片免费看中文| 婷婷久久综合九色综合绿巨人| 中文字幕第一区| 日韩欧美卡一卡二| 亚洲天天做日日做天天谢日日欢| 欧美大片在线观看一区| 欧美日韩黄视频| 91丨porny丨中文| 国产精品996| 美国十次综合导航| 亚洲成人激情社区| 一区二区三区四区不卡在线 | 久久女同精品一区二区| 欧美日韩国产中文| 91福利视频久久久久| 成人综合在线观看| 国产 日韩 欧美大片| 国内精品不卡在线| 欧美日韩精品高清| 91在线丨porny丨国产| 成人av手机在线观看| 国产.欧美.日韩| jizz一区二区| www.在线成人| a亚洲天堂av| 色婷婷精品久久二区二区蜜臀av| 成人性生交大片免费看视频在线| 国产一区二区不卡在线 | 国产色婷婷亚洲99精品小说| 2023国产一二三区日本精品2022| 欧美xxx久久| 久久久久久久久蜜桃| 国产色产综合产在线视频| 欧美极品少妇xxxxⅹ高跟鞋| 中文字幕一区二区三区乱码在线| 国产精品美女久久久久久久久| 国产一区福利在线| 国产精品亚洲а∨天堂免在线| 成人三级在线视频| 91丨九色丨尤物| 欧美网站一区二区| 日韩欧美一区二区视频| www久久精品| 中文字幕中文字幕在线一区 | 日韩福利电影在线| 毛片av一区二区| 成人性生交大片免费看中文| 91伊人久久大香线蕉| 欧美日韩精品免费| 欧美mv日韩mv国产网站app| 国产午夜亚洲精品羞羞网站| 最新不卡av在线| 日韩高清在线一区| 国产一区二区伦理| 欧美在线观看一区| 亚洲精品在线观看视频| 国产精品国模大尺度视频| 日本乱码高清不卡字幕| 欧美一区二区三区免费视频 | 日韩国产欧美三级| 国产精品资源在线| 欧美午夜精品理论片a级按摩| 日韩欧美中文字幕精品| 1024成人网色www| 久久精品99久久久| 在线亚洲人成电影网站色www| 亚洲图片一区二区| 福利一区福利二区| 7777精品伊人久久久大香线蕉 | 在线国产亚洲欧美| 久久亚洲二区三区| 亚洲国产aⅴ天堂久久| 国产成人久久精品77777最新版本|