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

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

?? sched.c

?? LINUX 0.11版內(nèi)核代碼。 并有代碼分析說(shuō)明。
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
	unsigned char mask = 0x10 << nr;	// 所選軟驅(qū)對(duì)應(yīng)數(shù)字輸出寄存器中啟動(dòng)馬達(dá)比特位。	if (nr > 3)		panic ("floppy_on: nr>3");	// 最多4 個(gè)軟驅(qū)。	moff_timer[nr] = 10000;	/* 100 s = very big :-) */	cli ();			/* use floppy_off to turn it off */	mask |= current_DOR;// 如果不是當(dāng)前軟驅(qū),則首先復(fù)位其它軟驅(qū)的選擇位,然后置對(duì)應(yīng)軟驅(qū)選擇位。	if (!selected)	{		mask &= 0xFC;		mask |= nr;	}// 如果數(shù)字輸出寄存器的當(dāng)前值與要求的值不同,則向FDC 數(shù)字輸出端口輸出新值(mask)。并且如果// 要求啟動(dòng)的馬達(dá)還沒(méi)有啟動(dòng),則置相應(yīng)軟驅(qū)的馬達(dá)啟動(dòng)定時(shí)器值(HZ/2 = 0.5 秒或50 個(gè)滴答)。// 此后更新當(dāng)前數(shù)字輸出寄存器值current_DOR。	if (mask != current_DOR)	{		outb (mask, FD_DOR);		if ((mask ^ current_DOR) & 0xf0)			mon_timer[nr] = HZ / 2;		else if (mon_timer[nr] < 2)			mon_timer[nr] = 2;		current_DOR = mask;	}	sti ();	return mon_timer[nr];}// 等待指定軟驅(qū)馬達(dá)啟動(dòng)所需時(shí)間。void floppy_on (unsigned int nr){	cli ();			// 關(guān)中斷。	while (ticks_to_floppy_on (nr))	// 如果馬達(dá)啟動(dòng)定時(shí)還沒(méi)到,就一直把當(dāng)前進(jìn)程置		sleep_on (nr + wait_motor);	// 為不可中斷睡眠狀態(tài)并放入等待馬達(dá)運(yùn)行的隊(duì)列中。	sti ();			// 開(kāi)中斷。}// 置關(guān)閉相應(yīng)軟驅(qū)馬達(dá)停轉(zhuǎn)定時(shí)器(3 秒)。void floppy_off (unsigned int nr){	moff_timer[nr] = 3 * HZ;}// 軟盤定時(shí)處理子程序。更新馬達(dá)啟動(dòng)定時(shí)值和馬達(dá)關(guān)閉停轉(zhuǎn)計(jì)時(shí)值。該子程序是在時(shí)鐘定時(shí)// 中斷中被調(diào)用,因此每一個(gè)滴答(10ms)被調(diào)用一次,更新馬達(dá)開(kāi)啟或停轉(zhuǎn)定時(shí)器的值。如果某// 一個(gè)馬達(dá)停轉(zhuǎn)定時(shí)到,則將數(shù)字輸出寄存器馬達(dá)啟動(dòng)位復(fù)位。void do_floppy_timer (void){	int i;	unsigned char mask = 0x10;	for (i = 0; i < 4; i++, mask <<= 1)	{		if (!(mask & current_DOR))	// 如果不是DOR 指定的馬達(dá)則跳過(guò)。			continue;		if (mon_timer[i])		{			if (!--mon_timer[i])				wake_up (i + wait_motor);	// 如果馬達(dá)啟動(dòng)定時(shí)到則喚醒進(jìn)程。		}		else if (!moff_timer[i])		{			// 如果馬達(dá)停轉(zhuǎn)定時(shí)到則			current_DOR &= ~mask;	// 復(fù)位相應(yīng)馬達(dá)啟動(dòng)位,并			outb (current_DOR, FD_DOR);	// 更新數(shù)字輸出寄存器。		}		else			moff_timer[i]--;	// 馬達(dá)停轉(zhuǎn)計(jì)時(shí)遞減。	}}#define TIME_REQUESTS 64	// 最多可有64 個(gè)定時(shí)器鏈表(64 個(gè)任務(wù))。// 定時(shí)器鏈表結(jié)構(gòu)和定時(shí)器數(shù)組。static struct timer_list{	long jiffies;			// 定時(shí)滴答數(shù)。	void (*fn) ();		// 定時(shí)處理程序。	struct timer_list *next;	// 下一個(gè)定時(shí)器。}timer_list[TIME_REQUESTS], *next_timer = NULL;// 添加定時(shí)器。輸入?yún)?shù)為指定的定時(shí)值(滴答數(shù))和相應(yīng)的處理程序指針。// jiffies – 以10 毫秒計(jì)的滴答數(shù);*fn()- 定時(shí)時(shí)間到時(shí)執(zhí)行的函數(shù)。void add_timer (long jiffies, void (*fn) ()){	struct timer_list *p;	// 如果定時(shí)處理程序指針為空,則退出。	if (!fn)		return;	cli ();	// 如果定時(shí)值<=0,則立刻調(diào)用其處理程序。并且該定時(shí)器不加入鏈表中。	if (jiffies <= 0)		(fn) ();	else	{		// 從定時(shí)器數(shù)組中,找一個(gè)空閑項(xiàng)。		for (p = timer_list; p < timer_list + TIME_REQUESTS; p++)			if (!p->fn)				break;		// 如果已經(jīng)用完了定時(shí)器數(shù)組,則系統(tǒng)崩潰?。		if (p >= timer_list + TIME_REQUESTS)			panic ("No more time requests free");		// 向定時(shí)器數(shù)據(jù)結(jié)構(gòu)填入相應(yīng)信息。并鏈入鏈表頭		p->fn = fn;		p->jiffies = jiffies;		p->next = next_timer;		next_timer = p;// 鏈表項(xiàng)按定時(shí)值從小到大排序。在排序時(shí)減去排在前面需要的滴答數(shù),這樣在處理定時(shí)器時(shí)只要// 查看鏈表頭的第一項(xiàng)的定時(shí)是否到期即可。[[?? 這段程序好象沒(méi)有考慮周全。如果新插入的定時(shí)// 器值 < 原來(lái)頭一個(gè)定時(shí)器值時(shí),也應(yīng)該將所有后面的定時(shí)值均減去新的第1 個(gè)的定時(shí)值。]]		while (p->next && p->next->jiffies < p->jiffies)		{			p->jiffies -= p->next->jiffies;			fn = p->fn;			p->fn = p->next->fn;			p->next->fn = fn;			jiffies = p->jiffies;			p->jiffies = p->next->jiffies;			p->next->jiffies = jiffies;			p = p->next;		}	}	sti ();}//// 時(shí)鐘中斷C 函數(shù)處理程序,在kernel/system_call.s 中的_timer_interrupt(176 行)被調(diào)用。// 參數(shù)cpl 是當(dāng)前特權(quán)級(jí)0 或3,0 表示內(nèi)核代碼在執(zhí)行。// 對(duì)于一個(gè)進(jìn)程由于執(zhí)行時(shí)間片用完時(shí),則進(jìn)行任務(wù)切換。并執(zhí)行一個(gè)計(jì)時(shí)更新工作。void do_timer (long cpl){	extern int beepcount;		// 揚(yáng)聲器發(fā)聲時(shí)間滴答數(shù)(kernel/chr_drv/console.c,697)	extern void sysbeepstop (void);	// 關(guān)閉揚(yáng)聲器(kernel/chr_drv/console.c,691)  // 如果發(fā)聲計(jì)數(shù)次數(shù)到,則關(guān)閉發(fā)聲。(向0x61 口發(fā)送命令,復(fù)位位0 和1。位0 控制8253  // 計(jì)數(shù)器2 的工作,位1 控制揚(yáng)聲器)。	if (beepcount)		if (!--beepcount)			sysbeepstop ();  // 如果當(dāng)前特權(quán)級(jí)(cpl)為0(最高,表示是內(nèi)核程序在工作),則將超級(jí)用戶運(yùn)行時(shí)間stime 遞增;  // 如果cpl > 0,則表示是一般用戶程序在工作,增加utime。	if (cpl)		current->utime++;	else		current->stime++;// 如果有用戶的定時(shí)器存在,則將鏈表第1 個(gè)定時(shí)器的值減1。如果已等于0,則調(diào)用相應(yīng)的處理// 程序,并將該處理程序指針置為空。然后去掉該項(xiàng)定時(shí)器。	if (next_timer)	{				// next_timer 是定時(shí)器鏈表的頭指針(見(jiàn)270 行)。		next_timer->jiffies--;		while (next_timer && next_timer->jiffies <= 0)		{			void (*fn) ();	// 這里插入了一個(gè)函數(shù)指針定義!!!??			fn = next_timer->fn;			next_timer->fn = NULL;			next_timer = next_timer->next;			(fn) ();		// 調(diào)用處理函數(shù)。		}	}// 如果當(dāng)前軟盤控制器FDC 的數(shù)字輸出寄存器中馬達(dá)啟動(dòng)位有置位的,則執(zhí)行軟盤定時(shí)程序(245 行)。	if (current_DOR & 0xf0)		do_floppy_timer ();	if ((--current->counter) > 0)		return;			// 如果進(jìn)程運(yùn)行時(shí)間還沒(méi)完,則退出。	current->counter = 0;	if (!cpl)		return;			// 對(duì)于超級(jí)用戶程序,不依賴counter 值進(jìn)行調(diào)度。	schedule ();}// 系統(tǒng)調(diào)用功能 - 設(shè)置報(bào)警定時(shí)時(shí)間值(秒)。// 如果已經(jīng)設(shè)置過(guò)alarm 值,則返回舊值,否則返回0。int sys_alarm (long seconds){	int old = current->alarm;	if (old)		old = (old - jiffies) / HZ;	current->alarm = (seconds > 0) ? (jiffies + HZ * seconds) : 0;	return (old);}// 取當(dāng)前進(jìn)程號(hào)pid。int sys_getpid (void){	return current->pid;}// 取父進(jìn)程號(hào)ppid。int sys_getppid (void){	return current->father;}// 取用戶號(hào)uid。int sys_getuid (void){	return current->uid;}// 取euid。int sys_geteuid (void){	return current->euid;}// 取組號(hào)gid。int sys_getgid (void){	return current->gid;}// 取egid。int sys_getegid (void){	return current->egid;}// 系統(tǒng)調(diào)用功能 -- 降低對(duì)CPU 的使用優(yōu)先權(quán)(有人會(huì)用嗎??)。// 應(yīng)該限制increment 大于0,否則的話,可使優(yōu)先權(quán)增大!!int sys_nice (long increment){	if (current->priority - increment > 0)		current->priority -= increment;	return 0;}// 調(diào)度程序的初始化子程序。void sched_init (void){	int i;	struct desc_struct *p;	// 描述符表結(jié)構(gòu)指針。	if (sizeof (struct sigaction) != 16)	// sigaction 是存放有關(guān)信號(hào)狀態(tài)的結(jié)構(gòu)。		panic ("Struct sigaction MUST be 16 bytes");// 設(shè)置初始任務(wù)(任務(wù)0)的任務(wù)狀態(tài)段描述符和局部數(shù)據(jù)表描述符(include/asm/system.h,65)。	set_tss_desc (gdt + FIRST_TSS_ENTRY, &(init_task.task.tss));	set_ldt_desc (gdt + FIRST_LDT_ENTRY, &(init_task.task.ldt));// 清任務(wù)數(shù)組和描述符表項(xiàng)(注意i=1 開(kāi)始,所以初始任務(wù)的描述符還在)。	p = gdt + 2 + FIRST_TSS_ENTRY;	for (i = 1; i < NR_TASKS; i++)	{		task[i] = NULL;		p->a = p->b = 0;		p++;		p->a = p->b = 0;		p++;	}/* 清除標(biāo)志寄存器中的位NT,這樣以后就不會(huì)有麻煩 */// NT 標(biāo)志用于控制程序的遞歸調(diào)用(Nested Task)。當(dāng)NT 置位時(shí),那么當(dāng)前中斷任務(wù)執(zhí)行// iret 指令時(shí)就會(huì)引起任務(wù)切換。NT 指出TSS 中的back_link 字段是否有效。//  __asm__ ("pushfl ; andl $0xffffbfff,(%esp) ; popfl");	// 復(fù)位NT 標(biāo)志。
	_asm pushfd; _asm and dword ptr ss:[esp],0xffffbfff; _asm popfd;	ltr (0);			// 將任務(wù)0 的TSS 加載到任務(wù)寄存器tr。	lldt (0);			// 將局部描述符表加載到局部描述符表寄存器。// 注意!!是將GDT 中相應(yīng)LDT 描述符的選擇符加載到ldtr。只明確加載這一次,以后新任務(wù)// LDT 的加載,是CPU 根據(jù)TSS 中的LDT 項(xiàng)自動(dòng)加載。// 下面代碼用于初始化8253 定時(shí)器。	outb_p (0x36, 0x43);		/* binary, mode 3, LSB/MSB, ch 0 */	outb_p (LATCH & 0xff, 0x40);	/* LSB */// 定時(shí)值低字節(jié)。	outb (LATCH >> 8, 0x40);	/* MSB */// 定時(shí)值高字節(jié)。  // 設(shè)置時(shí)鐘中斷處理程序句柄(設(shè)置時(shí)鐘中斷門)。	set_intr_gate (0x20, &timer_interrupt);  // 修改中斷控制器屏蔽碼,允許時(shí)鐘中斷。	outb (inb_p (0x21) & ~0x01, 0x21);  // 設(shè)置系統(tǒng)調(diào)用中斷門。	set_system_gate (0x80, &system_call);}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品入口麻豆88视频| 91丝袜美女网| 精品国一区二区三区| 久久不见久久见免费视频7| 日韩欧美在线1卡| 国产一二精品视频| 欧美极品美女视频| 91黄视频在线| 免费在线观看成人| 国产欧美日本一区视频| 成人黄色777网| 亚洲影视在线观看| 欧美日韩国产中文| 国产一区二区三区观看| 亚洲天堂中文字幕| 欧美一区二区三区小说| 国产大片一区二区| 亚洲在线观看免费视频| 日韩三级中文字幕| eeuss鲁片一区二区三区| 亚洲国产精品久久不卡毛片 | 日韩国产精品大片| 精品国产伦一区二区三区免费| 国产一区二区三区国产| 亚洲精品日日夜夜| 欧美成人aa大片| 94-欧美-setu| 麻豆91在线播放| 综合久久给合久久狠狠狠97色 | a亚洲天堂av| 日韩激情一二三区| 中文字幕日韩精品一区| 欧美一区二区视频在线观看2020| 成人小视频在线观看| 香蕉成人伊视频在线观看| 久久久三级国产网站| 欧美色欧美亚洲另类二区| 国产福利91精品| 日韩国产欧美在线播放| 国产精品视频在线看| 日韩一级二级三级| 色综合激情五月| 国产一二三精品| 丝袜亚洲另类欧美综合| 亚洲色图另类专区| 久久久久国产免费免费| 91福利国产成人精品照片| 国产成人午夜高潮毛片| 免费观看一级特黄欧美大片| 亚洲激情自拍偷拍| 日本一区二区视频在线| 精品久久久久久久人人人人传媒 | 成人黄色小视频在线观看| 蜜桃av一区二区| 亚洲午夜久久久久久久久久久| 久久久久久9999| 精品三级在线看| 欧美一区二区三区公司| 91久久精品日日躁夜夜躁欧美| 国产精品一区2区| 国内外成人在线| 麻豆国产欧美日韩综合精品二区| 亚洲激情男女视频| 中文字幕中文字幕中文字幕亚洲无线| 2024国产精品| 精品久久久三级丝袜| 日韩亚洲欧美中文三级| 宅男噜噜噜66一区二区66| 欧洲一区二区av| 91久久精品一区二区二区| 91亚洲精华国产精华精华液| 成人高清av在线| 成人h动漫精品一区二区| 国产成人精品免费网站| 国产综合色产在线精品| 韩国av一区二区三区在线观看| 久久精品国产第一区二区三区| 免费成人美女在线观看.| 美女脱光内衣内裤视频久久影院| 日本在线不卡视频一二三区| 日本成人在线不卡视频| 免费高清在线视频一区·| 热久久国产精品| 久久66热re国产| 国产一区二区三区香蕉| 国产麻豆一精品一av一免费| 国产精品亚洲一区二区三区妖精| 国产精品一区二区男女羞羞无遮挡 | 久久久久久亚洲综合影院红桃| 欧美色电影在线| 91超碰这里只有精品国产| 91精品国产91久久久久久最新毛片| 欧美一区二区三区人| 精品美女在线播放| 国产女人aaa级久久久级| 国产精品久久久久久久久动漫| ...xxx性欧美| 午夜av一区二区三区| 久久狠狠亚洲综合| 成人精品视频一区二区三区尤物| 91在线小视频| 欧美放荡的少妇| 久久亚洲二区三区| 亚洲视频免费观看| 秋霞成人午夜伦在线观看| 国产在线精品免费av| 99精品视频在线观看| 欧美日韩视频在线观看一区二区三区| 欧美一区中文字幕| 中文字幕二三区不卡| 亚洲国产人成综合网站| 国产在线播精品第三| 91在线视频观看| 欧美一级日韩免费不卡| 国产精品乱人伦中文| 日本一区中文字幕| 成人av资源在线观看| 3d成人动漫网站| 中文字幕永久在线不卡| 蜜臀久久久99精品久久久久久| 成人免费视频app| 91精品国产乱码| 综合激情成人伊人| 麻豆精品新av中文字幕| 色综合av在线| 国产网站一区二区三区| 亚洲成人免费视频| caoporn国产一区二区| 日韩欧美中文字幕制服| 亚洲精品日韩专区silk| 国产福利一区二区三区视频| 欧美二区在线观看| 亚洲乱码国产乱码精品精小说| 激情综合色综合久久综合| 欧洲av在线精品| 欧美国产97人人爽人人喊| 免费在线欧美视频| 色狠狠色狠狠综合| 久久九九久久九九| 日韩不卡一区二区三区| 91蝌蚪国产九色| 国产精品乱码人人做人人爱 | 制服丝袜激情欧洲亚洲| 亚洲女人小视频在线观看| 国产a区久久久| 亚洲精品一区二区三区香蕉 | 国内精品国产成人国产三级粉色| 欧洲精品中文字幕| 亚洲欧美日韩一区二区三区在线观看| 国产毛片精品国产一区二区三区| 日韩一级二级三级| 婷婷中文字幕一区三区| 91久久精品一区二区三区| 中文字幕一区av| 成人高清视频在线| 欧美国产日本视频| 国产91丝袜在线播放九色| 久久这里都是精品| 国产在线国偷精品免费看| 欧美高清你懂得| 日韩成人精品在线观看| 欧美丰满少妇xxxxx高潮对白 | 白白色亚洲国产精品| 久久午夜电影网| 国产精品一区二区无线| 欧美xfplay| 激情亚洲综合在线| 久久亚洲一区二区三区四区| 久久精品国产成人一区二区三区| 欧美一级片在线看| 久久国内精品自在自线400部| 日韩欧美成人激情| 国产呦精品一区二区三区网站| 久久久噜噜噜久久人人看| 国产成人高清在线| 国产精品嫩草影院com| 91偷拍与自偷拍精品| 亚洲资源在线观看| 91精品国产综合久久香蕉的特点| 蜜桃精品视频在线| 久久久国产午夜精品| 成人免费va视频| 亚洲精品自拍动漫在线| 欧美日韩久久久| 欧美aaaaa成人免费观看视频| 精品国产精品网麻豆系列| 国产高清在线精品| 亚洲私人黄色宅男| 欧美伦理影视网| 极品销魂美女一区二区三区| 国产精品丝袜在线| 欧美在线观看你懂的| 蜜桃精品视频在线| 国产精品美女久久久久久久网站| 91福利在线播放| 九九九精品视频| 日韩码欧中文字| 69堂成人精品免费视频| 国产精品1区2区3区在线观看| 亚洲美女屁股眼交3|