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

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

?? alloc.c

?? UNIX v6 源代碼
?? C
字號:
#/* */#include "../param.h"#include "../systm.h"#include "../filsys.h"#include "../conf.h"#include "../buf.h"#include "../inode.h"#include "../user.h"/* * iinit is called once (from main) * very early in initialization. * It reads the root's super block * and initializes the current date * from the last modified date. * * panic: iinit -- cannot read the super * block. Usually because of an IO error. */iinit(){	register *cp, *bp;	(*bdevsw[rootdev.d_major].d_open)(rootdev, 1);	bp = bread(rootdev, 1);	cp = getblk(NODEV);	if(u.u_error)		panic("iinit");	bcopy(bp->b_addr, cp->b_addr, 256);	brelse(bp);	mount[0].m_bufp = cp;	mount[0].m_dev = rootdev;	cp = cp->b_addr;	cp->s_flock = 0;	cp->s_ilock = 0;	cp->s_ronly = 0;	time[0] = cp->s_time[0];	time[1] = cp->s_time[1];}/* * alloc will obtain the next available * free disk block from the free list of * the specified device. * The super block has up to 100 remembered * free blocks; the last of these is read to * obtain 100 more . . . * * no space on dev x/y -- when * the free list is exhausted. */alloc(dev){	int bno;	register *bp, *ip, *fp;	fp = getfs(dev);	while(fp->s_flock)		sleep(&fp->s_flock, PINOD);	do {		if(fp->s_nfree <= 0)			goto nospace;		bno = fp->s_free[--fp->s_nfree];		if(bno == 0)			goto nospace;	} while (badblock(fp, bno, dev));	if(fp->s_nfree <= 0) {		fp->s_flock++;		bp = bread(dev, bno);		ip = bp->b_addr;		fp->s_nfree = *ip++;		bcopy(ip, fp->s_free, 100);		brelse(bp);		fp->s_flock = 0;		wakeup(&fp->s_flock);	}	bp = getblk(dev, bno);	clrbuf(bp);	fp->s_fmod = 1;	return(bp);nospace:	fp->s_nfree = 0;	prdev("no space", dev);	u.u_error = ENOSPC;	return(NULL);}/* * place the specified disk block * back on the free list of the * specified device. */free(dev, bno){	register *fp, *bp, *ip;	fp = getfs(dev);	fp->s_fmod = 1;	while(fp->s_flock)		sleep(&fp->s_flock, PINOD);	if (badblock(fp, bno, dev))		return;	if(fp->s_nfree <= 0) {		fp->s_nfree = 1;		fp->s_free[0] = 0;	}	if(fp->s_nfree >= 100) {		fp->s_flock++;		bp = getblk(dev, bno);		ip = bp->b_addr;		*ip++ = fp->s_nfree;		bcopy(fp->s_free, ip, 100);		fp->s_nfree = 0;		bwrite(bp);		fp->s_flock = 0;		wakeup(&fp->s_flock);	}	fp->s_free[fp->s_nfree++] = bno;	fp->s_fmod = 1;}/* * Check that a block number is in the * range between the I list and the size * of the device. * This is used mainly to check that a * garbage file system has not been mounted. * * bad block on dev x/y -- not in range */badblock(afp, abn, dev){	register struct filsys *fp;	register char *bn;	fp = afp;	bn = abn;	if (bn < fp->s_isize+2 || bn >= fp->s_fsize) {		prdev("bad block", dev);		return(1);	}	return(0);}/* * Allocate an unused I node * on the specified device. * Used with file creation. * The algorithm keeps up to * 100 spare I nodes in the * super block. When this runs out, * a linear search through the * I list is instituted to pick * up 100 more. */ialloc(dev){	register *fp, *bp, *ip;	int i, j, k, ino;	fp = getfs(dev);	while(fp->s_ilock)		sleep(&fp->s_ilock, PINOD);loop:	if(fp->s_ninode > 0) {		ino = fp->s_inode[--fp->s_ninode];		ip = iget(dev, ino);		if (ip==NULL)			return(NULL);		if(ip->i_mode == 0) {			for(bp = &ip->i_mode; bp < &ip->i_addr[8];)				*bp++ = 0;			fp->s_fmod = 1;			return(ip);		}		/*		 * Inode was allocated after all.		 * Look some more.		 */		iput(ip);		goto loop;	}	fp->s_ilock++;	ino = 0;	for(i=0; i<fp->s_isize; i++) {		bp = bread(dev, i+2);		ip = bp->b_addr;		for(j=0; j<256; j=+16) {			ino++;			if(ip[j] != 0)				continue;			for(k=0; k<NINODE; k++)			if(dev==inode[k].i_dev && ino==inode[k].i_number)				goto cont;			fp->s_inode[fp->s_ninode++] = ino;			if(fp->s_ninode >= 100)				break;		cont:;		}		brelse(bp);		if(fp->s_ninode >= 100)			break;	}	fp->s_ilock = 0;	wakeup(&fp->s_ilock);	if (fp->s_ninode > 0)		goto loop;	prdev("Out of inodes", dev);	u.u_error = ENOSPC;	return(NULL);}/* * Free the specified I node * on the specified device. * The algorithm stores up * to 100 I nodes in the super * block and throws away any more. */ifree(dev, ino){	register *fp;	fp = getfs(dev);	if(fp->s_ilock)		return;	if(fp->s_ninode >= 100)		return;	fp->s_inode[fp->s_ninode++] = ino;	fp->s_fmod = 1;}/* * getfs maps a device number into * a pointer to the incore super * block. * The algorithm is a linear * search through the mount table. * A consistency check of the * in core free-block and i-node * counts. * * bad count on dev x/y -- the count *	check failed. At this point, all *	the counts are zeroed which will *	almost certainly lead to "no space" *	diagnostic * panic: no fs -- the device is not mounted. *	this "cannot happen" */getfs(dev){	register struct mount *p;	register char *n1, *n2;	for(p = &mount[0]; p < &mount[NMOUNT]; p++)	if(p->m_bufp != NULL && p->m_dev == dev) {		p = p->m_bufp->b_addr;		n1 = p->s_nfree;		n2 = p->s_ninode;		if(n1 > 100 || n2 > 100) {			prdev("bad count", dev);			p->s_nfree = 0;			p->s_ninode = 0;		}		return(p);	}	panic("no fs");}/* * update is the internal name of * 'sync'. It goes through the disk * queues to initiate sandbagged IO; * goes through the I nodes to write * modified nodes; and it goes through * the mount table to initiate modified * super blocks. */update(){	register struct inode *ip;	register struct mount *mp;	register *bp;	if(updlock)		return;	updlock++;	for(mp = &mount[0]; mp < &mount[NMOUNT]; mp++)		if(mp->m_bufp != NULL) {			ip = mp->m_bufp->b_addr;			if(ip->s_fmod==0 || ip->s_ilock!=0 ||			   ip->s_flock!=0 || ip->s_ronly!=0)				continue;			bp = getblk(mp->m_dev, 1);			ip->s_fmod = 0;			ip->s_time[0] = time[0];			ip->s_time[1] = time[1];			bcopy(ip, bp->b_addr, 256);			bwrite(bp);		}	for(ip = &inode[0]; ip < &inode[NINODE]; ip++)		if((ip->i_flag&ILOCK) == 0) {			ip->i_flag =| ILOCK;			iupdat(ip, time);			prele(ip);		}	updlock = 0;	bflush(NODEV);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品国产a级| 日韩精品一卡二卡三卡四卡无卡| 五月婷婷综合在线| 精品少妇一区二区三区视频免付费| 亚洲国产视频一区| 欧美日本一区二区在线观看| 亚洲综合色噜噜狠狠| 欧美午夜免费电影| 国产精品国产成人国产三级| 成人国产在线观看| 亚洲黄网站在线观看| 欧美专区在线观看一区| 日韩中文字幕区一区有砖一区| 日韩精品一区二区三区视频在线观看 | 亚洲欧洲精品一区二区精品久久久 | 丝袜脚交一区二区| 成人爱爱电影网址| 亚洲日本中文字幕区| 欧美伊人精品成人久久综合97| 亚洲va欧美va天堂v国产综合| 欧美成人女星排名| 色呦呦国产精品| 美女脱光内衣内裤视频久久网站 | 欧美视频第二页| 国产一区二区三区四| 亚洲欧美激情小说另类| 精品福利av导航| 欧美亚洲禁片免费| 国产成人午夜高潮毛片| 一区2区3区在线看| 国产日产欧美一区二区三区| 日本黄色一区二区| www.99精品| 国产一区在线观看麻豆| 亚洲线精品一区二区三区八戒| 国产欧美视频一区二区| 欧美日韩中文字幕一区| 91麻豆免费在线观看| 国产精品91一区二区| 日韩主播视频在线| 亚洲国产精品成人综合| 欧美不卡123| 欧美成人在线直播| 日韩视频一区二区三区在线播放| 欧美三级中文字幕| 欧美精品日韩一本| 欧美日韩激情在线| 欧美视频一区二区三区| 欧美美女喷水视频| 欧美一区二区三区视频在线观看| 色老综合老女人久久久| 在线看日韩精品电影| 欧美日韩免费一区二区三区视频| 色狠狠一区二区| 欧美中文字幕亚洲一区二区va在线| www.久久精品| 在线影院国内精品| 7878成人国产在线观看| 欧美成人一区二区| 国产欧美日韩在线看| 国产精品久久久久一区二区三区共| 中文字幕一区二区三区av| 中文字幕五月欧美| 婷婷开心激情综合| 精油按摩中文字幕久久| 国产精品一区一区三区| 色综合av在线| 精品乱码亚洲一区二区不卡| 久久久91精品国产一区二区精品 | 麻豆国产欧美日韩综合精品二区 | 日韩精品一级中文字幕精品视频免费观看 | 国产在线麻豆精品观看| 成人av午夜影院| 欧美日韩激情在线| 亚洲欧美日韩国产手机在线 | 337p粉嫩大胆噜噜噜噜噜91av| 中文乱码免费一区二区| 免费高清成人在线| av一本久道久久综合久久鬼色| 欧美精品亚洲二区| 亚洲天堂网中文字| 国产麻豆精品在线观看| 这里只有精品99re| 亚洲高清在线视频| 在线观看成人免费视频| 中文字幕第一区第二区| 国产麻豆成人传媒免费观看| 91精品免费观看| 午夜国产不卡在线观看视频| 99久久精品国产一区二区三区| 久久久久久9999| 九九久久精品视频| 久久综合九色综合97婷婷| 男女视频一区二区| 日韩欧美的一区| 蜜臀va亚洲va欧美va天堂| 欧美日韩日日夜夜| 日本欧美一区二区在线观看| 欧美私人免费视频| 亚洲国产一区视频| 91精品综合久久久久久| 天天做天天摸天天爽国产一区| 欧美日韩mp4| 久久精品国产久精国产| 中文一区在线播放| 91麻豆国产自产在线观看| 亚洲一区二区三区中文字幕在线| 色婷婷亚洲一区二区三区| 亚洲一线二线三线视频| 日韩欧美精品三级| 国产传媒久久文化传媒| 亚洲精品美腿丝袜| 精品福利视频一区二区三区| 成人av电影在线| 亚洲电影一区二区三区| 亚洲精品一线二线三线| 国产综合色在线| 国产欧美久久久精品影院| 在线观看国产一区二区| 久久精品国产亚洲a| 亚洲精品乱码久久久久久日本蜜臀| 欧美日高清视频| 懂色一区二区三区免费观看| 视频一区中文字幕| 最新中文字幕一区二区三区| 欧美一级艳片视频免费观看| 99精品偷自拍| 国产精品一区不卡| 久久99最新地址| 亚洲午夜日本在线观看| 日韩一区在线播放| 精品国产伦一区二区三区观看方式| 91免费在线播放| 成人av免费在线播放| 国产精品正在播放| 伦理电影国产精品| 日本成人在线视频网站| 丝袜诱惑制服诱惑色一区在线观看 | 欧美日韩电影一区| 欧美性猛交xxxxxx富婆| 91在线云播放| 91丨九色porny丨蝌蚪| kk眼镜猥琐国模调教系列一区二区 | 精品一区二区三区av| 免费人成网站在线观看欧美高清| 亚洲自拍偷拍麻豆| 亚洲国产视频直播| 亚洲福利电影网| 免费看日韩a级影片| 免费成人美女在线观看.| 九色综合狠狠综合久久| 国产精品一区二区黑丝| av电影一区二区| 欧美日韩一区久久| 欧美一区二区三区性视频| 欧美成人精品高清在线播放| 久久精品亚洲麻豆av一区二区| 国产目拍亚洲精品99久久精品| 国产精品久久久一区麻豆最新章节| 国产欧美精品区一区二区三区| 国产女人aaa级久久久级 | 天堂一区二区在线| 国模大尺度一区二区三区| 91麻豆免费观看| 日韩精品一区国产麻豆| 国产精品女同一区二区三区| 中文字幕日韩av资源站| 天堂在线亚洲视频| aaa国产一区| 日韩欧美一区电影| 国产一区二区精品久久99| 欧美性欧美巨大黑白大战| 欧美激情在线一区二区| 亚洲乱码精品一二三四区日韩在线| 日韩精品乱码av一区二区| 国产成人av一区二区三区在线| 欧美日本乱大交xxxxx| 中文字幕在线观看不卡| 国产一区在线不卡| 777欧美精品| 一个色妞综合视频在线观看| 国产精品资源在线观看| 日韩欧美一二三区| 亚洲高清免费视频| 在线国产电影不卡| 亚洲综合清纯丝袜自拍| 一本久久a久久精品亚洲| 欧美极品少妇xxxxⅹ高跟鞋| 精品一区二区三区免费观看| 精品久久久网站| 狠狠色丁香久久婷婷综合丁香| 精品国产乱码久久久久久闺蜜| 亚洲美女屁股眼交| 91免费观看视频在线| 中文字幕av不卡| 色www精品视频在线观看| 亚洲精品日韩一| 在线成人免费视频| 免费成人av在线| wwwwww.欧美系列|