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

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

?? signal.c

?? 帶中文注釋的linux 0.11源碼 很好
?? C
字號:
/** linux/kernel/signal.c** (C) 1991 Linus Torvalds*/#include <linux/sched.h>	// 調度程序頭文件,定義了任務結構task_struct、初始任務0 的數據,// 還有一些有關描述符參數設置和獲取的嵌入式匯編函數宏語句。#include <linux/kernel.h>	// 內核頭文件。含有一些內核常用函數的原形定義。#include <asm/segment.h>	// 段操作頭文件。定義了有關段寄存器操作的嵌入式匯編函數。#include <signal.h>		// 信號頭文件。定義信號符號常量,信號結構以及信號操作函數原型。volatile void do_exit (int error_code);	// 前面的限定符volatile 要求編譯器不要對其進行優化。// 獲取當前任務信號屏蔽位圖(屏蔽碼)。intsys_sgetmask (){  return current->blocked;}// 設置新的信號屏蔽位圖。SIGKILL 不能被屏蔽。返回值是原信號屏蔽位圖。intsys_ssetmask (int newmask){  int old = current->blocked;  current->blocked = newmask & ~(1 << (SIGKILL - 1));  return old;}// 復制sigaction 數據到fs 數據段to 處。。static inline voidsave_old (char *from, char *to){  int i;  verify_area (to, sizeof (struct sigaction));	// 驗證to 處的內存是否足夠。  for (i = 0; i < sizeof (struct sigaction); i++)    {      put_fs_byte (*from, to);	// 復制到fs 段。一般是用戶數據段。      from++;			// put_fs_byte()在include/asm/segment.h 中。      to++;    }}// 把sigaction 數據從fs 數據段from 位置復制到to 處。static inline voidget_new (char *from, char *to){  int i;  for (i = 0; i < sizeof (struct sigaction); i++)    *(to++) = get_fs_byte (from++);}// signal()系統調用。類似于sigaction()。為指定的信號安裝新的信號句柄(信號處理程序)。// 信號句柄可以是用戶指定的函數,也可以是SIG_DFL(默認句柄)或SIG_IGN(忽略)。// 參數signum --指定的信號;handler -- 指定的句柄;restorer –原程序當前執行的地址位置。// 函數返回原信號句柄。intsys_signal (int signum, long handler, long restorer){  struct sigaction tmp;  if (signum < 1 || signum > 32 || signum == SIGKILL)	// 信號值要在(1-32)范圍內,    return -1;			// 并且不得是SIGKILL。  tmp.sa_handler = (void (*)(int)) handler;	// 指定的信號處理句柄。  tmp.sa_mask = 0;		// 執行時的信號屏蔽碼。  tmp.sa_flags = SA_ONESHOT | SA_NOMASK;	// 該句柄只使用1 次后就恢復到默認值,// 并允許信號在自己的處理句柄中收到。  tmp.sa_restorer = (void (*)(void)) restorer;	// 保存返回地址。  handler = (long) current->sigaction[signum - 1].sa_handler;  current->sigaction[signum - 1] = tmp;  return handler;}// sigaction()系統調用。改變進程在收到一個信號時的操作。signum 是除了SIGKILL 以外的任何// 信號。[如果新操作(action)不為空]則新操作被安裝。如果oldaction 指針不為空,則原操作// 被保留到oldaction。成功則返回0,否則為-1。intsys_sigaction (int signum, const struct sigaction *action,	       struct sigaction *oldaction){  struct sigaction tmp;// 信號值要在(1-32)范圍內,并且信號SIGKILL 的處理句柄不能被改變。  if (signum < 1 || signum > 32 || signum == SIGKILL)    return -1;// 在信號的sigaction 結構中設置新的操作(動作)。  tmp = current->sigaction[signum - 1];  get_new ((char *) action, (char *) (signum - 1 + current->sigaction));// 如果oldaction 指針不為空的話,則將原操作指針保存到oldaction 所指的位置。  if (oldaction)    save_old ((char *) &tmp, (char *) oldaction);// 如果允許信號在自己的信號句柄中收到,則令屏蔽碼為0,否則設置屏蔽本信號。  if (current->sigaction[signum - 1].sa_flags & SA_NOMASK)    current->sigaction[signum - 1].sa_mask = 0;  else    current->sigaction[signum - 1].sa_mask |= (1 << (signum - 1));  return 0;}// 系統調用中斷處理程序中真正的信號處理程序(在kernel/system_call.s,119 行)。// 該段代碼的主要作用是將信號的處理句柄插入到用戶程序堆棧中,并在本系統調用結束// 返回后立刻執行信號句柄程序,然后繼續執行用戶的程序。voiddo_signal (long signr, long eax, long ebx, long ecx, long edx,	   long fs, long es, long ds,	   long eip, long cs, long eflags, unsigned long *esp, long ss){  unsigned long sa_handler;  long old_eip = eip;  struct sigaction *sa = current->sigaction + signr - 1;	//current->sigaction[signu-1]。  int longs;  unsigned long *tmp_esp;  sa_handler = (unsigned long) sa->sa_handler;// 如果信號句柄為SIG_IGN(忽略),則返回;如果句柄為SIG_DFL(默認處理),則如果信號是// SIGCHLD 則返回,否則終止進程的執行  if (sa_handler == 1)    return;  if (!sa_handler)    {      if (signr == SIGCHLD)	return;      else	do_exit (1 << (signr - 1));	// [?? 為什么以信號位圖為參數?不為什么!??]// 這里應該是do_exit(1<<signr))。    }// 如果該信號句柄只需使用一次,則將該句柄置空(該信號句柄已經保存在sa_handler 指針中)。  if (sa->sa_flags & SA_ONESHOT)    sa->sa_handler = NULL;// 下面這段代碼將信號處理句柄插入到用戶堆棧中,同時也將sa_restorer,signr,進程屏蔽碼(如果// SA_NOMASK 沒置位),eax,ecx,edx 作為參數以及原調用系統調用的程序返回指針及標志寄存器值// 壓入堆棧。因此在本次系統調用中斷(0x80)返回用戶程序時會首先執行用戶的信號句柄程序,然后// 再繼續執行用戶程序。// 將用戶調用系統調用的代碼指針eip 指向該信號處理句柄。  *(&eip) = sa_handler;// 如果允許信號自己的處理句柄收到信號自己,則也需要將進程的阻塞碼壓入堆棧。  longs = (sa->sa_flags & SA_NOMASK) ? 7 : 8;// 將原調用程序的用戶的堆棧指針向下擴展7(或8)個長字(用來存放調用信號句柄的參數等),// 并檢查內存使用情況(例如如果內存超界則分配新頁等)。  *(&esp) -= longs;  verify_area (esp, longs * 4);// 在用戶堆棧中從下到上存放sa_restorer, 信號signr, 屏蔽碼blocked(如果SA_NOMASK 置位),// eax, ecx, edx, eflags 和用戶程序原代碼指針。  tmp_esp = esp;  put_fs_long ((long) sa->sa_restorer, tmp_esp++);  put_fs_long (signr, tmp_esp++);  if (!(sa->sa_flags & SA_NOMASK))    put_fs_long (current->blocked, tmp_esp++);  put_fs_long (eax, tmp_esp++);  put_fs_long (ecx, tmp_esp++);  put_fs_long (edx, tmp_esp++);  put_fs_long (eflags, tmp_esp++);  put_fs_long (old_eip, tmp_esp++);  current->blocked |= sa->sa_mask;	// 進程阻塞碼(屏蔽碼)添上sa_mask 中的碼位。}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜臀久久99精品久久久画质超高清 | 久久夜色精品一区| 一本一道久久a久久精品| 国产综合色精品一区二区三区| 亚洲高清在线精品| 亚洲国产精品久久不卡毛片| 亚洲精品日韩一| 亚洲综合视频网| 亚洲国产中文字幕在线视频综合| 亚洲精品乱码久久久久久久久 | 亚洲自拍偷拍av| 亚洲综合免费观看高清完整版在线 | 91福利精品视频| 欧美在线观看你懂的| 欧美乱妇23p| 日韩美女视频在线| 久久久久久久久岛国免费| 国产欧美日韩中文久久| 中文字幕一区二区在线播放| 亚洲一区二区在线观看视频| 日韩黄色免费网站| 国产精品一区二区无线| 99精品欧美一区| 欧美午夜不卡在线观看免费| 日韩欧美一区二区在线视频| 久久久国产综合精品女国产盗摄| 国产精品美女久久久久高潮| 亚洲最色的网站| 精品一区二区在线视频| a级高清视频欧美日韩| 欧美性大战久久久久久久 | 日韩三级精品电影久久久| 欧美精品一区二区在线播放| ...av二区三区久久精品| 亚洲在线中文字幕| 激情偷乱视频一区二区三区| av资源网一区| 日韩欧美综合在线| 亚洲人成精品久久久久久| 日本网站在线观看一区二区三区| 国产999精品久久| 欧美女孩性生活视频| 国产日本亚洲高清| 香港成人在线视频| 成人黄色777网| 日韩一卡二卡三卡四卡| 亚洲色图视频免费播放| 国产一区二区中文字幕| 欧美四级电影网| 欧美精品乱码久久久久久| 国产精品女主播在线观看| 日韩有码一区二区三区| 日本道色综合久久| 国产偷国产偷亚洲高清人白洁 | 日韩av电影天堂| 91丨九色丨国产丨porny| 久久蜜桃av一区二区天堂 | 国产伦精一区二区三区| 欧美日韩精品免费| 视频在线在亚洲| 国产美女在线观看一区| 在线电影一区二区三区| 一区二区三区毛片| 色综合夜色一区| 国产精品九色蝌蚪自拍| 国产成人啪午夜精品网站男同| 欧美一级在线免费| 亚洲线精品一区二区三区| 免费成人av在线播放| 欧美日韩免费在线视频| 亚洲在线一区二区三区| 色婷婷亚洲婷婷| 亚洲欧洲综合另类| a亚洲天堂av| ...xxx性欧美| 91福利区一区二区三区| 亚洲精品欧美二区三区中文字幕| 99视频热这里只有精品免费| 国产色综合久久| 亚洲一二三专区| 欧美网站一区二区| 亚洲一区二区欧美日韩| 欧美日韩三级一区二区| 免费观看在线综合色| 欧美一卡二卡在线| 美女视频黄 久久| 日本道在线观看一区二区| 亚洲与欧洲av电影| 在线电影国产精品| 极品少妇xxxx精品少妇| 国产色产综合色产在线视频| 99在线精品视频| 亚洲国产三级在线| 精品人伦一区二区色婷婷| 国产一区二区三区在线观看免费 | 97精品超碰一区二区三区| 中国av一区二区三区| 99在线精品观看| 性欧美疯狂xxxxbbbb| 精品日韩欧美一区二区| av网站一区二区三区| 亚洲视频小说图片| 欧美一区二区三区爱爱| 国产一区二区三区黄视频 | 91成人在线精品| 视频一区视频二区中文| 欧美成人午夜电影| av在线一区二区三区| 日韩精品欧美精品| 日本一区二区三区免费乱视频| 色综合久久久久网| 精品一区二区三区的国产在线播放 | 日本午夜精品一区二区三区电影 | 在线观看免费成人| 激情伊人五月天久久综合| 一区在线观看免费| 日韩一区二区三区免费看| caoporm超碰国产精品| 五月婷婷久久丁香| 国产精品国产三级国产普通话99| 欧美美女网站色| 成人免费视频免费观看| 青青草91视频| 亚洲专区一二三| 国产清纯在线一区二区www| 欧美老肥妇做.爰bbww| 成人精品一区二区三区四区| 日韩成人免费在线| 亚洲与欧洲av电影| 亚洲三级电影网站| 久久精品亚洲精品国产欧美kt∨| 欧美巨大另类极品videosbest | 狠狠色丁香婷婷综合| 亚洲国产成人av网| 18欧美乱大交hd1984| 欧美成人女星排名| 欧美欧美欧美欧美| 欧美三级资源在线| 日本乱码高清不卡字幕| 成人高清免费观看| 国产成人av资源| 国产在线精品一区二区不卡了 | 亚洲狠狠丁香婷婷综合久久久| 26uuu国产在线精品一区二区| 欧美年轻男男videosbes| 欧美视频中文字幕| 在线观看视频一区二区| 色狠狠桃花综合| 91色视频在线| 99久久精品国产一区二区三区| 国产黄色成人av| 国产高清精品在线| 国产大片一区二区| 国产99久久久国产精品免费看| 国产精品一区免费在线观看| 精东粉嫩av免费一区二区三区| 美女脱光内衣内裤视频久久网站 | 91视频免费播放| 99国产精品国产精品久久| 94-欧美-setu| 91福利在线导航| 欧美日韩激情一区二区| 6080午夜不卡| 精品国产亚洲在线| 欧美经典一区二区三区| 国产精品三级av| 亚洲精品国产精华液| 亚洲国产成人va在线观看天堂| 日本一不卡视频| 国产一区二区影院| 91丨九色丨国产丨porny| 欧美三级中文字幕| 欧美成人r级一区二区三区| 久久久不卡网国产精品一区| 国产精品午夜在线| 亚洲午夜日本在线观看| 喷白浆一区二区| 成人一级视频在线观看| 一本到不卡精品视频在线观看| 欧美日韩精品是欧美日韩精品| 欧美一二三区在线| 国产视频一区二区在线观看| 亚洲永久精品大片| 经典一区二区三区| 色呦呦国产精品| 日韩一区二区在线观看视频| 中文一区在线播放| 亚洲丶国产丶欧美一区二区三区| 裸体一区二区三区| 99国产精品久久久久久久久久久 | 国产一区二区三区观看| 99久久免费视频.com| 91 com成人网| 中文字幕国产精品一区二区| 亚洲午夜久久久久久久久电影院 | 成人教育av在线| 日韩一级大片在线观看| 中文字幕一区二区三区乱码在线| 日韩二区三区四区| 不卡影院免费观看|